Stored sync stats JSON string or null.
Parsed SyncStats or null if invalid.
export function parseSyncStats(raw: string | null): SyncStats | null {
if (!raw) return null;
try {
const parsed = JSON.parse(raw) as Partial<
SyncStats & { lastSyncTime?: string | Date }
>;
let lastSyncTime: string | null = null;
if (parsed.lastSyncTime) {
if (typeof parsed.lastSyncTime === "string") {
lastSyncTime = parsed.lastSyncTime;
} else {
const syncDate = new Date(parsed.lastSyncTime);
lastSyncTime = Number.isNaN(syncDate.getTime())
? null
: syncDate.toISOString();
}
}
return {
lastSyncTime,
entriesSynced: Number(parsed.entriesSynced ?? 0),
failedSyncs: Number(parsed.failedSyncs ?? 0),
totalSyncs: Number(parsed.totalSyncs ?? 0),
} satisfies SyncStats;
} catch (error) {
console.error("[Statistics] ❌ Failed to parse sync stats", error);
return null;
}
}
Parses sync stats from JSON string; normalizes lastSyncTime to ISO string format.