From 5939bc7360cf583bd63d7c386125e58ddae1bb68 Mon Sep 17 00:00:00 2001 From: Jinwoo-H Date: Thu, 10 Sep 2026 22:56:46 -0400 Subject: [PATCH] fix: wait for fresh auth before showing signout card --- .../src/components/UnexpectedSignoutCard.tsx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/renderer/src/components/UnexpectedSignoutCard.tsx b/src/renderer/src/components/UnexpectedSignoutCard.tsx index d572eb92dc8..2881d2dcdd1 100644 --- a/src/renderer/src/components/UnexpectedSignoutCard.tsx +++ b/src/renderer/src/components/UnexpectedSignoutCard.tsx @@ -1,7 +1,6 @@ import { useEffect, useRef, useState } from 'react' import { BookOpen, ChevronDown, CircleUserRound, Files, Smartphone, X } from 'lucide-react' import { useAppStore } from '../store' -import { useOrcaProfileAuthStatusRefresh } from '@/hooks/use-orca-profile-auth-status-refresh' import { translate } from '@/i18n/i18n' import { cn } from '@/lib/utils' import { Button } from './ui/button' @@ -52,12 +51,26 @@ export function UnexpectedSignoutCard(): React.JSX.Element | null { const connecting = useAppStore((s) => s.orcaProfileConnecting) const connect = useAppStore((s) => s.connectCurrentOrcaProfile) const [appVersion, setAppVersion] = useState(null) + const [authRefreshReady, setAuthRefreshReady] = useState(false) const [expanded, setExpanded] = useState(false) const [preview] = useState(readPreviewFlag) const [previewDismissed, setPreviewDismissed] = useState(false) const reconnectingProfile = useRef(null) - useOrcaProfileAuthStatusRefresh() + useEffect(() => { + let cancelled = false + void useAppStore + .getState() + .fetchOrcaProfileAuthStatus() + .finally(() => { + if (!cancelled) { + setAuthRefreshReady(true) + } + }) + return () => { + cancelled = true + } + }, []) useEffect(() => { let cancelled = false @@ -87,7 +100,7 @@ export function UnexpectedSignoutCard(): React.JSX.Element | null { dismissedVersion }) - const visible = preview ? persistedUIReady && !previewDismissed : eligible + const visible = preview ? persistedUIReady && !previewDismissed : authRefreshReady && eligible // Observe recovery independently of visibility and asynchronous version/hydration reads. useEffect(() => {