import { useSyncEvent } from '@xborglabs/ui-shared/dist/client';
const QUEST_EVENT_SYNC_TIMER = 'qert';
export default function App() {
const runSync = useSyncEvent(eventId);
const [syncing, setSyncing] = useState(false);
const syncStatus = event?.participation?.syncStatus;
const isSyncing = syncing || syncStatus === ParticipantSyncStatusTypeSchema.Enum.SYNCING;
useEffect(() => {
const key = `${QUEST_EVENT_SYNC_TIMER}:${eventId}`;
const lastRan = localStorage.getItem(key);
if (lastRan) {
const lastRanDate = new Date(lastRan);
const now = new Date();
if (now.getTime() - lastRanDate.getTime() < 5 * 60 * 1000) {
return; // Exit if the last run was less than 5 minutes ago
}
}
onSync();
}, [eventId]);
function onSync() {
if (isSyncing) {
return;
}
setSyncing(true);
runSync
.mutateAsync()
.then(async () => {
// Refetch events or update UI as necessary
})
.catch((err) => {
console.error('Sync failed:', err);
})
.finally(() => {
setSyncing(false);
});
}
return (
<button onClick={onSync} disabled={isSyncing}>
{isSyncing ? 'Syncing...' : 'Sync'}
</button>
);
}