diff --git a/app/(tabs)/home.tsx b/app/(tabs)/home.tsx index de104ae..804cd25 100644 --- a/app/(tabs)/home.tsx +++ b/app/(tabs)/home.tsx @@ -8,25 +8,31 @@ import { StyleSheet, View,Text } from 'react-native'; import { useChantier } from '../ContextChantier'; import Anomaly from '@/components/anomaly'; +import { useUser } from '../ContextUser'; export default function Home() { const { chantier, setChantier } = useChantier(); - + const { role } = useUser(); + return( - - - - + + {role === "chef" && ( + + + + )} + {role === "resp"} + ) diff --git a/app/(tabs)/mapScreen.tsx b/app/(tabs)/mapScreen.tsx index 42315e1..a9a8f54 100644 --- a/app/(tabs)/mapScreen.tsx +++ b/app/(tabs)/mapScreen.tsx @@ -42,12 +42,15 @@ const region = { style={styles.map} region={region} > - {chantiers.map(chantier => ( - - ))} + {Array.isArray(chantiers) && + chantiers.map(chantier => ( + + ))} ); diff --git a/app/ContextUser.tsx b/app/ContextUser.tsx index c755826..f0954e5 100644 --- a/app/ContextUser.tsx +++ b/app/ContextUser.tsx @@ -1,9 +1,11 @@ -import { User } from "@/class/class"; +import { User as FirebaseUser } from "firebase/auth"; import { createContext, ReactNode, useContext, useMemo, useState } from "react"; type UserContextType = { - user: User[]; - setUser: (list: User[]) => void; + user: FirebaseUser | null; + role: string | null; + setUser: (user: FirebaseUser | null) => void; + setRole: (role: string | null) => void; }; const UserContext = createContext(null); @@ -13,21 +15,22 @@ type UserProviderProps = { }; export const UserProvider = ({ children }: UserProviderProps) => { - const [user, setUser] = useState([]); - - const value = useMemo(() => ({ user, setUser }), [user]); - - return ( - - {children} - + const [user, setUser] = useState(null); + const [role, setRole] = useState(null); + + const value = useMemo( + () => ({ user, role, setUser, setRole }), + [user, role] ); + + return {children}; }; export const useUser = () => { const context = useContext(UserContext); + if (!context) { throw new Error("useUser doit ĂȘtre utilisĂ© dans "); } return context; -}; \ No newline at end of file +}; diff --git a/app/_layout.tsx b/app/_layout.tsx index a5e1bc2..4f98442 100644 --- a/app/_layout.tsx +++ b/app/_layout.tsx @@ -14,6 +14,7 @@ import { auth, db } from "../firebase_config"; import { Platform, UIManager } from 'react-native'; import { ChantierProvider } from "./ContextChantier"; +import { UserProvider } from "./ContextUser"; export const unstable_settings = { @@ -29,8 +30,9 @@ export default function RootLayout() { useEffect(() => { const unsubscribe = onAuthStateChanged(auth, async (currentUser) => { if (!currentUser) { - router.replace("/login/login"); setUser(null); + setUserRole(null); + router.replace("/login/login"); return; } @@ -40,40 +42,34 @@ export default function RootLayout() { if (!userDoc.exists()) { router.replace("/login/login"); setUser(null); + setUserRole(null); return; } const { role } = userDoc.data(); setUser(currentUser); setUserRole(role); - - if (role === "chef") { - router.replace("/(tabs)"); - } else if (role === "resp") { - router.replace("/(tabs)"); - } else if (role === "ouvrier") { - router.replace("/(tabs)"); - } else { - router.replace("/login/login"); - } + router.replace("/(tabs)/home"); }); return unsubscribe; }, []); return ( - - - - - - - - - - - + + + + + + + + + + + + + ); }