year 3 недель назад
Родитель
Сommit
6a8bc14038
2 измененных файлов с 13 добавлено и 0 удалено
  1. 5 0
      src/app/[locale]/providers.tsx
  2. 8 0
      src/stores/useUserInfoStore.ts

+ 5 - 0
src/app/[locale]/providers.tsx

@@ -25,6 +25,7 @@ import { getToken as getUserToken } from "@/utils/Cookies";
 
 import { PollingState, usePollingStore } from "@/stores/usePollingStore";
 import { useSuspensionStore } from "@/stores/useSuspensionStore";
+import { useUserInfoStore } from "@/stores/useUserInfoStore";
 import { useVipStore } from "@/stores/useVipStore";
 import { useWalletStore } from "@/stores/useWalletStore";
 
@@ -402,12 +403,16 @@ export default function SidebarLayout({ children, themeProps }: ProvidersProps)
 
 export const Providers = ({ children, themeProps }: ProvidersProps) => {
     const setupConfig = useSystemStore((state) => state.setupConfig);
+    const getUserInfo = useUserInfoStore((state) => state.getUserInfo);
 
     useDebounceEffect(() => {
         if ("serviceWorker" in navigator) {
             initFirebase();
         }
 
+        if (getUserToken()) {
+            getUserInfo();
+        }
         // 初始化配置
         setupConfig();
         // 初始化字体

+ 8 - 0
src/stores/useUserInfoStore.ts

@@ -1,3 +1,4 @@
+import { userInfoApi } from "@/api/login";
 import { create } from "zustand";
 import { createJSONStorage, devtools, persist } from "zustand/middleware";
 
@@ -8,6 +9,7 @@ interface State {
 interface Action {
     setUserInfo: (lang: State["userInfo"]) => void;
     reset: () => void;
+    getUserInfo: () => void;
 }
 const initialState: State = {
     userInfo: "",
@@ -25,6 +27,12 @@ export const useUserInfoStore = create<State & Action>()(
                     reset: () => {
                         set(initialState);
                     },
+                    async getUserInfo() {
+                        const res = await userInfoApi();
+                        if (res?.data) {
+                            set({ userInfo: res?.data });
+                        }
+                    },
                 };
             },
             {