import { create } from 'zustand' import { enterDefaultSpaceApi } from '@/request/api/space' import { getUserSpaceApi } from '@/request/api/user' 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 reset: () => void } export const useAppStore = create((set, get) => ({ ready: false, setReady: (v: boolean) => set({ ready: v }), init: async () => { if (get().ready) return const userStore = useUserStore.getState() const navStore = useNavStore.getState() const moneyCategoryStore = useMoneyCategoryStore.getState() const spaceStore = useSpaceStore.getState() // 如果没登录,跳转到登录页,但不退出初始化 if (!userStore.isLoggedIn()) { navStore.navigateToAuth() return } try { // 1️⃣ 初始化默认空间(如果用户当前没选中空间) if (!spaceStore.inSpace()) { const res = await enterDefaultSpaceApi() if (res.isSuccess) { if (res.data.space_id === 0) { // 跳转到空间管理页面 } spaceStore.setCurrentSpace(res.data) } } // 2️⃣ 初始化分类 await moneyCategoryStore.init() } catch (err) { console.error('App init error:', err) } finally { // 5️⃣ 初始化完成 set({ ready: true }) } }, reset: () => { set({ ready: false }) useMoneyCategoryStore.getState().clear() useUserStore.getState().clear() useSpaceStore.getState().clear() }, }))