@@ -24,6 +24,7 @@ export function useGitStatus(activeWorkspace: WorkspaceInfo | null) {
2424 const [ status , setStatus ] = useState < GitStatusState > ( emptyStatus ) ;
2525 const requestIdRef = useRef ( 0 ) ;
2626 const workspaceIdRef = useRef < string | null > ( activeWorkspace ?. id ?? null ) ;
27+ const cachedStatusRef = useRef < Map < string , GitStatusState > > ( new Map ( ) ) ;
2728 const workspaceId = activeWorkspace ?. id ?? null ;
2829
2930 const refresh = useCallback ( ( ) => {
@@ -41,7 +42,9 @@ export function useGitStatus(activeWorkspace: WorkspaceInfo | null) {
4142 ) {
4243 return ;
4344 }
44- setStatus ( { ...data , error : null } ) ;
45+ const nextStatus = { ...data , error : null } ;
46+ setStatus ( nextStatus ) ;
47+ cachedStatusRef . current . set ( workspaceId , nextStatus ) ;
4548 } )
4649 . catch ( ( err ) => {
4750 console . error ( "Failed to load git status" , err ) ;
@@ -51,19 +54,26 @@ export function useGitStatus(activeWorkspace: WorkspaceInfo | null) {
5154 ) {
5255 return ;
5356 }
54- setStatus ( {
57+ const nextStatus = {
5558 ...emptyStatus ,
5659 branchName : "unknown" ,
5760 error : err instanceof Error ? err . message : String ( err ) ,
58- } ) ;
61+ } ;
62+ setStatus ( nextStatus ) ;
63+ cachedStatusRef . current . set ( workspaceId , nextStatus ) ;
5964 } ) ;
6065 } , [ workspaceId ] ) ;
6166
6267 useEffect ( ( ) => {
6368 if ( workspaceIdRef . current !== workspaceId ) {
6469 workspaceIdRef . current = workspaceId ;
6570 requestIdRef . current += 1 ;
66- setStatus ( emptyStatus ) ;
71+ if ( ! workspaceId ) {
72+ setStatus ( emptyStatus ) ;
73+ return ;
74+ }
75+ const cached = cachedStatusRef . current . get ( workspaceId ) ;
76+ setStatus ( cached ?? emptyStatus ) ;
6777 }
6878 } , [ workspaceId ] ) ;
6979
0 commit comments