fix(panels): resolve sidebar refresh bugs — getUser→getSession, files double-call, hardcoded IP

- transcriptionStore: replace all supabase.auth.getUser() with getSession() so session
  restoration on page refresh does not race against GoTrue network validation
- CCFilesPanel: remove selectedCabinet from loadCabinets useCallback deps; use
  initialSelectionDone ref to prevent double-call on first mount
- CCTranscriptionPanel: replace hardcoded LAN IP with VITE_API_URL env var

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
This commit is contained in:
2026-05-25 13:41:25 +00:00
co-authored by Claude Sonnet 4.6
parent fb1795fd2b
commit 5284d30f84
3 changed files with 502 additions and 163 deletions
@@ -115,6 +115,7 @@ export const CCFilesPanel: React.FC = () => {
const [breadcrumbs, setBreadcrumbs] = useState<{ id: string | null; name: string }[]>([
{ id: null, name: 'Root' }
]);
const initialSelectionDone = useRef(false);
// Directory upload state
const [selectedFiles, setSelectedFiles] = useState<FileWithPath[]>([]);
@@ -158,13 +159,16 @@ export const CCFilesPanel: React.FC = () => {
const data = await apiFetch('/database/cabinets');
const all = [...(data.owned || []), ...(data.shared || [])];
setCabinets(all);
if (all.length && !selectedCabinet) setSelectedCabinet(all[0].id);
if (all.length && !initialSelectionDone.current) {
initialSelectionDone.current = true;
setSelectedCabinet(all[0].id);
}
} catch (error) {
console.error('Failed to load cabinets:', error);
} finally {
setLoading(false);
}
}, [selectedCabinet, apiFetch]);
}, [apiFetch]);
const loadFiles = useCallback(async (cabinetId: string, page: number = currentPage) => {
if (!cabinetId) return;