budget-view-finance/src/App.tsx
gpt-engineer-app[bot] 3a1bc74f34 Fix: Remove WhatsApp instance dependency.
Removed WhatsApp instance connection requirement for group creation. Removed "Reconectar WhatsApp" button. Fixed Google sign-in redirect issue to complete profile and then dashboard. Added password recovery option.
2025-07-02 18:07:51 +00:00

93 lines
3.6 KiB
TypeScript

import { Toaster } from "@/components/ui/sonner";
import { TooltipProvider } from "@/components/ui/tooltip";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { BrowserRouter, Routes, Route, Outlet } from "react-router-dom";
import { useEffect } from "react";
import { supabase } from "@/integrations/supabase/client";
import { useAuthStore } from "@/stores/authStore";
import ProtectedRoute from "@/components/auth/ProtectedRoute";
import Layout from "@/components/layout/Layout";
import ResetPassword from '@/pages/ResetPassword';
// Pages
import Index from "./pages/Index";
import Auth from "./pages/Auth";
import Landing from "./pages/Landing";
import Transacoes from "./pages/Transacoes";
import CartoesCredito from "./pages/CartoesCredito";
import Configuracoes from "./pages/Configuracoes";
import Metas from "./pages/Metas";
import Calendario from "./pages/Calendario";
import WhatsApp from "./pages/WhatsApp";
import GruposWhatsApp from "./pages/GruposWhatsApp";
import EmailConfirmation from "./pages/EmailConfirmation";
import CompleteProfile from "./pages/CompleteProfile";
import NotFound from "./pages/NotFound";
import Categorias from "./pages/Categorias";
import AdminFAQ from "./pages/AdminFAQ";
import Assinatura from "./pages/Assinatura";
import AvisosContas from "./pages/AvisosContas";
const queryClient = new QueryClient();
function App() {
const { setUser, setSession } = useAuthStore();
useEffect(() => {
// Verificar sessão inicial
supabase.auth.getSession().then(({ data: { session } }) => {
setSession(session);
setUser(session?.user ?? null);
});
// Escutar mudanças de autenticação
const {
data: { subscription },
} = supabase.auth.onAuthStateChange((_event, session) => {
setSession(session);
setUser(session?.user ?? null);
});
return () => subscription.unsubscribe();
}, [setUser, setSession]);
return (
<QueryClientProvider client={queryClient}>
<TooltipProvider>
<Toaster />
<BrowserRouter>
<Routes>
{/* Rotas públicas */}
<Route path="/" element={<Landing />} />
<Route path="/auth" element={<Auth />} />
<Route path="/email-confirmation" element={<EmailConfirmation />} />
<Route path="/reset-password" element={<ResetPassword />} />
{/* Rotas protegidas */}
<Route path="/" element={<ProtectedRoute><Layout><Outlet /></Layout></ProtectedRoute>}>
<Route path="/dashboard" element={<Index />} />
<Route path="/transacoes" element={<Transacoes />} />
<Route path="/cartoes" element={<CartoesCredito />} />
<Route path="/configuracoes" element={<Configuracoes />} />
<Route path="/metas" element={<Metas />} />
<Route path="/calendario" element={<Calendario />} />
<Route path="/whatsapp" element={<WhatsApp />} />
<Route path="/grupos-whatsapp" element={<GruposWhatsApp />} />
<Route path="/complete-profile" element={<CompleteProfile />} />
<Route path="/categorias" element={<Categorias />} />
<Route path="/admin/faq" element={<AdminFAQ />} />
<Route path="/assinatura" element={<Assinatura />} />
<Route path="/avisos-contas" element={<AvisosContas />} />
</Route>
{/* Rota 404 */}
<Route path="*" element={<NotFound />} />
</Routes>
</BrowserRouter>
</TooltipProvider>
</QueryClientProvider>
);
}
export default App;