Fix: AuthStore import and component props
- Corrected import of `useAuthStore` in `src/App.tsx`, `src/components/avisos/ContaRecorrenteForm.tsx`, and `src/components/avisos/ContasRecorrentesList.tsx`. - Added `children` prop to `ProtectedRoute` and `Layout` components in `src/App.tsx`. - Fixed type error in `src/components/layout/Layout.tsx` related to `Sidebar` props.
This commit is contained in:
parent
ee2273383b
commit
7ba2d39ab0
32
src/App.tsx
32
src/App.tsx
@ -2,7 +2,7 @@
|
|||||||
import { Toaster } from "@/components/ui/sonner";
|
import { Toaster } from "@/components/ui/sonner";
|
||||||
import { TooltipProvider } from "@/components/ui/tooltip";
|
import { TooltipProvider } from "@/components/ui/tooltip";
|
||||||
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
||||||
import { BrowserRouter, Routes, Route } from "react-router-dom";
|
import { BrowserRouter, Routes, Route, Outlet } from "react-router-dom";
|
||||||
import { useEffect } from "react";
|
import { useEffect } from "react";
|
||||||
import { supabase } from "@/integrations/supabase/client";
|
import { supabase } from "@/integrations/supabase/client";
|
||||||
import { useAuthStore } from "@/stores/authStore";
|
import { useAuthStore } from "@/stores/authStore";
|
||||||
@ -63,22 +63,20 @@ function App() {
|
|||||||
<Route path="/email-confirmation" element={<EmailConfirmation />} />
|
<Route path="/email-confirmation" element={<EmailConfirmation />} />
|
||||||
|
|
||||||
{/* Rotas protegidas */}
|
{/* Rotas protegidas */}
|
||||||
<Route element={<ProtectedRoute />}>
|
<Route path="/" element={<ProtectedRoute><Layout><Outlet /></Layout></ProtectedRoute>}>
|
||||||
<Route element={<Layout />}>
|
<Route path="/dashboard" element={<Index />} />
|
||||||
<Route path="/dashboard" element={<Index />} />
|
<Route path="/transacoes" element={<Transacoes />} />
|
||||||
<Route path="/transacoes" element={<Transacoes />} />
|
<Route path="/cartoes" element={<CartoesCredito />} />
|
||||||
<Route path="/cartoes" element={<CartoesCredito />} />
|
<Route path="/configuracoes" element={<Configuracoes />} />
|
||||||
<Route path="/configuracoes" element={<Configuracoes />} />
|
<Route path="/metas" element={<Metas />} />
|
||||||
<Route path="/metas" element={<Metas />} />
|
<Route path="/calendario" element={<Calendario />} />
|
||||||
<Route path="/calendario" element={<Calendario />} />
|
<Route path="/whatsapp" element={<WhatsApp />} />
|
||||||
<Route path="/whatsapp" element={<WhatsApp />} />
|
<Route path="/grupos-whatsapp" element={<GruposWhatsApp />} />
|
||||||
<Route path="/grupos-whatsapp" element={<GruposWhatsApp />} />
|
<Route path="/complete-profile" element={<CompleteProfile />} />
|
||||||
<Route path="/complete-profile" element={<CompleteProfile />} />
|
<Route path="/categorias" element={<Categorias />} />
|
||||||
<Route path="/categorias" element={<Categorias />} />
|
<Route path="/admin/faq" element={<AdminFAQ />} />
|
||||||
<Route path="/admin/faq" element={<AdminFAQ />} />
|
<Route path="/assinatura" element={<Assinatura />} />
|
||||||
<Route path="/assinatura" element={<Assinatura />} />
|
<Route path="/avisos-contas" element={<AvisosContas />} />
|
||||||
<Route path="/avisos-contas" element={<AvisosContas />} />
|
|
||||||
</Route>
|
|
||||||
</Route>
|
</Route>
|
||||||
|
|
||||||
{/* Rota 404 */}
|
{/* Rota 404 */}
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
import { ReactNode, useEffect, useState } from 'react';
|
import { ReactNode, useEffect, useState } from 'react';
|
||||||
import { Navigate, useLocation } from 'react-router-dom';
|
import { Navigate, useLocation } from 'react-router-dom';
|
||||||
import LoadingState from '../whatsapp/LoadingState';
|
import LoadingState from '../whatsapp/LoadingState';
|
||||||
import { authStore } from '@/stores/authStore';
|
import { useAuthStore } from '@/stores/authStore';
|
||||||
import { supabase } from '@/integrations/supabase/client';
|
import { supabase } from '@/integrations/supabase/client';
|
||||||
import { Session } from '@supabase/supabase-js';
|
import { Session } from '@supabase/supabase-js';
|
||||||
import { useProfileCompletion } from '@/hooks/useProfileCompletion';
|
import { useProfileCompletion } from '@/hooks/useProfileCompletion';
|
||||||
@ -16,9 +16,9 @@ const ProtectedRoute = ({ children }: ProtectedRouteProps) => {
|
|||||||
const [isLoading, setIsLoading] = useState(true);
|
const [isLoading, setIsLoading] = useState(true);
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
|
|
||||||
const setLoggedIn = authStore((state) => state.setLoggedIn);
|
const setLoggedIn = useAuthStore((state) => state.setLoggedIn);
|
||||||
const setUser = authStore((state) => state.setUser);
|
const setUser = useAuthStore((state) => state.setUser);
|
||||||
const isProfileComplete = authStore((state) => state.isProfileComplete);
|
const isProfileComplete = useAuthStore((state) => state.isProfileComplete);
|
||||||
|
|
||||||
// Hook para verificar completude do perfil
|
// Hook para verificar completude do perfil
|
||||||
const { isChecking } = useProfileCompletion(session?.user?.email || '');
|
const { isChecking } = useProfileCompletion(session?.user?.email || '');
|
||||||
|
|||||||
@ -58,7 +58,7 @@ export default function Layout({ children, useModernSidebar = true }: LayoutProp
|
|||||||
: 'relative'
|
: 'relative'
|
||||||
}
|
}
|
||||||
`}>
|
`}>
|
||||||
<Sidebar isOpen={sidebarOpen} onClose={handleSidebarClose} />
|
<Sidebar />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Main content */}
|
{/* Main content */}
|
||||||
|
|||||||
@ -4,17 +4,21 @@ import { create } from 'zustand';
|
|||||||
interface AuthState {
|
interface AuthState {
|
||||||
isLoggedIn: boolean;
|
isLoggedIn: boolean;
|
||||||
user: { id: string } | null;
|
user: { id: string } | null;
|
||||||
|
session: any;
|
||||||
isProfileComplete: boolean;
|
isProfileComplete: boolean;
|
||||||
setLoggedIn: (status: boolean) => void;
|
setLoggedIn: (status: boolean) => void;
|
||||||
setUser: (user: { id: string } | null) => void;
|
setUser: (user: { id: string } | null) => void;
|
||||||
|
setSession: (session: any) => void;
|
||||||
setProfileComplete: (complete: boolean) => void;
|
setProfileComplete: (complete: boolean) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const authStore = create<AuthState>((set) => ({
|
export const useAuthStore = create<AuthState>((set) => ({
|
||||||
isLoggedIn: false,
|
isLoggedIn: false,
|
||||||
user: null,
|
user: null,
|
||||||
|
session: null,
|
||||||
isProfileComplete: true, // Default true para não afetar usuários existentes
|
isProfileComplete: true, // Default true para não afetar usuários existentes
|
||||||
setLoggedIn: (status) => set({ isLoggedIn: status }),
|
setLoggedIn: (status) => set({ isLoggedIn: status }),
|
||||||
setUser: (user) => set({ user }),
|
setUser: (user) => set({ user }),
|
||||||
|
setSession: (session) => set({ session }),
|
||||||
setProfileComplete: (complete) => set({ isProfileComplete: complete }),
|
setProfileComplete: (complete) => set({ isProfileComplete: complete }),
|
||||||
}));
|
}));
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user