diff --git a/frontend/src/pages/app/utils/push-notifications.ts b/frontend/src/pages/app/utils/push-notifications.ts index eb8cf5d..2696d30 100644 --- a/frontend/src/pages/app/utils/push-notifications.ts +++ b/frontend/src/pages/app/utils/push-notifications.ts @@ -2,6 +2,7 @@ import { API_BASE_URL } from "../core/config"; import { isElectron } from "../electron/electron"; import { websocket } from "../core/websocket"; import type { NewMessageWebSocketMessage, WebSocketMessage } from "../core/types"; +import serviceWorker from "../service-worker/service-worker.ts?worker&url"; export interface PushSubscriptionData { endpoint: string; @@ -152,7 +153,7 @@ export async function initialize(): Promise { } try { - registration = await navigator.serviceWorker.register("/assets/serviceWorker.js"); + registration = await navigator.serviceWorker.register(serviceWorker, { type: "module" }); console.log("Service Worker registered successfully"); const permission = await Notification.requestPermission(); diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 1386a83..66e9e17 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -5,8 +5,6 @@ import electron from "vite-plugin-electron/simple"; import react from "@vitejs/plugin-react"; import { resolve } from "path"; -const serviceWorkerPath = resolve(__dirname, "src/service-worker/service-worker.ts"); - const plugins: PluginOption[] = [ react(), createHtmlPlugin({ @@ -20,31 +18,7 @@ const plugins: PluginOption[] = [ minifyCSS: true, minifyJS: true } - }), - { - name: 'service-worker-redirect', - configureServer(server) { - server.middlewares.use(async (req, res, next) => { - if (req.url === '/assets/serviceWorker.js') { - try { - const traspiled = await server.transformRequest(serviceWorkerPath); - - res.writeHead(200, { - 'Content-Type': "application/javascript" - }); - res.end(traspiled!.code); - } catch (e) { - try { - res.writeHead(500); - res.end(); - } catch (e) {} - } - } else { - next(); - } - }); - } - } + }) ] if (process.env.VITE_ELECTRON) { @@ -107,22 +81,6 @@ export default defineConfig({ cssMinify: true, assetsInlineLimit: 0, outDir: process.env.VITE_ELECTRON ? "build/electron/dist" : "build/normal/dist", - chunkSizeWarningLimit: 1024, - rollupOptions: { - input: { - main: resolve(__dirname, "index.html"), - serviceWorker: serviceWorkerPath - }, - output: { - entryFileNames: (chunkInfo) => { - // Проверяем имя чанка - if (chunkInfo.name === 'serviceWorker') { - return 'assets/serviceWorker.js'; // Указываем фиксированное имя для этого скрипта - } - // Для остальных файлов используем стандартное именование с хэшем - return 'assets/[name]-[hash].js'; - } - } - } + chunkSizeWarningLimit: 1024 } }); \ No newline at end of file