settings: split danger zone into delete originals / delete all activities

Move "Delete original files" out of the Storage card and into the
Danger zone as a first, less-destructive step (simple confirm, no
password needed). "Delete all activity data" and "Delete account"
follow below it, both still password-gated. Descriptions clarify
exactly what each action does and does not remove.
This commit is contained in:
Davide Scaini
2026-04-15 20:42:31 +02:00
parent 87a69bcc8b
commit 7142ac8f2e
+16 -19
View File
@@ -31,17 +31,6 @@ import Base from '../../layouts/Base.astro';
<span id="st-total" class="text-white tabular-nums"></span>
</div>
</div>
<!-- Delete originals -->
<div id="del-originals-area" class="mt-4 hidden">
<p class="text-xs text-zinc-500 mb-3">
Original files are kept for reprocessing. Once your activities look correct you can free this space — the extracted data is not affected.
</p>
<button id="del-originals-btn"
class="px-4 py-2 rounded-lg text-sm bg-zinc-800 hover:bg-amber-900 hover:text-amber-300 text-zinc-300 transition-colors">
Delete original files
</button>
<p id="del-originals-status" class="text-xs mt-2 hidden"></p>
</div>
</section>
<!-- Profile card -->
@@ -141,10 +130,21 @@ import Base from '../../layouts/Base.astro';
<section class="rounded-xl bg-zinc-900 border border-red-900/40 p-5">
<h2 class="text-sm font-semibold text-red-400/70 uppercase tracking-wider mb-4">Danger zone</h2>
<!-- Delete activities -->
<!-- Delete original files -->
<div class="mb-5">
<p class="text-sm text-zinc-300 font-medium mb-1">Reset activity data</p>
<p class="text-xs text-zinc-500 mb-3">Wipes all extracted activities, edits, and photos. Your account is kept. Cannot be undone.</p>
<p class="text-sm text-zinc-300 font-medium mb-1">Delete original files</p>
<p class="text-xs text-zinc-500 mb-3">Removes the raw source files kept for reprocessing (originals/). Your extracted activities, edits, and photos are not affected.</p>
<button id="del-originals-btn"
class="px-4 py-2 rounded-lg text-sm bg-zinc-800 hover:bg-amber-900 hover:text-amber-300 text-zinc-400 transition-colors">
Delete original files
</button>
<p id="del-originals-status" class="text-xs mt-2 hidden"></p>
</div>
<!-- Delete all activity data -->
<div class="border-t border-zinc-800 pt-5 mb-5">
<p class="text-sm text-zinc-300 font-medium mb-1">Delete all activity data</p>
<p class="text-xs text-zinc-500 mb-3">Wipes all extracted activities, edits, and photos. Your account and original files are kept. Cannot be undone.</p>
<button id="del-activities-btn"
class="px-4 py-2 rounded-lg text-sm bg-zinc-800 hover:bg-red-900 hover:text-red-300 text-zinc-400 transition-colors">
Delete all activities
@@ -218,10 +218,6 @@ import Base from '../../layouts/Base.astro';
document.getElementById('st-strava-row')!.classList.remove('hidden');
}
if (d.originals_mb > 0) {
document.getElementById('del-originals-area')!.classList.remove('hidden');
}
loading.classList.add('hidden');
content.classList.remove('hidden');
} catch (e: any) {
@@ -240,7 +236,8 @@ import Base from '../../layouts/Base.astro';
const d = await r.json();
if (r.ok) {
setStatus(statusEl, `Freed ${fmtMb(d.freed_mb)}.`, true);
btn.closest('div')!.querySelector('button')!.remove();
btn.disabled = true;
btn.textContent = 'Already deleted';
loadStorage();
} else {
btn.disabled = false;