diff --git a/site/src/layouts/Base.astro b/site/src/layouts/Base.astro index 5817e61..93925bb 100644 --- a/site/src/layouts/Base.astro +++ b/site/src/layouts/Base.astro @@ -402,6 +402,11 @@ try { class="flex-1 py-1.5 px-3 rounded-lg text-xs bg-zinc-800 hover:bg-zinc-700 text-zinc-400 hover:text-zinc-200 transition-colors" title="Clear sync point — next sync re-checks all Strava activities" >Hard reset +

@@ -934,6 +939,26 @@ try { stravaResetSoftBtn.addEventListener('click', () => stravaReset('soft')); stravaResetHardBtn.addEventListener('click', () => stravaReset('hard')); + document.getElementById('strava-disconnect-modal-btn')?.addEventListener('click', async () => { + if (!confirm('Disconnect from Strava? You will need to reconnect via OAuth to re-enable sync.')) return; + try { + const r = await fetch(`${editUrl}/api/strava/disconnect`, { method: 'POST', credentials: 'include' }); + if (r.ok) { + stravaStatus.textContent = 'Disconnected.'; + stravaStatus.style.color = '#4ade80'; + stravaConnect.style.display = ''; + stravaSync.style.display = 'none'; + } else { + const d = await r.json(); + stravaStatus.textContent = d.detail ?? 'Failed to disconnect.'; + stravaStatus.style.color = '#f87171'; + } + } catch { + stravaStatus.textContent = 'Could not reach server.'; + stravaStatus.style.color = '#f87171'; + } + }); + // ── Strava ZIP upload ───────────────────────────────────────────────── function doZipUpload(file) { if (!file) return;