From 51a7f8f35410216c283b85f58d86183c28b2ef25 Mon Sep 17 00:00:00 2001 From: Vasilii Mikhailovskii Date: Fri, 6 Dec 2024 23:50:51 +0200 Subject: [PATCH] chats --- apps/frontend/components.d.ts | 1 + apps/frontend/src/api/dbs.ts | 1 + apps/frontend/src/components/ChatCard.vue | 44 +++++++++++++++++ .../frontend/src/components/ChatComponent.vue | 47 +++++++++++++++---- .../src/components/read/ReadMessageSender.vue | 11 ++++- .../src/views/manage/ManageChatsView.vue | 24 ++++++++-- .../types/src/DBDocuments/ChatDocument.ts | 12 +++++ 7 files changed, 124 insertions(+), 16 deletions(-) create mode 100644 apps/frontend/src/components/ChatCard.vue diff --git a/apps/frontend/components.d.ts b/apps/frontend/components.d.ts index 150b5a3..fe106f9 100644 --- a/apps/frontend/components.d.ts +++ b/apps/frontend/components.d.ts @@ -9,6 +9,7 @@ declare module 'vue' { export interface GlobalComponents { Button: typeof import('primevue/button')['default'] Card: typeof import('primevue/card')['default'] + ChatCard: typeof import('./src/components/ChatCard.vue')['default'] ChatComponent: typeof import('./src/components/ChatComponent.vue')['default'] ChatSubscribeWebPush: typeof import('./src/components/ChatSubscribeWebPush.vue')['default'] Checkbox: typeof import('primevue/checkbox')['default'] diff --git a/apps/frontend/src/api/dbs.ts b/apps/frontend/src/api/dbs.ts index e4e9ebb..335b86d 100644 --- a/apps/frontend/src/api/dbs.ts +++ b/apps/frontend/src/api/dbs.ts @@ -19,6 +19,7 @@ export const getLocalDb = (dbName: DB_NAMES) => new Pouc export const qrCodeDbRemote = getRemoteDb(DB_NAMES.QR) export const qrCodeDbLocal = getLocalDb(DB_NAMES.QR) export const messagesDbLocal = getLocalDb(DB_NAMES.MESSAGES) +export const chatsDbLocal = getLocalDb(DB_NAMES.CHATS) export const chatsDbRemote = getRemoteDb(DB_NAMES.CHATS) export const webPushSubscriptionsDbRemote = getRemoteDb< WebPushSubscriptionDocument diff --git a/apps/frontend/src/components/ChatCard.vue b/apps/frontend/src/components/ChatCard.vue new file mode 100644 index 0000000..0e9c140 --- /dev/null +++ b/apps/frontend/src/components/ChatCard.vue @@ -0,0 +1,44 @@ + + + diff --git a/apps/frontend/src/components/ChatComponent.vue b/apps/frontend/src/components/ChatComponent.vue index abe01f9..f9faa27 100644 --- a/apps/frontend/src/components/ChatComponent.vue +++ b/apps/frontend/src/components/ChatComponent.vue @@ -52,8 +52,13 @@ diff --git a/packages/types/src/DBDocuments/ChatDocument.ts b/packages/types/src/DBDocuments/ChatDocument.ts index 96026fd..a5b8a97 100644 --- a/packages/types/src/DBDocuments/ChatDocument.ts +++ b/packages/types/src/DBDocuments/ChatDocument.ts @@ -6,6 +6,9 @@ import type { Role } from "./Role"; * Используется для хранения чатов, отправленных через QR‑код. */ export interface ChatDocument extends BaseDocument { + /** Идентификатор документа */ + _id: string; + /** Тип документа, всегда 'chat' */ type: "chat"; @@ -20,4 +23,13 @@ export interface ChatDocument extends BaseDocument { /** Идентификатор пользователя, которому принадлежит чат */ user_uuid: string; + + // /** Количество непрочитанных сообщений в чате */ + // unread_messages_count: number; + + // /** Дата последнего сообщения в чате */ + // last_message_at: string; + + /** Идентификатор пользователя, которому адресован чат */ + to_user_uuid: string; }