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.
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([]);
} }
}; };