diff --git a/apps/web/src/features/wallet/store/wallet-store.test.ts b/apps/web/src/features/wallet/store/wallet-store.test.ts index 433a6ca..925462a 100644 --- a/apps/web/src/features/wallet/store/wallet-store.test.ts +++ b/apps/web/src/features/wallet/store/wallet-store.test.ts @@ -391,8 +391,54 @@ describe("useWalletStore", () => { setConnected("GCZXVVCZULC5NZ2V23MZWCABDGVH42DXSBVVMVX34OXQBAWIB7CFZZJ", "freighter") expect(getState().network).toBe("testnet") - setDisconnected() expect(getState().network).toBe("testnet") }) }) + + describe("Persistence", () => { + beforeEach(() => { + localStorage.clear() + }) + + it("should rehydrate from valid storage", async () => { + localStorage.setItem( + "so4-wallet", + JSON.stringify({ + state: { + address: "GVALIDADDRESS", + network: "testnet", + walletId: "freighter", + }, + version: 0, + }) + ) + + await useWalletStore.persist.rehydrate() + + const state = useWalletStore.getState() + expect(state.address).toBe("GVALIDADDRESS") + expect(state.network).toBe("testnet") + expect(state.walletId).toBe("freighter") + }) + + it("should fallback to disconnected on missing storage", async () => { + localStorage.removeItem("so4-wallet") + + await useWalletStore.persist.rehydrate() + + const state = useWalletStore.getState() + expect(state.address).toBeNull() + expect(state.status).toBe("disconnected") + }) + + it("should fallback to disconnected on corrupt storage", async () => { + localStorage.setItem("so4-wallet", "INVALID_JSON_{{") + + await useWalletStore.persist.rehydrate() + + const state = useWalletStore.getState() + expect(state.address).toBeNull() + expect(state.status).toBe("disconnected") + }) + }) }) diff --git a/apps/web/src/routes/__root.tsx b/apps/web/src/routes/__root.tsx index a3c4b01..9879395 100644 --- a/apps/web/src/routes/__root.tsx +++ b/apps/web/src/routes/__root.tsx @@ -1,4 +1,4 @@ -import { HeadContent, Scripts, createRootRoute } from "@tanstack/react-router" +import { HeadContent, Scripts, createRootRoute, Link } from "@tanstack/react-router" import { Toaster } from "sonner" import appCss from "@workspace/ui/globals.css?url" import { AppProviders } from "../app/providers" @@ -136,6 +136,11 @@ export const Route = createRootRoute({
The requested page could not be found.
+