refactor(GitPanel): clear stale state on project change and improve error handling

This commit is contained in:
Haileyesus
2026-02-12 23:31:17 +03:00
parent c0bc3affb2
commit 4e3dba304c

View File

@@ -53,14 +53,28 @@ function GitPanel({ selectedProject, isMobile, onFileOpen }) {
}, []); }, []);
useEffect(() => { useEffect(() => {
if (selectedProject) { // Clear stale repo-scoped state when project changes.
fetchGitStatus(); setCurrentBranch('');
fetchBranches(); setBranches([]);
fetchRemoteStatus(); setGitStatus(null);
if (activeView === 'history') { setRemoteStatus(null);
fetchRecentCommits(); setSelectedFiles(new Set());
}
if (!selectedProject) {
return;
} }
fetchGitStatus();
fetchBranches();
fetchRemoteStatus();
}, [selectedProject]);
useEffect(() => {
if (!selectedProject || activeView !== 'history') {
return;
}
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([]);
} }
}; };
@@ -1400,4 +1422,4 @@ function GitPanel({ selectedProject, isMobile, onFileOpen }) {
); );
} }
export default GitPanel; export default GitPanel;