diff --git a/jumble/src/contexts/SyncStatusContext.tsx b/jumble/src/contexts/SyncStatusContext.tsx index 78d566b3d..bfb6f7c7c 100644 --- a/jumble/src/contexts/SyncStatusContext.tsx +++ b/jumble/src/contexts/SyncStatusContext.tsx @@ -11,6 +11,7 @@ import { useCharmManager } from "@/contexts/CharmManagerContext.tsx"; interface SyncStatusContextType { isSyncing: boolean; lastSyncTime: Date | null; + hasConnected: boolean; } const SyncStatusContext = createContext( @@ -27,7 +28,8 @@ export function SyncStatusProvider({ intervalMs = 50, }: SyncStatusProviderProps) { const [isSyncing, setIsSyncing] = useState(true); - const [lastSyncTime, setLastSyncTime] = useState(null); + const lastSyncTimeRef = useRef(null); + const [hasConnected, setHasConnected] = useState(false); const { charmManager } = useCharmManager(); const isCheckingSyncRef = useRef(false); @@ -44,7 +46,10 @@ export function SyncStatusProvider({ await charmManager.synced(); if (isMounted) { - setLastSyncTime(new Date()); + lastSyncTimeRef.current = new Date(); + if (!hasConnected) { + setHasConnected(true); + } } } catch (error) { console.error("Sync error:", error); @@ -68,7 +73,7 @@ export function SyncStatusProvider({ }; }, [charmManager, intervalMs]); - const value = { isSyncing, lastSyncTime }; + const value = { isSyncing, lastSyncTime: lastSyncTimeRef.current, hasConnected }; return ( diff --git a/jumble/src/views/CharmList.tsx b/jumble/src/views/CharmList.tsx index 8d0741b3d..75f8a42b2 100644 --- a/jumble/src/views/CharmList.tsx +++ b/jumble/src/views/CharmList.tsx @@ -100,9 +100,9 @@ export default function CharmList() { const [charms] = useCell(charmManager.getCharms()); const [trash] = useCell(charmManager.getTrash()); - const { lastSyncTime } = useSyncedStatus(); + const { hasConnected } = useSyncedStatus(); - if (lastSyncTime == null) { + if (!hasConnected) { return (