add guest subscribe push notification

This commit is contained in:
2024-12-02 08:50:25 +02:00
parent 2ae13f6ec4
commit 1231dc26ce
20 changed files with 742 additions and 49 deletions
@@ -0,0 +1,31 @@
import { type BaseDocument } from "./BaseDocument";
import { MessageDocument } from "./MessageDocument";
/**
* Интерфейс для документа настройки чата.
* Используется для хранения настроек чата пользователя.
*/
export interface UserChatSettingsDocument extends BaseDocument {
/** Тип документа, всегда 'message' */
type: "user_chat_settings";
/** Идентификатор QR‑кода, к которому относится сообщение */
qr_code_uri: string;
/** Идентификатор чата для связывания сообщений */
chat: string;
user_chat_role: MessageDocument["from"];
/** Идентификатор пользователя, отправившего сообщение */
user_uuid: string;
/** Идентификатор браузера, отправившего сообщение */
browser_uuid: string;
/** Включены ли push-уведомления */
is_push_notification_enabled: boolean;
/** Дата последнего обновления */
updated_at?: string;
}
@@ -1,12 +1,14 @@
import type { BaseDocument } from "./BaseDocument";
import type { PushSubscription } from "web-push";
export interface WebPushSubscriptionDocument extends BaseDocument {
export interface WebPushSubscriptionDocument<
Subscription extends PushSubscription | PushSubscriptionJSON,
> extends BaseDocument {
_id: string; // Формат: "web_push_subscription:<user_uuid>:<browser_uuid>"
type: "web_push_subscription";
user_uuid: string; // UUID пользователя, связанного с подпиской
browser_uuid: string; // UUID браузера, связанного с подпиской
subscription: PushSubscription;
subscription: Subscription;
created_at: string; // Дата создания подписки в ISO формате
updated_at?: string; // Дата последнего обновления подписки
}
+1
View File
@@ -4,4 +4,5 @@ export * from "./PublicSettingsDocument";
export * from "./QRCodeDocument";
export * from "./ServerSettingsDocument";
export * from "./UserDocument";
export * from "./UserChatSettingsDocument";
export * from "./WebPushSubscriptionDocument";