diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 49e69a2..7bd030a 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -9,7 +9,8 @@ import { ChatService, type MessageResponse } from "./services/chat" import { type Conversation } from "./components/layout/HistorySidebar" import { registerUnauthorizedCallback } from "./services/api" import { Button } from "./components/ui/button" -import { ThemeProvider, useTheme } from "./components/theme-provider" +import { ThemeProvider } from "./components/theme-provider" +import { useTheme } from "./components/theme-context" import { useSilentRefresh } from "./hooks/use-silent-refresh" // --- Auth Context --- @@ -61,6 +62,15 @@ function AppContent() { const [conversations, setConversations] = useState([]) const [threadMessages, setThreadMessages] = useState>({}) + const loadHistory = useCallback(async () => { + try { + const history = await ChatService.listConversations() + setConversations(history) + } catch (err) { + console.error("Failed to load conversation history:", err) + } + }, []) + useEffect(() => { registerUnauthorizedCallback(() => { setIsAuthenticated(false) @@ -89,16 +99,7 @@ function AppContent() { } initAuth() - }, [setIsAuthenticated, setThemeLocal, setUser]) - - const loadHistory = useCallback(async () => { - try { - const history = await ChatService.listConversations() - setConversations(history) - } catch (err) { - console.error("Failed to load conversation history:", err) - } - }, []) + }, [setIsAuthenticated, setThemeLocal, setUser, loadHistory]) const handleAuthSuccess = useCallback(async () => { try { diff --git a/frontend/src/components/theme-provider.tsx b/frontend/src/components/theme-provider.tsx index e928b93..7a516de 100644 --- a/frontend/src/components/theme-provider.tsx +++ b/frontend/src/components/theme-provider.tsx @@ -1,16 +1,6 @@ -import { createContext, useContext, useEffect, useState, useCallback, useMemo } from "react" +import { useEffect, useState, useCallback, useMemo } from "react" import { AuthService } from "@/services/auth" - -export type Theme = "light" | "dark" - -interface ThemeContextType { - theme: Theme - setTheme: (theme: Theme) => void - setThemeLocal: (theme: Theme) => void - toggleTheme: () => void -} - -const ThemeContext = createContext(undefined) +import { type Theme, ThemeContext } from "./theme-context" export function ThemeProvider({ children, @@ -61,11 +51,3 @@ export function ThemeProvider({ ) } - -export const useTheme = () => { - const context = useContext(ThemeContext) - if (context === undefined) { - throw new Error("useTheme must be used within a ThemeProvider") - } - return context -} diff --git a/frontend/src/services/auth.ts b/frontend/src/services/auth.ts index 25d4eb2..449e2cb 100644 --- a/frontend/src/services/auth.ts +++ b/frontend/src/services/auth.ts @@ -1,5 +1,5 @@ import api from "./api" -import type { Theme } from "@/components/theme-provider" +import type { Theme } from "@/components/theme-context" export interface AuthResponse { access_token: string