From d8d747276a91ed887d34c9228db53ba37e5d2b2e Mon Sep 17 00:00:00 2001 From: ordinarthur <@arthurbarre.js@gmail.com> Date: Tue, 14 Apr 2026 11:55:51 +0200 Subject: [PATCH] fix: gate signaling behind profile setup, fix SW cache --- web/src/pages/Home.tsx | 17 ++++++++++++----- web/src/pages/JoinRoom.tsx | 17 ++++++++++++----- web/vite.config.ts | 11 +++++++++++ 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/web/src/pages/Home.tsx b/web/src/pages/Home.tsx index bbe0ec9..1f9e227 100644 --- a/web/src/pages/Home.tsx +++ b/web/src/pages/Home.tsx @@ -11,6 +11,16 @@ import PublicRoomPanel from "../components/PublicRoomPanel"; import ProfileSetup from "../components/ProfileSetup"; export default function Home() { + const isSetUp = useProfileStore((s) => s.isSetUp); + + if (!isSetUp) { + return {}} />; + } + + return ; +} + +function HomeConnected() { const { sendFiles, sendText, acceptTransfer, rejectTransfer, createPublicRoom } = useSignaling(); @@ -22,7 +32,7 @@ export default function Home() { const setShowTextModal = useStore((s) => s.setShowTextModal); const setError = useStore((s) => s.setError); - const { deviceName, avatar, isSetUp } = useProfileStore(); + const { deviceName, avatar } = useProfileStore(); const [showProfileEdit, setShowProfileEdit] = useState(false); const handlePeerSelect = useCallback( @@ -145,10 +155,7 @@ export default function Home() { - {/* Profile setup — first time or edit */} - {!isSetUp && ( - {}} /> - )} + {/* Profile edit modal */} {showProfileEdit && ( setShowProfileEdit(false)} /> )} diff --git a/web/src/pages/JoinRoom.tsx b/web/src/pages/JoinRoom.tsx index 63bc20b..4618b81 100644 --- a/web/src/pages/JoinRoom.tsx +++ b/web/src/pages/JoinRoom.tsx @@ -12,9 +12,19 @@ import ProfileSetup from "../components/ProfileSetup"; export default function JoinRoom() { const { code } = useParams<{ code: string }>(); + const isSetUp = useProfileStore((s) => s.isSetUp); + + if (!isSetUp) { + return {}} />; + } + + return ; +} + +function JoinRoomConnected({ code }: { code?: string }) { const { sendFiles, sendText, acceptTransfer, rejectTransfer } = useSignaling(code); - const { deviceName, avatar, isSetUp } = useProfileStore(); + const { deviceName, avatar } = useProfileStore(); const [showProfileEdit, setShowProfileEdit] = useState(false); const selectedPeerId = useStore((s) => s.selectedPeerId); const showTextModal = useStore((s) => s.showTextModal); @@ -146,10 +156,7 @@ export default function JoinRoom() { - {/* Profile setup — first time or edit */} - {!isSetUp && ( - {}} /> - )} + {/* Profile edit modal */} {showProfileEdit && ( setShowProfileEdit(false)} /> )} diff --git a/web/vite.config.ts b/web/vite.config.ts index 325d2fc..802f665 100644 --- a/web/vite.config.ts +++ b/web/vite.config.ts @@ -15,6 +15,17 @@ export default defineConfig({ VitePWA({ registerType: "autoUpdate", includeAssets: ["favicon.svg"], + workbox: { + skipWaiting: true, + clientsClaim: true, + navigateFallback: "index.html", + runtimeCaching: [ + { + urlPattern: ({ request }) => request.mode === "navigate", + handler: "NetworkFirst", + }, + ], + }, manifest: { name: "AnyDrop", short_name: "AnyDrop",