This commit is contained in:
oneao committed 2026-01-13 22:18:01 +08:00
1 parent 6277fb2f9e
commit 8ecac0d7dd
270 files changed
+40438 -529

No files matched your search

+60
View File
@@ -0,0 +1,60 @@
import { create } from 'zustand'
import { getUserSpaceApi } from '@/request/api/space/spaceUser'
import { useMoneyCategoryStore } from './moneyCategory'
import { useNavStore } from './navigation'
import { useSpaceStore } from './space'
import { useUserStore } from './user'
interface AppState {
ready: boolean
setReady: (v: boolean) => void
init: () => Promise<void>
reset: () => void
}
export const useAppStore = create<AppState>((set, get) => ({
ready: false,
setReady: (v: boolean) => set({ ready: v }),
init: async () => {
// 如果已经初始化过就不重复执行(除非你手动 setReady(false) 再 init)
if (get().ready)
return
const userStore = useUserStore.getState()
const navStore = useNavStore.getState()
const moneyCategoryStore = useMoneyCategoryStore.getState()
const spaceStore = useSpaceStore.getState()
// 未登录:跳转到登录页,但认为初始化已完成(允许 UI 继续渲染)
if (!userStore.isLoggedIn()) {
navStore.navigateToAuth()
set({ ready: true })
return
}
// 登录状态:执行完整初始化流程
try {
// 分类初始化
await moneyCategoryStore.init()
// 获取空间信息
const res = await getUserSpaceApi({})
spaceStore.setUserSpace(res.data)
}
catch (err) {
console.error('app init error:', err)
}
// 初始化完成
set({ ready: true })
},
reset: () => {
set({ ready: false })
useMoneyCategoryStore.getState().clear()
useUserStore.getState().clear()
useSpaceStore.getState().clear()
},
}))