41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
/**
|
|
* Value Object: NotificationChannel
|
|
*
|
|
* Defines the delivery channels for notifications.
|
|
*/
|
|
|
|
export type NotificationChannel =
|
|
| 'in_app' // In-app notification (stored in database, shown in UI)
|
|
| 'email' // Email notification
|
|
| 'discord' // Discord webhook notification
|
|
| 'push'; // Push notification (future: mobile/browser)
|
|
|
|
/**
|
|
* Get human-readable name for channel
|
|
*/
|
|
export function getChannelDisplayName(channel: NotificationChannel): string {
|
|
const names: Record<NotificationChannel, string> = {
|
|
in_app: 'In-App',
|
|
email: 'Email',
|
|
discord: 'Discord',
|
|
push: 'Push Notification',
|
|
};
|
|
return names[channel];
|
|
}
|
|
|
|
/**
|
|
* Check if channel requires external integration
|
|
*/
|
|
export function isExternalChannel(channel: NotificationChannel): boolean {
|
|
return channel !== 'in_app';
|
|
}
|
|
|
|
/**
|
|
* Default channels that are always enabled
|
|
*/
|
|
export const DEFAULT_ENABLED_CHANNELS: NotificationChannel[] = ['in_app'];
|
|
|
|
/**
|
|
* All available channels
|
|
*/
|
|
export const ALL_CHANNELS: NotificationChannel[] = ['in_app', 'email', 'discord', 'push']; |