|
1 | 1 | import { Capacitor } from "@capacitor/core"; |
2 | 2 | import { isTauri } from "@tauri-apps/api/core"; |
3 | 3 |
|
4 | | -// In dev on Android/WebView, a previously installed service worker can cache assets |
5 | | -// and prevent hot updates from Vite. Proactively unregister all SW and clear caches |
6 | | -// when running in dev or in a native (Capacitor/Tauri) context. |
7 | | -async function disableServiceWorkersForDev() { |
8 | | - try { |
9 | | - const isDev = (() => { |
10 | | - try { |
11 | | - return !!(import.meta && import.meta.env && import.meta.env.DEV); |
12 | | - } catch (_) { |
13 | | - return false; |
14 | | - } |
15 | | - })(); |
16 | | - const isNative = Capacitor?.isNativePlatform?.() === true; |
17 | | - if ((isDev || isNative) && typeof navigator !== "undefined" && "serviceWorker" in navigator) { |
18 | | - const regs = await navigator.serviceWorker.getRegistrations(); |
19 | | - for (const r of regs) { |
20 | | - try { |
21 | | - await r.unregister(); |
22 | | - } catch (_) {} |
23 | | - } |
24 | | - if (typeof caches !== "undefined" && caches?.keys) { |
25 | | - const keys = await caches.keys(); |
26 | | - for (const k of keys) { |
27 | | - try { |
28 | | - await caches.delete(k); |
29 | | - } catch (_) {} |
30 | | - } |
31 | | - } |
32 | | - // Also attempt to stop active controller |
33 | | - if (navigator.serviceWorker.controller) { |
34 | | - try { |
35 | | - navigator.serviceWorker.controller.postMessage({ type: "SKIP_WAITING" }); |
36 | | - } catch (_) {} |
37 | | - } |
38 | | - // Small delay to ensure SW is cleared before app logic proceeds |
39 | | - await new Promise((res) => setTimeout(res, 50)); |
40 | | - } |
41 | | - } catch (_) { |
42 | | - // best-effort; ignore |
43 | | - } |
44 | | -} |
45 | | - |
46 | | -// Fire and forget; we don't block app init |
47 | | -// disableServiceWorkersForDev(); |
48 | | - |
49 | 4 | // Detects OS using modern userAgentData API with fallback to legacy platform |
50 | 5 | // Returns standardized OS name string or "unknown" |
51 | 6 | export function getOS() { |
|
0 commit comments