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

* feat: allow users to select notification types * fix(ui): display personal notification types before management types * fix: update allRequestsAutoApproved check to account for new REQUEST_MOVIE & REQUEST_TV perms * fix(ui): do not display Discord notif type selector if user not eligible for any types * refactor(ui): remove unnecessary 'enabled' checkboxes from user notif settings * fix(ui): correct checkbox behavior * fix: add missing return type on hasNotificationType * refactor: remove unused isValid prop in NotificationsWebPush * fix(ui): use SensitiveInput for users' public PGP keys * fix(ui): add missing tip/hint for email encryption setting * refactor(svg): use the new Discord logo * revert(api): undo breaking change removing discordEnabled from UserSettingsNotificationsResponse * fix(lang): update notification type descriptions for clarity * fix(telegram): do not send users notifications of their own auto-approved requests
30 lines
800 B
TypeScript
30 lines
800 B
TypeScript
import { Notification } from '..';
|
|
import Media from '../../../entity/Media';
|
|
import { MediaRequest } from '../../../entity/MediaRequest';
|
|
import { User } from '../../../entity/User';
|
|
import { NotificationAgentConfig } from '../../settings';
|
|
|
|
export interface NotificationPayload {
|
|
subject: string;
|
|
notifyUser?: User;
|
|
media?: Media;
|
|
image?: string;
|
|
message?: string;
|
|
extra?: { name: string; value: string }[];
|
|
request?: MediaRequest;
|
|
}
|
|
|
|
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>;
|
|
}
|