diff --git a/client/src/components/ui/sync-status.tsx b/client/src/components/ui/sync-status.tsx index d904c75..c972918 100644 --- a/client/src/components/ui/sync-status.tsx +++ b/client/src/components/ui/sync-status.tsx @@ -1,10 +1,33 @@ +import { useEffect, useState } from 'react' import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip' +import { getSyncStatus } from '@/services/sync/get-sync-status' interface SyncStatusProps { isSync: boolean } -export const SyncStatus = ({ isSync }: SyncStatusProps) => { +const SYNC_POLL_INTERVAL = 10000 + +export const SyncStatus = ({ isSync: isSyncProps }: SyncStatusProps) => { + const [isSync, setIsSync] = useState(isSyncProps) + + useEffect(() => { + if (!isSync) return + + const pollSyncStatus = async () => { + try { + const isSync = await getSyncStatus() + setIsSync(isSync) + } catch (error) { + console.error('Error polling sync status:', error) + } + } + + const timeout = setTimeout(pollSyncStatus, SYNC_POLL_INTERVAL) + + return () => clearTimeout(timeout) + }, [isSync]) + if (!isSync) return null return ( diff --git a/client/src/pages/publications/[id].astro b/client/src/pages/publications/[id].astro index e7e86c2..a7619c4 100644 --- a/client/src/pages/publications/[id].astro +++ b/client/src/pages/publications/[id].astro @@ -22,7 +22,7 @@ const data = await getPublication(id, clientUuid?.value).catch((error) => { }) interface AuthorData { - id: number, + id: number name: string }