From 1c59f8da4fc3a6d6d0e74ed050478417d0226e2d Mon Sep 17 00:00:00 2001 From: LordMathis Date: Tue, 22 Oct 2024 00:11:03 +0200 Subject: [PATCH] Fix file list loading --- backend/internal/filesystem/filesystem.go | 2 +- frontend/src/contexts/WorkspaceContext.js | 29 +++++++++++++---------- frontend/src/hooks/useFileList.js | 9 +++---- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/backend/internal/filesystem/filesystem.go b/backend/internal/filesystem/filesystem.go index c507293..6e01536 100644 --- a/backend/internal/filesystem/filesystem.go +++ b/backend/internal/filesystem/filesystem.go @@ -82,7 +82,7 @@ func (fs *FileSystem) walkDirectory(dir, prefix string) ([]FileNode, error) { return nil, err } - var nodes []FileNode + nodes := make([]FileNode, 0) for _, entry := range entries { name := entry.Name() path := filepath.Join(prefix, name) diff --git a/frontend/src/contexts/WorkspaceContext.js b/frontend/src/contexts/WorkspaceContext.js index 41b4e46..5531109 100644 --- a/frontend/src/contexts/WorkspaceContext.js +++ b/frontend/src/contexts/WorkspaceContext.js @@ -7,9 +7,10 @@ import React, { } from 'react'; import { useMantineColorScheme } from '@mantine/core'; import { - fetchLastWorkspace, + fetchLastWorkspaceId, fetchWorkspaceSettings, saveWorkspaceSettings, + getWorkspace, } from '../services/api'; import { DEFAULT_SETTINGS } from '../utils/constants'; @@ -22,25 +23,30 @@ export const WorkspaceProvider = ({ children }) => { const { colorScheme, setColorScheme } = useMantineColorScheme(); useEffect(() => { - const loadWorkspaceAndSettings = async () => { + const loadWorkspace = async () => { try { - const workspace = await fetchLastWorkspace(); - setCurrentWorkspace(workspace); - - if (workspace) { - const workspaceSettings = await fetchWorkspaceSettings(workspace.id); + const { lastWorkspaceId } = await fetchLastWorkspaceId(); + if (lastWorkspaceId) { + const workspace = await getWorkspace(lastWorkspaceId); + console.log('Workspace: ', workspace); + setCurrentWorkspace(workspace); + const workspaceSettings = await fetchWorkspaceSettings( + lastWorkspaceId + ); setSettings(workspaceSettings.settings); setColorScheme(workspaceSettings.settings.theme); + } else { + console.warn('No last workspace found'); } } catch (error) { - console.error('Failed to load workspace or settings:', error); + console.error('Failed to initialize workspace:', error); } finally { setLoading(false); } }; - loadWorkspaceAndSettings(); - }, [setColorScheme]); + loadWorkspace(); + }, []); const updateSettings = useCallback( async (newSettings) => { @@ -68,12 +74,11 @@ export const WorkspaceProvider = ({ children }) => { const value = { currentWorkspace, - setCurrentWorkspace, settings, updateSettings, - toggleColorScheme, loading, colorScheme, + toggleColorScheme, }; return ( diff --git a/frontend/src/hooks/useFileList.js b/frontend/src/hooks/useFileList.js index 36171a8..46ca9ec 100644 --- a/frontend/src/hooks/useFileList.js +++ b/frontend/src/hooks/useFileList.js @@ -1,13 +1,13 @@ -import { useState, useCallback } from 'react'; +import { useState, useCallback, useEffect } from 'react'; import { fetchFileList } from '../services/api'; import { useWorkspace } from '../contexts/WorkspaceContext'; export const useFileList = () => { const [files, setFiles] = useState([]); - const { currentWorkspace } = useWorkspace(); + const { currentWorkspace, loading: workspaceLoading } = useWorkspace(); const loadFileList = useCallback(async () => { - if (!currentWorkspace) return; + if (!currentWorkspace || workspaceLoading) return; try { const fileList = await fetchFileList(currentWorkspace.id); @@ -18,8 +18,9 @@ export const useFileList = () => { } } catch (error) { console.error('Failed to load file list:', error); + setFiles([]); } - }, [currentWorkspace]); + }, [currentWorkspace, workspaceLoading]); return { files, loadFileList }; };