From a430284aa21e3ae1f0d5654e55b2ad2852519cc2 Mon Sep 17 00:00:00 2001
From: wwf <yearningwang@iqtogether.com>
Date: 星期三, 04 六月 2025 15:17:49 +0800
Subject: [PATCH] 初始化

---
 context/app-context.tsx |   31 ++++++++++++++++++++++++-------
 1 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/context/app-context.tsx b/context/app-context.tsx
index 79cc246..7addfb8 100644
--- a/context/app-context.tsx
+++ b/context/app-context.tsx
@@ -8,13 +8,15 @@
 import Loading from '@/app/components/base/loading'
 import { fetchCurrentWorkspace, fetchLanggeniusVersion, fetchUserProfile, getSystemFeatures } from '@/service/common'
 import type { App } from '@/types/app'
+import { Theme } from '@/types/app'
 import type { ICurrentWorkspace, LangGeniusVersionResponse, UserProfileResponse } from '@/models/common'
 import MaintenanceNotice from '@/app/components/header/maintenance-notice'
 import type { SystemFeatures } from '@/types/feature'
 import { defaultSystemFeatures } from '@/types/feature'
-import { noop } from 'lodash-es'
 
 export type AppContextValue = {
+  theme: Theme
+  setTheme: (theme: Theme) => void
   apps: App[]
   systemFeatures: SystemFeatures
   mutateApps: VoidFunction
@@ -50,18 +52,20 @@
   created_at: 0,
   role: 'normal',
   providers: [],
+  in_trail: true,
 }
 
 const AppContext = createContext<AppContextValue>({
+  theme: Theme.light,
   systemFeatures: defaultSystemFeatures,
+  setTheme: () => { },
   apps: [],
-  mutateApps: noop,
+  mutateApps: () => { },
   userProfile: {
     id: '',
     name: '',
     email: '',
     avatar: '',
-    avatar_url: '',
     is_password_set: false,
   },
   currentWorkspace: initialWorkspaceInfo,
@@ -69,8 +73,8 @@
   isCurrentWorkspaceOwner: false,
   isCurrentWorkspaceEditor: false,
   isCurrentWorkspaceDatasetOperator: false,
-  mutateUserProfile: noop,
-  mutateCurrentWorkspace: noop,
+  mutateUserProfile: () => { },
+  mutateCurrentWorkspace: () => { },
   pageContainerRef: createRef(),
   langeniusVersionInfo: initialLangeniusVersionInfo,
   useSelector,
@@ -123,11 +127,24 @@
       setCurrentWorkspace(currentWorkspaceResponse)
   }, [currentWorkspaceResponse])
 
+  const [theme, setTheme] = useState<Theme>(Theme.light)
+  const handleSetTheme = useCallback((theme: Theme) => {
+    setTheme(theme)
+    globalThis.document.documentElement.setAttribute('data-theme', theme)
+  }, [])
+
+  useEffect(() => {
+    globalThis.document.documentElement.setAttribute('data-theme', theme)
+    // eslint-disable-next-line react-hooks/exhaustive-deps
+  }, [])
+
   if (!appList || !userProfile)
     return <Loading type='app' />
 
   return (
     <AppContext.Provider value={{
+      theme,
+      setTheme: handleSetTheme,
       apps: appList.data,
       systemFeatures: { ...defaultSystemFeatures, ...systemFeatures },
       mutateApps,
@@ -144,9 +161,9 @@
       mutateCurrentWorkspace,
       isLoadingCurrentWorkspace,
     }}>
-      <div className='flex h-full flex-col overflow-y-auto'>
+      <div className='flex flex-col h-full overflow-y-auto'>
         {globalThis.document?.body?.getAttribute('data-public-maintenance-notice') && <MaintenanceNotice />}
-        <div ref={pageContainerRef} className='relative flex grow flex-col overflow-y-auto overflow-x-hidden bg-background-body'>
+        <div ref={pageContainerRef} className='grow relative flex flex-col overflow-y-auto overflow-x-hidden bg-background-body'>
           {children}
         </div>
       </div>

--
Gitblit v1.8.0