Files
backspace/packages/web/src/components/ui/SwUpdatePrompt.tsx
T
Jannis Braun 95ec3ff952 feat: Electron screen share picker, instance selector, and system audio loopback
- Custom screen share picker for Electron (ScreenSharePicker.tsx) with
  Aether Drift design: glass-bubble footer, adaptive grid, pill tabs,
  border-based selection (avoids overflow clipping), hover brightness
- Instance URL picker so Electron connects to any Backspace server
- System audio loopback on Windows/Linux via desktopCapturer callback
- macOS: video-only callback (OS blocks system audio capture)
- IPC bridge for screen source enumeration and selection
- Purge stale service worker caches on Electron launch
2026-03-16 03:50:07 +01:00

23 lines
653 B
TypeScript

import { useRegisterSW } from 'virtual:pwa-register/react';
import { useEffect } from 'react';
export function SwAutoUpdate() {
useRegisterSW({
onRegisteredSW(_swUrl, registration) {
if (!registration) return;
setInterval(() => {
registration.update();
}, 60_000);
},
});
useEffect(() => {
if (!navigator.serviceWorker) return;
const onControllerChange = () => window.location.reload();
navigator.serviceWorker.addEventListener('controllerchange', onControllerChange);
return () => navigator.serviceWorker.removeEventListener('controllerchange', onControllerChange);
}, []);
return null;
}