feat: delete habits from detail sheet
ci / gitleaks (push) Successful in 6s
ci / docker (push) Successful in 5m40s

This commit is contained in:
2026-09-08 20:16:25 +08:00
parent 89374f2db9
commit 9db323ac2d
5 changed files with 38 additions and 2 deletions
+10 -1
View File
@@ -322,6 +322,15 @@ async function archiveHabit(h: Habit) {
emit('notice', '习惯已归档')
})
}
async function deleteHabit(h: Habit) {
if (!confirm(`永久删除习惯“${h.name}”?所有历史打卡记录也会被删除,且无法恢复。`)) return
await safe(async () => {
await request(`/habits/${h.id}/permanent`, { method: 'DELETE' })
selectedHabit.value = null
await loadHabits()
emit('notice', '习惯已永久删除')
})
}
function refreshHabitDay() {
const next = dateKey(new Date())
if (next !== todayKey.value) {
@@ -482,7 +491,7 @@ onBeforeUnmount(() => {
<article ref="habitDetailSheet" class="habit-detail-sheet" role="dialog" aria-modal="true" aria-labelledby="habit-detail-title" tabindex="-1" @keydown.esc="closeHabitDetail">
<header><div><small>习惯详情</small><h3 id="habit-detail-title">{{ selectedHabit.name }}</h3></div><button type="button" aria-label="关闭习惯详情" @click="closeHabitDetail"><X/></button></header>
<div class="habit-detail-progress"><span>今日进度</span><strong>{{ habitProgressText(selectedHabit) || (isDone(selectedHabit, todayKey) ? '已完成' : '未完成') }}</strong></div>
<footer><button type="button" class="danger-text" @click="archiveHabit(selectedHabit)"><Trash2/>归档习惯</button></footer>
<footer><button type="button" class="danger-text" @click="archiveHabit(selectedHabit)"><ArchiveRestore/>归档习惯</button><button type="button" class="danger-text habit-delete-button" @click="deleteHabit(selectedHabit)"><Trash2/>永久删除</button></footer>
</article>
</div>
</Transition>