diff --git a/frontend/components/dashboard/agent-settings.tsx b/frontend/components/dashboard/agent-settings.tsx index 4c04533..d9c4931 100644 --- a/frontend/components/dashboard/agent-settings.tsx +++ b/frontend/components/dashboard/agent-settings.tsx @@ -9,7 +9,7 @@ import { RefreshCw, Plus, ChevronDown, ChevronUp, Calendar, CircleDot, Copy, Check, } from "lucide-react"; -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { Card, CardContent } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -18,7 +18,7 @@ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, } from "@/components/ui/dialog"; import { useNostrIdentity } from "@/hooks/use-nostr-identity"; -import { EscrowType, buildEscrowEventTemplate, escrowCoordinate } from "@/lib/pip01"; +import { EscrowType, buildEscrowEventTemplate } from "@/lib/pip01"; import { fetchAPI } from "@/lib/api"; interface PublishedAgent { diff --git a/frontend/hooks/use-nostr-identity.tsx b/frontend/hooks/use-nostr-identity.tsx index d590f21..44c8149 100644 --- a/frontend/hooks/use-nostr-identity.tsx +++ b/frontend/hooks/use-nostr-identity.tsx @@ -4,6 +4,7 @@ import { createContext, useCallback, useContext, + useEffect, useState, type ReactNode, } from "react"; @@ -88,7 +89,16 @@ export function NostrIdentityProvider({ children: ReactNode; }) { const [capability, setCapabilityState] = - useState(() => loadFromSession()); + useState(null); + + const [mounted, setMounted] = useState(false); + + useEffect(() => { + // Hydrate capability from sessionStorage after client mount. + // eslint-disable-next-line react-hooks/set-state-in-effect + setCapabilityState(loadFromSession()); + setMounted(true); + }, []); const setCapability = useCallback((c: SigningCapability) => { persistToSession(c); @@ -111,20 +121,12 @@ export function NostrIdentityProvider({ [capability], ); - if (typeof window === "undefined") { - return ( - {}, signEvent: async () => { throw new Error("not ready"); }, clearCapability: () => {} }} - > - {children} - - ); - } + const value = mounted + ? { capability, setCapability, signEvent, clearCapability } + : { capability: null, setCapability, signEvent, clearCapability }; return ( - + {children} );