mirror of
https://github.com/sct/overseerr.git
synced 2025-09-17 17:24:35 +02:00

* feat(notif): issue notifications * refactor: dedupe test notification strings * fix: webhook key parsing * fix(notif): skip send for admin who requested on behalf of another user * fix(notif): send comment notifs to admins when other admins reply * fix(notif): also send resolved notifs to admins, and reopened notifs to issue creator * fix: don't send duplicate notifications * fix(lang): tweak notification description strings * fix(notif): tweak Slack notification styling * fix(notif): tweak Pushbullet & Telegram notification styling * docs: reformat webhooks page * fix(notif): add missing issue_type & issue_status variables to LunaSea notif payloads * fix: explicitly attach media & issue objects where applicable * fix(notif): correctly notify both notifyUser and managers where applicable * fix: update default webhook payload for new installs * fix(notif): add missing comment_message to LunaSea notif payload * refactor(sw): simplify notificationclick event listener logic * fix(notif): add missing event description for MEDIA_AVAILABLE notifications
36 lines
990 B
TypeScript
36 lines
990 B
TypeScript
import { Notification } from '..';
|
|
import type Issue from '../../../entity/Issue';
|
|
import IssueComment from '../../../entity/IssueComment';
|
|
import Media from '../../../entity/Media';
|
|
import { MediaRequest } from '../../../entity/MediaRequest';
|
|
import { User } from '../../../entity/User';
|
|
import { NotificationAgentConfig } from '../../settings';
|
|
|
|
export interface NotificationPayload {
|
|
event?: string;
|
|
subject: string;
|
|
notifyAdmin: boolean;
|
|
notifyUser?: User;
|
|
media?: Media;
|
|
image?: string;
|
|
message?: string;
|
|
extra?: { name: string; value: string }[];
|
|
request?: MediaRequest;
|
|
issue?: Issue;
|
|
comment?: IssueComment;
|
|
}
|
|
|
|
export abstract class BaseAgent<T extends NotificationAgentConfig> {
|
|
protected settings?: T;
|
|
public constructor(settings?: T) {
|
|
this.settings = settings;
|
|
}
|
|
|
|
protected abstract getSettings(): T;
|
|
}
|
|
|
|
export interface NotificationAgent {
|
|
shouldSend(): boolean;
|
|
send(type: Notification, payload: NotificationPayload): Promise<boolean>;
|
|
}
|