diff --git a/src/frontend/src/store.ts b/src/frontend/src/store.ts index 7f1a86e..59fdbef 100644 --- a/src/frontend/src/store.ts +++ b/src/frontend/src/store.ts @@ -435,7 +435,9 @@ export const useStore = create((set, get) => ({ const projRes = await fetch('/api/projects'); if (!projRes.ok) { set({ v2tasks: [], v2tasksLoading: false }); return; } const projData = await projRes.json(); - const allPids = Object.keys(projData.projects || {}).filter(p => !p.startsWith('_')).slice(0, 50); + const allPids = Object.keys(projData.projects || {}).filter(p => !p.startsWith('_') && p !== '_mail').slice(0, 50); + // 确保 _general 在列表中 + if (!allPids.includes('_general') && projData.projects?._general) allPids.unshift('_general'); const allTasks: any[] = []; // 并行请求,每批10个 for (let i = 0; i < allPids.length; i += 10) { @@ -534,12 +536,13 @@ export const useStore = create((set, get) => ({ const data = await api.projects(); set({ projects: data.projects }); const s = get(); - // 如果当前 selectedProjectId 不在项目列表里,重新选择 - if ((!s.selectedProjectId || !(s.selectedProjectId in data.projects)) && s.selectedProjectId !== '' && s.selectedProjectId !== '_general') { + // 如果当前 selectedProjectId 不在项目列表里(且不是全部/一般),重新选择 + if (s.selectedProjectId && s.selectedProjectId !== '' && s.selectedProjectId !== '_general' && !(s.selectedProjectId in data.projects)) { if (Object.keys(data.projects).length > 0) { const firstPid = Object.keys(data.projects)[0]; set({ selectedProjectId: firstPid }); setApiProjectId(firstPid); + try { localStorage.setItem('selectedProjectId', firstPid); } catch {} } } } catch {