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
 | |
|   }
 | |
| 
 | |
| }
 |