11import { useState , useEffect } from "react" ;
22import App from "../App" ;
33import { LoadingScreen } from "./LoadingScreen" ;
4- import { useProjectManagement } from "../hooks/useProjectManagement" ;
54import { useWorkspaceStoreRaw } from "../stores/WorkspaceStore" ;
65import { useGitStatusStoreRaw } from "../stores/GitStatusStore" ;
76import { usePersistedState } from "../hooks/usePersistedState" ;
87import type { WorkspaceSelection } from "./ProjectSidebar" ;
98import { AppProvider } from "../contexts/AppContext" ;
9+ import { ProjectProvider , useProjectContext } from "../contexts/ProjectContext" ;
1010import { WorkspaceProvider , useWorkspaceContext } from "../contexts/WorkspaceContext" ;
1111
1212/**
@@ -20,27 +20,32 @@ import { WorkspaceProvider, useWorkspaceContext } from "../contexts/WorkspaceCon
2020 * the need for conditional guards in effects.
2121 */
2222export function AppLoader ( ) {
23+ return (
24+ < ProjectProvider >
25+ < AppLoaderMiddle />
26+ </ ProjectProvider >
27+ ) ;
28+ }
29+
30+ function AppLoaderMiddle ( ) {
2331 // Workspace selection - restored from localStorage immediately
2432 const [ selectedWorkspace , setSelectedWorkspace ] = usePersistedState < WorkspaceSelection | null > (
2533 "selectedWorkspace" ,
2634 null
2735 ) ;
2836
29- // Load projects
30- const projectManagement = useProjectManagement ( ) ;
37+ const { refreshProjects } = useProjectContext ( ) ;
3138
3239 // Render App with WorkspaceProvider wrapping it
3340 return (
3441 < WorkspaceProvider
3542 selectedWorkspace = { selectedWorkspace }
3643 onSelectedWorkspaceUpdate = { setSelectedWorkspace }
37- onProjectsUpdate = { projectManagement . setProjects }
44+ onProjectsUpdate = { ( ) => {
45+ void refreshProjects ( ) ;
46+ } }
3847 >
3948 < AppLoaderInner
40- projects = { projectManagement . projects }
41- setProjects = { projectManagement . setProjects }
42- addProject = { projectManagement . addProject }
43- removeProject = { projectManagement . removeProject }
4449 selectedWorkspace = { selectedWorkspace }
4550 setSelectedWorkspace = { setSelectedWorkspace }
4651 />
@@ -52,10 +57,6 @@ export function AppLoader() {
5257 * Inner component that has access to WorkspaceContext
5358 */
5459function AppLoaderInner ( props : {
55- projects : ReturnType < typeof useProjectManagement > [ "projects" ] ;
56- setProjects : ReturnType < typeof useProjectManagement > [ "setProjects" ] ;
57- addProject : ReturnType < typeof useProjectManagement > [ "addProject" ] ;
58- removeProject : ReturnType < typeof useProjectManagement > [ "removeProject" ] ;
5960 selectedWorkspace : WorkspaceSelection | null ;
6061 setSelectedWorkspace : ( workspace : WorkspaceSelection | null ) => void ;
6162} ) {
@@ -164,10 +165,6 @@ function AppLoaderInner(props: {
164165 // Render App with all initialized data via context
165166 return (
166167 < AppProvider
167- projects = { props . projects }
168- setProjects = { props . setProjects }
169- addProject = { props . addProject }
170- removeProject = { props . removeProject }
171168 workspaceMetadata = { workspaceContext . workspaceMetadata }
172169 setWorkspaceMetadata = { workspaceContext . setWorkspaceMetadata }
173170 createWorkspace = { workspaceContext . createWorkspace }
0 commit comments