@@ -20,7 +20,7 @@ import {
2020 WeatherSunnyRegular ,
2121} from "@fluentui/react-icons" ;
2222
23- import { ChatProvider , WorkspaceProvider } from "./context" ;
23+ import { AppProvider , ChatProvider , WorkspaceProvider , useApp } from "./context" ;
2424import {
2525 ChatPanel ,
2626 CollapsibleSidebar ,
@@ -41,14 +41,9 @@ const AppContent: React.FC<AppContentProps> = ({
4141 onToggleTheme,
4242} ) => {
4343 const styles = useStyles ( ) ;
44+ const { state, closeFile } = useApp ( ) ;
4445
4546 const [ isHealthy , setIsHealthy ] = useState < boolean | null > ( null ) ;
46- const [ showJobPanel , setShowJobPanel ] = useState ( false ) ;
47- const [ selectedWorkspaceForJobs , setSelectedWorkspaceForJobs ] = useState < string | null > ( null ) ;
48- const [ selectedFile , setSelectedFile ] = useState < {
49- workspaceId : string ;
50- fileName : string ;
51- } | null > ( null ) ;
5247
5348 // Check API health on mount
5449 useEffect ( ( ) => {
@@ -90,20 +85,28 @@ const AppContent: React.FC<AppContentProps> = ({
9085 ) ;
9186 } ;
9287
93- const handleWorkspaceSelect = ( workspaceId : string , fileName : string ) => {
94- setSelectedFile ( { workspaceId, fileName } ) ;
95- setShowJobPanel ( false ) ;
96- setSelectedWorkspaceForJobs ( null ) ;
97- } ;
98-
99- const handleJobsClick = ( workspaceId : string ) => {
100- setSelectedWorkspaceForJobs ( workspaceId ) ;
101- setShowJobPanel ( true ) ;
102- setSelectedFile ( null ) ;
103- } ;
104-
105- const handleCloseFile = ( ) => {
106- setSelectedFile ( null ) ;
88+ const renderContent = ( ) => {
89+ switch ( state . currentView ) {
90+ case "file" :
91+ return state . selectedFile ? (
92+ < WorkspaceFileViewer
93+ workspaceId = { state . selectedFile . workspaceId }
94+ fileName = { state . selectedFile . fileName }
95+ onClose = { closeFile }
96+ />
97+ ) : (
98+ < ChatPanel />
99+ ) ;
100+ case "jobs" :
101+ return (
102+ < JobExecutionPanel
103+ workspaceId = { state . selectedWorkspaceForJobs || undefined }
104+ />
105+ ) ;
106+ case "chat" :
107+ default :
108+ return < ChatPanel /> ;
109+ }
107110 } ;
108111
109112 return (
@@ -135,25 +138,10 @@ const AppContent: React.FC<AppContentProps> = ({
135138 { /* Main Content */ }
136139 < div className = { styles . mainContainer } >
137140 { /* Collapsible Sidebar */ }
138- < CollapsibleSidebar
139- onWorkspaceSelect = { handleWorkspaceSelect }
140- onJobsClick = { handleJobsClick }
141- />
141+ < CollapsibleSidebar />
142142
143143 { /* Content Area */ }
144- < main className = { styles . content } >
145- { selectedFile ? (
146- < WorkspaceFileViewer
147- workspaceId = { selectedFile . workspaceId }
148- fileName = { selectedFile . fileName }
149- onClose = { handleCloseFile }
150- />
151- ) : showJobPanel ? (
152- < JobExecutionPanel workspaceId = { selectedWorkspaceForJobs || undefined } />
153- ) : (
154- < ChatPanel />
155- ) }
156- </ main >
144+ < main className = { styles . content } > { renderContent ( ) } </ main >
157145 </ div >
158146 </ div >
159147 ) ;
@@ -177,11 +165,13 @@ const App: React.FC = () => {
177165
178166 return (
179167 < FluentProvider theme = { isDarkMode ? webDarkTheme : webLightTheme } >
180- < WorkspaceProvider >
181- < ChatProvider >
182- < AppContent isDarkMode = { isDarkMode } onToggleTheme = { toggleTheme } />
183- </ ChatProvider >
184- </ WorkspaceProvider >
168+ < AppProvider >
169+ < WorkspaceProvider >
170+ < ChatProvider >
171+ < AppContent isDarkMode = { isDarkMode } onToggleTheme = { toggleTheme } />
172+ </ ChatProvider >
173+ </ WorkspaceProvider >
174+ </ AppProvider >
185175 </ FluentProvider >
186176 ) ;
187177} ;
0 commit comments