From abbbf17bcfe6dfa663b7019c4892db09e27b3808 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Thu, 27 Aug 2026 13:37:26 +0200 Subject: Resync Strava title from list payload via Save Context / Problem: Strava titles can be corrected after import. The sync path only handled new rides; existing rides were marked skipped without checking the cheap list metadata, so corrections like ride #789 stayed stale. What: In syncRides reuse the existing Save write path for rare title resyncs (pay GPX parse cost) when existing.Name != list.Name; track progress.Updated and surface it in SSE/TS UI; add tests for resync without stream fetch. Remove the now-obsolete TODO. QA: go test/ vet, tsc, biome/stylelint pass. --- web/frontend/sync.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'web/frontend/sync.ts') diff --git a/web/frontend/sync.ts b/web/frontend/sync.ts index f58d224..9462d52 100644 --- a/web/frontend/sync.ts +++ b/web/frontend/sync.ts @@ -39,7 +39,8 @@ export const mountSync = (): void => { progressBar.max = Math.max(progress.total, 1); progressBar.value = progress.completed; progressCount.textContent = `${progress.completed} / ${progress.total}`; - progressDetails.textContent = `${progress.imported} imported · ${progress.skipped} skipped${formatRateLimit(progress)}`; + const updatedPart = progress.updated ? ` · ${progress.updated} updated` : ""; + progressDetails.textContent = `${progress.imported} imported · ${progress.skipped} skipped${updatedPart}${formatRateLimit(progress)}`; }; const handleEvent = (eventName: string, data: SyncProgress | SyncErrorEvent): boolean => { if (eventName === "progress") { @@ -50,7 +51,8 @@ export const mountSync = (): void => { if (eventName === "complete") { if (!isSyncProgress(data)) throw new Error("Invalid Strava sync completion event"); updateProgress(data); - notice.textContent = `Sync complete: ${data.imported} imported, ${data.skipped} skipped.${formatRateLimit(data)}`; + const updatedPart = data.updated ? `, ${data.updated} updated` : ""; + notice.textContent = `Sync complete: ${data.imported} imported, ${data.skipped} skipped${updatedPart}.${formatRateLimit(data)}`; notice.hidden = false; return true; } -- cgit v1.3