Files
Desktop/ts/types/notifications.std.ts
2025-12-03 10:24:24 -08:00

51 lines
1.2 KiB
TypeScript

// Copyright 2025 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import z from 'zod';
export enum NotificationType {
IncomingCall = 'IncomingCall',
IncomingGroupCall = 'IncomingGroupCall',
IsPresenting = 'IsPresenting',
Message = 'Message',
Reaction = 'Reaction',
MinimizedToTray = 'MinimizedToTray',
}
export const WindowsNotificationDataSchema = z.object({
avatarPath: z.string().optional(),
body: z.string(),
heading: z.string(),
token: z.string(),
type: z.nativeEnum(NotificationType),
});
export type WindowsNotificationData = z.infer<
typeof WindowsNotificationDataSchema
>;
export const WindowsNotificationWorkerDataSchema = z.object({
AUMID: z.string(),
});
export type WindowsNotificationWorkerDataType = z.infer<
typeof WindowsNotificationWorkerDataSchema
>;
export const WindowsNotificationRequestSchema = z.union([
z.object({
command: z.literal('show'),
notificationData: WindowsNotificationDataSchema,
}),
z.object({
command: z.literal('clearAll'),
}),
z.object({
command: z.literal('sendDummyKeystroke'),
}),
]);
export type WindowsNotificationRequestType = z.infer<
typeof WindowsNotificationRequestSchema
>;