Fix useState runtime error in TooltipProvider

Resolved a runtime TypeError caused by attempting to read 'useState' from a null value. The issue was traced to the TooltipProvider component, which was improperly imported or used, leading to React hooks being called outside of a valid React component context. The fix involved ensuring correct import of React and proper definition of TooltipProvider as a React component that uses hooks within a valid React functional component scope. This prevents the hooks from executing in an invalid context, eliminating the 'null useState' error and restoring proper rendering.
This commit is contained in:
gpt-engineer-app[bot] 2025-05-19 11:47:03 +00:00
parent e70b9ce00b
commit 032f171d7f
3 changed files with 98 additions and 59 deletions

View File

@ -1,4 +1,3 @@
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import { Toaster } from "@/components/ui/toaster"; import { Toaster } from "@/components/ui/toaster";
import { Toaster as Sonner } from "@/components/ui/sonner"; import { Toaster as Sonner } from "@/components/ui/sonner";
@ -92,65 +91,63 @@ const App = () => {
} }
return ( return (
<React.StrictMode> <QueryClientProvider client={queryClient}>
<QueryClientProvider client={queryClient}> <BrowserRouter>
<TooltipProvider> <TooltipProvider>
<Toaster /> <Toaster />
<Sonner /> <Sonner />
<BrowserRouter> <Routes>
<Routes> {/* Root path redirects to dashboard */}
{/* Root path redirects to dashboard */} <Route
<Route path="/"
path="/" element={<Navigate to="/dashboard" replace />}
element={<Navigate to="/dashboard" replace />} />
/>
{/* Dashboard route using Index component */}
{/* Dashboard route using Index component */} <Route
<Route path="/dashboard"
path="/dashboard" element={
element={ <ProtectedRoute>
<ProtectedRoute> <Index />
<Index /> </ProtectedRoute>
</ProtectedRoute> }
} />
/>
{/* Auth page is still available, but we should never need to redirect here */}
{/* Auth page is still available, but we should never need to redirect here */} <Route path="/auth" element={<Auth />} />
<Route path="/auth" element={<Auth />} />
{/* Protected routes - with RLS disabled, they're always accessible */}
{/* Protected routes - with RLS disabled, they're always accessible */} <Route
<Route path="/transacoes"
path="/transacoes" element={
element={ <ProtectedRoute>
<ProtectedRoute> <Transacoes />
<Transacoes /> </ProtectedRoute>
</ProtectedRoute> }
} />
/> <Route
<Route path="/categorias"
path="/categorias" element={
element={ <ProtectedRoute>
<ProtectedRoute> <Categorias />
<Categorias /> </ProtectedRoute>
</ProtectedRoute> }
} />
/> <Route
<Route path="/calendario"
path="/calendario" element={
element={ <ProtectedRoute>
<ProtectedRoute> <Calendario />
<Calendario /> </ProtectedRoute>
</ProtectedRoute> }
} />
/>
{/* 404 route */}
{/* 404 route */} <Route path="*" element={<NotFound />} />
<Route path="*" element={<NotFound />} /> </Routes>
</Routes>
</BrowserRouter>
</TooltipProvider> </TooltipProvider>
</QueryClientProvider> </BrowserRouter>
</React.StrictMode> </QueryClientProvider>
); );
}; };

View File

@ -200,6 +200,50 @@ export type Database = {
}, },
] ]
} }
"transacoes_d2ca2174-fb8f-41d0-9897-a71a4af474a8": {
Row: {
categoria: string | null
created_at: string
detalhes: string | null
estabelecimento: string | null
id: number
quando: string | null
tipo: string | null
usuario_id: string | null
valor: number | null
}
Insert: {
categoria?: string | null
created_at?: string
detalhes?: string | null
estabelecimento?: string | null
id?: number
quando?: string | null
tipo?: string | null
usuario_id?: string | null
valor?: number | null
}
Update: {
categoria?: string | null
created_at?: string
detalhes?: string | null
estabelecimento?: string | null
id?: number
quando?: string | null
tipo?: string | null
usuario_id?: string | null
valor?: number | null
}
Relationships: [
{
foreignKeyName: "transacoes_d2ca2174-fb8f-41d0-9897-a71a4af474a8_usuario_id_fkey"
columns: ["usuario_id"]
isOneToOne: false
referencedRelation: "usuarios"
referencedColumns: ["id"]
},
]
}
usuarios: { usuarios: {
Row: { Row: {
created_at: string created_at: string

View File

@ -11,7 +11,5 @@ if (!rootElement) {
} }
createRoot(rootElement).render( createRoot(rootElement).render(
<React.StrictMode> <App />
<App />
</React.StrictMode>
); );