diff --git a/apps/frontend/.env b/apps/frontend/.env new file mode 100644 index 0000000..8dd3fa6 --- /dev/null +++ b/apps/frontend/.env @@ -0,0 +1 @@ +VITE_API_URL=https://hereconnect.condev.ru/api \ No newline at end of file diff --git a/apps/frontend/.env.production b/apps/frontend/.env.production new file mode 100644 index 0000000..29b0c0b --- /dev/null +++ b/apps/frontend/.env.production @@ -0,0 +1 @@ +BASE_URL=https://hereconnect.condev.ru \ No newline at end of file diff --git a/apps/frontend/src/api/dbs.ts b/apps/frontend/src/api/dbs.ts index b225347..4021512 100644 --- a/apps/frontend/src/api/dbs.ts +++ b/apps/frontend/src/api/dbs.ts @@ -6,7 +6,7 @@ import type { WebPushSubscriptionDocument, } from '@/types/DBDocumentTypes' -export const qrCodeDbRemote = new PouchDB('https://hereconnect.condev.ru/api/qr', { +export const qrCodeDbRemote = new PouchDB(`${import.meta.env.VITE_API_URL}/qr`, { skip_setup: true, }) @@ -15,11 +15,11 @@ export const qrCodeDbLocal = new PouchDB('qr') export const messagesDbLocal = new PouchDB('messages') export const webPushSubscriptionsDbRemote = new PouchDB( - 'https://hereconnect.condev.ru/api/web_push_subscriptions', + `${import.meta.env.VITE_API_URL}/web_push_subscriptions`, ) export const messagesDbRemote = new PouchDB( - 'https://hereconnect.condev.ru/api/messages', + `${import.meta.env.VITE_API_URL}/messages`, { skip_setup: true, }, diff --git a/apps/frontend/src/api/qrCode.ts b/apps/frontend/src/api/qrCode.ts index 6e4804b..13711b8 100644 --- a/apps/frontend/src/api/qrCode.ts +++ b/apps/frontend/src/api/qrCode.ts @@ -23,7 +23,7 @@ export const createQrCodeDocument = async ( _id: `qr_code:${uri}`, type: 'qr_code', uri, - url: `https://hereconnect.condev.ru/read/${uri}`, + url: `${import.meta.env.BASE_URL}/read/${uri}`, user_uuid: getUserUuid(), browser_uuid: getBrowserUuid(), created_at: new Date().toISOString(), diff --git a/apps/frontend/src/main.ts b/apps/frontend/src/main.ts index d4e0923..57205a6 100644 --- a/apps/frontend/src/main.ts +++ b/apps/frontend/src/main.ts @@ -1,5 +1,5 @@ import { createApp } from 'vue' -import { VueQueryPlugin } from '@tanstack/vue-query' +import { VueQueryPlugin, type VueQueryPluginOptions } from '@tanstack/vue-query' import { createPinia } from 'pinia' import PouchDB from '@/api/PouchDB' @@ -33,9 +33,19 @@ import { registerServiceWorker } from '@/registerServiceWorker' const app = createApp(App) -app.use(VueQueryPlugin, { +const vueQueryPluginOptions: VueQueryPluginOptions = { enableDevtoolsV6Plugin: import.meta.env.DEV, -}) + queryClientConfig: { + defaultOptions: { + queries: { + refetchOnWindowFocus: false, + retry: false, + }, + }, + }, +} + +app.use(VueQueryPlugin, vueQueryPluginOptions) app.use(createPinia()) app.use(router) app.use(PrimeVue, { diff --git a/apps/frontend/src/views/DonateView.vue b/apps/frontend/src/views/DonateView.vue index 2e4671f..e897359 100644 --- a/apps/frontend/src/views/DonateView.vue +++ b/apps/frontend/src/views/DonateView.vue @@ -81,7 +81,7 @@ // const success = ref(false) // Конфигурация для шаринга -const siteUrl = encodeURIComponent('https://hereconnect.condev.ru') +const siteUrl = encodeURIComponent(import.meta.env.BASE_URL) const shareText = encodeURIComponent('Попробуйте НаСвязи — удобный способ связаться через QR-код!') // const shareImage = encodeURIComponent( // 'https://hereconnect.condev.ru/images/qr-code-logo-200x200.jpg', diff --git a/services/message-delivery-method-web-push/test-send-notification-cancel.js b/services/message-delivery-method-web-push/test-send-notification-cancel.js new file mode 100644 index 0000000..0e503b7 --- /dev/null +++ b/services/message-delivery-method-web-push/test-send-notification-cancel.js @@ -0,0 +1,65 @@ +import webpush from "web-push"; +import PouchDB from "./PouchDB.js"; + +if (!process.env.API_URL) { + throw new Error(`env API_URL is not set`); +} + +const settings = await new PouchDB(`${process.env.API_URL}/server_settings`, { + skip_setup: true, +}).get("server_settings:message_delivery_method_web_push:vapid"); + +webpush.setVapidDetails( + settings.vapid.subject, + settings.vapid.keys.publicKey, + settings.vapid.keys.privateKey, +); + +const notification = { + type: "cancelNotification", + notification: { + title: "test", + options: { + icon: "/images/qr-code-logo-200x200.jpg", + body: "Test push message from DevTools.", + tag: "2105ef6f-3ca6-4f99-b258-0ca23f014309", + // requireInteraction: true, + // silent: false, + // vibrate: [200, 100, 200, 100, 200, 100, 200], + data: { + url: "/chat/6ilhxu/13trvu", + payload: { tag: "2105ef6f-3ca6-4f99-b258-0ca23f014309" }, + }, + }, + }, +}; + +const { rows } = await new PouchDB( + `${process.env.API_URL}/web_push_subscriptions`, + { skip_setup: true }, +).allDocs( + process.env.WEB_PUSH_SUBSCRIPTION_ID + ? { + key: process.env.WEB_PUSH_SUBSCRIPTION_ID, + include_docs: true, + } + : { + startkey: "web_push_subscription:", + endkey: "web_push_subscription:\uFFFF", + include_docs: true, + }, +); + +await Promise.allSettled( + rows.map(async ({ doc }) => { + await webpush.sendNotification( + doc.subscription, + JSON.stringify(notification), + ); + console.log("sent ", doc._id); + }), +); + +// issues: +// 1. NO SOUND +// 2. SAFARI NO OPEN PAGE