• Parses sync stats from JSON string; normalizes lastSyncTime to ISO string format.

    Parameters

    • raw: null | string

      Stored sync stats JSON string or null.

    Returns null | SyncStats

    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;
    }
    }