mirror of https://github.com/Chocobozzz/PeerTube
24 lines
694 B
TypeScript
24 lines
694 B
TypeScript
|
import { MUserWithNotificationSetting, UserNotificationModelForApi } from '@server/types/models'
|
||
|
import { EmailPayload, UserNotificationSettingValue } from '@shared/models'
|
||
|
|
||
|
export abstract class AbstractNotification <T, U = MUserWithNotificationSetting> {
|
||
|
|
||
|
constructor (protected readonly payload: T) {
|
||
|
|
||
|
}
|
||
|
|
||
|
abstract prepare (): Promise<void>
|
||
|
abstract log (): void
|
||
|
|
||
|
abstract getSetting (user: U): UserNotificationSettingValue
|
||
|
abstract getTargetUsers (): U[]
|
||
|
|
||
|
abstract createNotification (user: U): Promise<UserNotificationModelForApi>
|
||
|
abstract createEmail (to: string): EmailPayload | Promise<EmailPayload>
|
||
|
|
||
|
isDisabled (): boolean | Promise<boolean> {
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
}
|