mirror of
https://github.com/siteboon/claudecodeui.git
synced 2026-02-14 20:57:32 +00:00
refactor(GitPanel): clear stale state on project change and improve error handling
This commit is contained in:
@@ -53,14 +53,28 @@ function GitPanel({ selectedProject, isMobile, onFileOpen }) {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (selectedProject) {
|
// Clear stale repo-scoped state when project changes.
|
||||||
|
setCurrentBranch('');
|
||||||
|
setBranches([]);
|
||||||
|
setGitStatus(null);
|
||||||
|
setRemoteStatus(null);
|
||||||
|
setSelectedFiles(new Set());
|
||||||
|
|
||||||
|
if (!selectedProject) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
fetchGitStatus();
|
fetchGitStatus();
|
||||||
fetchBranches();
|
fetchBranches();
|
||||||
fetchRemoteStatus();
|
fetchRemoteStatus();
|
||||||
if (activeView === 'history') {
|
}, [selectedProject]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!selectedProject || activeView !== 'history') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
fetchRecentCommits();
|
fetchRecentCommits();
|
||||||
}
|
|
||||||
}
|
|
||||||
}, [selectedProject, activeView]);
|
}, [selectedProject, activeView]);
|
||||||
|
|
||||||
// Handle click outside dropdown
|
// Handle click outside dropdown
|
||||||
@@ -88,6 +102,8 @@ function GitPanel({ selectedProject, isMobile, onFileOpen }) {
|
|||||||
if (data.error) {
|
if (data.error) {
|
||||||
console.error('Git status error:', data.error);
|
console.error('Git status error:', data.error);
|
||||||
setGitStatus({ error: data.error, details: data.details });
|
setGitStatus({ error: data.error, details: data.details });
|
||||||
|
setCurrentBranch('');
|
||||||
|
setSelectedFiles(new Set());
|
||||||
} else {
|
} else {
|
||||||
setGitStatus(data);
|
setGitStatus(data);
|
||||||
setCurrentBranch(data.branch || 'main');
|
setCurrentBranch(data.branch || 'main');
|
||||||
@@ -117,6 +133,9 @@ function GitPanel({ selectedProject, isMobile, onFileOpen }) {
|
|||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error fetching git status:', error);
|
console.error('Error fetching git status:', error);
|
||||||
|
setGitStatus({ error: 'Git operation failed', details: String(error) });
|
||||||
|
setCurrentBranch('');
|
||||||
|
setSelectedFiles(new Set());
|
||||||
} finally {
|
} finally {
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
}
|
}
|
||||||
@@ -129,9 +148,12 @@ function GitPanel({ selectedProject, isMobile, onFileOpen }) {
|
|||||||
|
|
||||||
if (!data.error && data.branches) {
|
if (!data.error && data.branches) {
|
||||||
setBranches(data.branches);
|
setBranches(data.branches);
|
||||||
|
} else {
|
||||||
|
setBranches([]);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error fetching branches:', error);
|
console.error('Error fetching branches:', error);
|
||||||
|
setBranches([]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user