This commit is contained in:
+13
-5
@@ -35,7 +35,7 @@ const loading = ref(false)
|
||||
const mobileSidebar = ref(false)
|
||||
const mobileDetail = ref(false)
|
||||
const markdownPreview = ref(false)
|
||||
const showCompleted = ref(true)
|
||||
const showCompleted = ref(false)
|
||||
const expandedFolders = ref(new Set<string>())
|
||||
|
||||
const activeName = computed(() => {
|
||||
@@ -70,6 +70,9 @@ watch(query, () => {
|
||||
if (activeView.value === 'trash') return
|
||||
searchTimer = window.setTimeout(() => loadAll(), 250)
|
||||
})
|
||||
watch(showCompleted, () => {
|
||||
if (activeView.value !== 'trash') loadAll()
|
||||
})
|
||||
|
||||
async function api(path: string, options: RequestInit = {}) {
|
||||
const response = await fetch('/api/v1' + path, {
|
||||
@@ -125,12 +128,16 @@ async function loadTaskPages(path: string) {
|
||||
async function loadAll() {
|
||||
loading.value = true; error.value = ''
|
||||
try {
|
||||
const taskPath = query.value ? `/tasks?q=${encodeURIComponent(query.value)}` : '/tasks'
|
||||
const [folderData, listData, tagData, taskData] = await Promise.all([
|
||||
api('/folders'), api('/lists'), api('/tags').catch(() => []), loadTaskPages(taskPath),
|
||||
const [folderData, listData, tagData] = await Promise.all([
|
||||
api('/folders'), api('/lists'), api('/tags').catch(() => []),
|
||||
])
|
||||
folders.value = folderData; lists.value = listData; tags.value = tagData; tasks.value = taskData
|
||||
folders.value = folderData; lists.value = listData; tags.value = tagData
|
||||
activeList.value ||= lists.value.find((item) => item.is_inbox)?.id || lists.value[0]?.id || ''
|
||||
const params = new URLSearchParams()
|
||||
if (query.value) params.set('q', query.value)
|
||||
else if (activeView.value === 'tasks' && activeList.value) params.set('list_id', activeList.value)
|
||||
if (!showCompleted.value && activeView.value !== 'trash') params.set('completed', 'false')
|
||||
tasks.value = await loadTaskPages(`/tasks${params.size ? `?${params}` : ''}`)
|
||||
expandedFolders.value = new Set(folders.value.map((folder) => folder.id))
|
||||
} catch (reason) { fail(reason) } finally { loading.value = false }
|
||||
}
|
||||
@@ -142,6 +149,7 @@ async function switchView(view: View, listId?: string) {
|
||||
if (listId) activeList.value = listId
|
||||
selectedTask.value = null; selectedIds.value = new Set(); mobileSidebar.value = false; mobileDetail.value = false
|
||||
if (view === 'trash') await loadTrash()
|
||||
else await loadAll()
|
||||
}
|
||||
async function addTask() {
|
||||
if (!title.value.trim() || !activeList.value) return
|
||||
|
||||
Reference in New Issue
Block a user