u
This commit is contained in:
1 parent
6277fb2f9e
commit
8ecac0d7dd
270 files changed
+40438
-529
No files matched your search
@@ -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()
|
||||
},
|
||||
}))
|
||||
Reference in new issue
Block a user