create chat document

This commit is contained in:
2024-12-06 23:00:31 +02:00
parent 3cb75c8cc2
commit cf87c0daa7
6 changed files with 67 additions and 9 deletions
+2
View File
@@ -3,6 +3,7 @@ import PouchDB from '@/api/PouchDB'
import type {
BaseDocument,
QRCodeDocument,
ChatDocument,
MessageDocument,
WebPushSubscriptionDocument,
PublicSettingsDocument,
@@ -18,6 +19,7 @@ export const getLocalDb = <T extends BaseDocument>(dbName: DB_NAMES) => new Pouc
export const qrCodeDbRemote = getRemoteDb<QRCodeDocument>(DB_NAMES.QR)
export const qrCodeDbLocal = getLocalDb<QRCodeDocument>(DB_NAMES.QR)
export const messagesDbLocal = getLocalDb<MessageDocument>(DB_NAMES.MESSAGES)
export const chatsDbRemote = getRemoteDb<ChatDocument>(DB_NAMES.CHATS)
export const webPushSubscriptionsDbRemote = getRemoteDb<
WebPushSubscriptionDocument<PushSubscriptionJSON>
>(DB_NAMES.WEB_PUSH_SUBSCRIPTIONS)
@@ -44,8 +44,8 @@
<script setup lang="ts">
import { ref } from 'vue'
import { useRouter } from 'vue-router'
import { messagesDbLocal as db } from '@/api/dbs'
import type { MessageDocument, QRCodeDocument } from '@hereconnect/types'
import { chatsDbRemote, messagesDbLocal as db } from '@/api/dbs'
import type { ChatDocument, MessageDocument, QRCodeDocument } from '@hereconnect/types'
import { ROUTE_NAMES } from '@/constants/routes'
import { getUserUuid } from '@/utils/getUserUuid'
import { getBrowserUuid } from '@/utils/getBrowserUuid'
@@ -69,22 +69,49 @@ async function sendMessage(content: string) {
try {
loading.value = true
const chat = (new Date().getTime() - new Date(doc.created_at).getTime()).toString(36)
const date = new Date()
const created_at = date.toISOString()
const chat = (date.getTime() - new Date(doc.created_at).getTime()).toString(36)
const user_uuid = getUserUuid()
const browser_uuid = getBrowserUuid()
const chatGuestDoc: ChatDocument = {
_id: `chat:${user_uuid}:guest:${doc.uri}:${chat}`,
type: 'chat',
qr_code_uri: doc.uri,
role: 'guest',
chat,
created_at,
user_uuid,
}
const chatOwnerDoc: ChatDocument = {
_id: `chat:${doc.user_uuid}:owner:${doc.uri}:${chat}`,
type: 'chat',
qr_code_uri: doc.uri,
role: 'owner',
chat,
created_at,
user_uuid: doc.user_uuid,
}
const message: MessageDocument = {
_id: `message:${doc.uri}:${chat}:${new Date().toISOString()}`,
_id: `message:${doc.uri}:${chat}:${created_at}`,
type: 'message',
qr_code_uri: doc.uri,
chat,
created_at: new Date().toISOString(),
created_at,
from: 'guest',
user_uuid: getUserUuid(),
browser_uuid: getBrowserUuid(),
user_uuid,
browser_uuid,
body: content.trim(),
}
// Сохраняем сообщение в локальную базу данных
await db.put(message)
await Promise.all([
chatsDbRemote.bulkDocs([chatGuestDoc, chatOwnerDoc]),
// Сохраняем сообщение в локальную базу данных
db.put(message),
])
success.value = true
error.value = null
+1
View File
@@ -1,5 +1,6 @@
export enum DB_NAMES {
QR = 'qr',
CHATS = 'chats',
MESSAGES = 'messages',
WEB_PUSH_SUBSCRIPTIONS = 'web_push_subscriptions',
PUBLIC_SETTINGS = 'public_settings',