diff --git a/frontend/src/App.js b/frontend/src/App.js index 99177c3..2b5cd4d 100644 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -1,31 +1,16 @@ -import React, { useState, useEffect } from 'react'; +import React from 'react'; import { GeistProvider, CssBaseline, Page, useToasts } from '@geist-ui/core'; import Header from './components/Header'; import MainContent from './components/MainContent'; import { useFileManagement } from './hooks/useFileManagement'; -import { fetchUserSettings, lookupFileByName } from './services/api'; +import { SettingsProvider, useSettings } from './contexts/SettingsContext'; +import { lookupFileByName } from './services/api'; import './App.scss'; -function App() { - const [themeType, setThemeType] = useState('light'); - const [userId, setUserId] = useState(1); - const [settings, setSettings] = useState({ gitEnabled: false }); +function AppContent() { + const { settings, loading } = useSettings(); const { setToast } = useToasts(); - useEffect(() => { - const loadUserSettings = async () => { - try { - const fetchedSettings = await fetchUserSettings(userId); - setSettings(fetchedSettings.settings); - setThemeType(fetchedSettings.settings.theme); - } catch (error) { - console.error('Failed to load user settings:', error); - } - }; - - loadUserSettings(); - }, [userId]); - const { content, files, @@ -39,18 +24,14 @@ function App() { pullLatestChanges, } = useFileManagement(settings.gitEnabled); - const handleThemeChange = (newTheme) => { - setThemeType(newTheme); - }; - const handleLinkClick = async (filename) => { try { const filePaths = await lookupFileByName(filename); if (filePaths.length === 1) { handleFileSelect(filePaths[0]); } else if (filePaths.length > 1) { - setFileOptions(filePaths.map((path) => ({ label: path, value: path }))); - setFileSelectionModalVisible(true); + // Handle multiple file options (you may want to show a modal or dropdown) + console.log('Multiple files found:', filePaths); } else { setToast({ text: `File "${filename}" not found`, type: 'error' }); } @@ -63,11 +44,15 @@ function App() { } }; + if (loading) { + return
Loading...
; + } + return ( - + -
+
+ + + ); +} + export default App; diff --git a/frontend/src/components/Header.js b/frontend/src/components/Header.js index cbac3aa..44d6de5 100644 --- a/frontend/src/components/Header.js +++ b/frontend/src/components/Header.js @@ -2,9 +2,11 @@ import React, { useState } from 'react'; import { Page, Text, User, Button, Spacer } from '@geist-ui/core'; import { Settings as SettingsIcon } from '@geist-ui/icons'; import Settings from './Settings'; +import { useSettings } from '../contexts/SettingsContext'; -const Header = ({ currentTheme, onThemeChange }) => { +const Header = () => { const [settingsVisible, setSettingsVisible] = useState(false); + const { settings } = useSettings(); const openSettings = () => setSettingsVisible(true); const closeSettings = () => setSettingsVisible(false); @@ -16,12 +18,7 @@ const Header = ({ currentTheme, onThemeChange }) => {