first commit

This commit is contained in:
rodrigo committed 2025-04-10 23:07:21 -03:00
commit c9fb67e751
423 files changed
+53287

No files matched your search

+81
View File
@@ -0,0 +1,81 @@
import { createContext, useContext, useState, useEffect } from "react";
import api from "../services/api";
import { PerfilUsuario } from "../types/usuario";
interface AuthContextData {
isAuthenticated: boolean;
isLoading: boolean;
user: {
id: string;
nome: string;
email: string;
perfil: PerfilUsuario;
} | null;
login: (email: string, password: string) => Promise<void>;
logout: () => void;
}
const AuthContext = createContext<AuthContextData>({} as AuthContextData);
export function AuthProvider({ children }: { children: React.ReactNode }) {
const [isAuthenticated, setIsAuthenticated] = useState(false);
const [isLoading, setIsLoading] = useState(true);
const [user, setUser] = useState(null);
useEffect(() => {
const checkAuth = async () => {
try {
const token = localStorage.getItem("@AdvX:token");
if (token) {
api.defaults.headers.authorization = `Bearer ${token}`;
const response = await api.get("/auth/me");
setUser(response.data);
setIsAuthenticated(true);
}
} catch (error) {
console.error("Erro na autenticação:", error);
localStorage.removeItem("@AdvX:token");
api.defaults.headers.authorization = "";
setUser(null);
} finally {
setIsLoading(false);
}
};
checkAuth();
}, []);
const login = async (email: string, password: string) => {
try {
const response = await api.post("/auth/login", { email, password });
const { token, user: userData } = response.data;
console.log("Login - User data:", userData); // Debug log
localStorage.setItem("@AdvX:token", token);
api.defaults.headers.authorization = `Bearer ${token}`;
setUser(userData);
setIsAuthenticated(true);
} catch (error) {
console.error("Erro ao fazer login:", error);
throw error;
}
};
const logout = () => {
localStorage.removeItem("@AdvX:token");
api.defaults.headers.authorization = "";
setIsAuthenticated(false);
setUser(null);
};
return (
<AuthContext.Provider
value={{ isAuthenticated, isLoading, user, login, logout }}
>
{children}
</AuthContext.Provider>
);
}
export const useAuth = () => useContext(AuthContext);
+70
View File
@@ -0,0 +1,70 @@
import React, { createContext, useContext, useState, useEffect } from "react";
import { useProcessos } from "../hooks/useProcessos";
interface ProcessoContextType {
processo: any;
setProcesso: (processo: any) => void;
refreshProcesso: () => Promise<void>;
isLoading: boolean;
error: string | null;
}
const ProcessoContext = createContext<ProcessoContextType | undefined>(
undefined,
);
export const ProcessoProvider: React.FC<{
children: React.ReactNode;
processoId: string;
}> = ({ children, processoId }) => {
const [processo, setProcesso] = useState<any>(null);
const { getProcesso, isLoading, error } = useProcessos();
useEffect(() => {
const loadProcesso = async () => {
try {
const data = await getProcesso(processoId);
setProcesso(data);
} catch (error) {
console.error("Erro ao carregar processo:", error);
}
};
if (processoId) {
loadProcesso();
}
}, [processoId, getProcesso]);
const refreshProcesso = async () => {
try {
const data = await getProcesso(processoId);
setProcesso(data);
} catch (error) {
console.error("Erro ao atualizar processo:", error);
}
};
return (
<ProcessoContext.Provider
value={{
processo,
setProcesso,
refreshProcesso,
isLoading,
error,
}}
>
{children}
</ProcessoContext.Provider>
);
};
export const useProcessoContext = () => {
const context = useContext(ProcessoContext);
if (!context) {
throw new Error(
"useProcessoContext deve ser usado dentro de um ProcessoProvider",
);
}
return context;
};