perf: preload and cache countdowns
ci / docker (push) Successful in 3m49s

This commit is contained in:
2026-09-07 17:50:26 +08:00
parent 635930db50
commit a02b6f660c
6 changed files with 64 additions and 5 deletions
+11 -1
View File
@@ -6,7 +6,7 @@ import {
Settings, Trash2, X, Repeat2,
} from 'lucide-vue-next'
import { filterTasks, fromDateTimeLocal, groupTaskTree, renderMarkdown, toDateTimeLocal } from './lib/task-utils'
import { defaultView, isTaskView, nextTotalAfterLocalTaskAdd, quickTaskFields, shouldToggleRowSwipe } from './lib/mvp-utils'
import { defaultView, isTaskView, nextTotalAfterLocalTaskAdd, quickTaskFields, shouldToggleRowSwipe, writeCountdownCache } from './lib/mvp-utils'
import { csrfHeader } from './lib/csrf'
import MvpPanel from './MvpPanel.vue'
import CountdownPanel from './CountdownPanel.vue'
@@ -216,6 +216,7 @@ async function bootstrap() {
activeList.value = data.inbox_id || lists.value.find((item: TaskList) => item.is_inbox)?.id || lists.value[0]?.id || ''
expandedFolders.value = new Set(folders.value.map((folder) => folder.id))
await loadArchivedLists()
void preloadCountdowns()
await loadAll()
}
} catch {
@@ -237,6 +238,7 @@ async function submitAuth() {
navigationLoaded.value = true
activeList.value = data.inbox_id || lists.value.find((item: TaskList) => item.is_inbox)?.id || lists.value[0]?.id || ''
expandedFolders.value = new Set(folders.value.map((folder) => folder.id))
void preloadCountdowns()
await loadAll()
} catch (reason) { fail(reason) }
}
@@ -279,6 +281,14 @@ async function loadNavigation(force = false) {
expandedFolders.value = new Set(folders.value.map((folder) => folder.id))
await loadArchivedLists()
}
async function preloadCountdowns() {
try {
const active = await api('/countdowns')
writeCountdownCache(active ?? [], [])
const archived = await api('/countdowns?archived=true')
writeCountdownCache(active ?? [], archived ?? [])
} catch { /* 倒数日页会在打开时重试 */ }
}
async function loadAll() {
loading.value = true; error.value = ''
try {