aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/lib/notifier/shared/common/abstract-notification.ts
blob: 53e2e02d536da68e39d676778c4932c76d0ee500 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
  }

}