From 00f206e9ff21826c4dcc36227263dbfe82819a79 Mon Sep 17 00:00:00 2001 From: godwinishaku506-hub Date: Fri, 26 Jun 2026 13:27:08 +0000 Subject: [PATCH] Fix trust override handling for partial localStorage values --- .../hooks/__tests__/useTrust.test.ts | 18 +++++++++++++++ src/components/hooks/useTrust.ts | 23 +++++++++++++------ 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/src/components/hooks/__tests__/useTrust.test.ts b/src/components/hooks/__tests__/useTrust.test.ts index 73a7776..0280f2e 100644 --- a/src/components/hooks/__tests__/useTrust.test.ts +++ b/src/components/hooks/__tests__/useTrust.test.ts @@ -39,4 +39,22 @@ describe("useTrust", () => { expect(result.current.suspicious).toBe(true); }); }); + + it("keeps existing trust values when a partial override is stored", async () => { + localStorage.setItem( + "trustInfo", + JSON.stringify({ + isVerified: false, + }), + ); + + const { result } = renderHook(() => useTrust()); + + await waitFor(() => { + expect(result.current.isVerified).toBe(false); + expect(typeof result.current.reputation).toBe("number"); + expect(typeof result.current.accountAgeDays).toBe("number"); + expect(typeof result.current.suspicious).toBe("boolean"); + }); + }); }); diff --git a/src/components/hooks/useTrust.ts b/src/components/hooks/useTrust.ts index aeb109a..8d63edd 100644 --- a/src/components/hooks/useTrust.ts +++ b/src/components/hooks/useTrust.ts @@ -46,13 +46,22 @@ function parseTrustInfoFromStorage(): Partial | null { if (!stored) return null; const parsed = JSON.parse(stored); - return { - isVerified: typeof parsed.isVerified === "boolean" ? parsed.isVerified : undefined, - reputation: typeof parsed.reputation === "number" ? parsed.reputation : undefined, - accountAgeDays: - typeof parsed.accountAgeDays === "number" ? parsed.accountAgeDays : undefined, - suspicious: typeof parsed.suspicious === "boolean" ? parsed.suspicious : undefined, - }; + const overrides: Partial = {}; + + if (typeof parsed.isVerified === "boolean") { + overrides.isVerified = parsed.isVerified; + } + if (typeof parsed.reputation === "number") { + overrides.reputation = parsed.reputation; + } + if (typeof parsed.accountAgeDays === "number") { + overrides.accountAgeDays = parsed.accountAgeDays; + } + if (typeof parsed.suspicious === "boolean") { + overrides.suspicious = parsed.suspicious; + } + + return Object.keys(overrides).length > 0 ? overrides : null; } catch (error) { console.warn("Invalid localStorage.trustInfo", error); return null;