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
+11 -2
View File
@@ -3,13 +3,21 @@ import { publicSettingsDbRemote, webPushSubscriptionsDbRemote } from '@/api/dbs'
import { getUserUuid } from '@/utils/getUserUuid'
import { getBrowserUuid } from '@/utils/getBrowserUuid'
export const getWebPushSubscriptionDocument = async () => {
const type = 'web_push_subscription'
const user_uuid = getUserUuid()
const browser_uuid = getBrowserUuid()
const _id = `${type}:${user_uuid}:${browser_uuid}`
return webPushSubscriptionsDbRemote.get(_id)
}
export const saveWebPushSubscription = async (subscription: PushSubscription) => {
const type = 'web_push_subscription'
const user_uuid = getUserUuid()
const browser_uuid = getBrowserUuid()
const _id = `${type}:${user_uuid}:${browser_uuid}`
const created_at = new Date().toISOString()
const webPushSubscriptionDoc: WebPushSubscriptionDocument = {
const webPushSubscriptionDoc: WebPushSubscriptionDocument<PushSubscriptionJSON> = {
_id,
type,
user_uuid,
@@ -20,7 +28,7 @@ export const saveWebPushSubscription = async (subscription: PushSubscription) =>
try {
const { rev } = await webPushSubscriptionsDbRemote.upsert(
_id,
(doc): WebPushSubscriptionDocument | false => {
(doc): WebPushSubscriptionDocument<PushSubscriptionJSON> | false => {
webPushSubscriptionDoc._rev = doc._rev
const isNotChanged =
JSON.stringify(webPushSubscriptionDoc.subscription) === JSON.stringify(doc.subscription)
@@ -37,6 +45,7 @@ export const saveWebPushSubscription = async (subscription: PushSubscription) =>
return webPushSubscriptionDoc
} catch (error) {
console.error('Ошибка сохранения подписки:', error)
throw error
}
}