From d29e2f34e2bfc763dcbcf45d350e96949d9a403a Mon Sep 17 00:00:00 2001 From: Alexis Leboeuf Date: Thu, 11 Dec 2025 15:56:30 +0100 Subject: [PATCH 1/3] Added fields to Marker info display --- app/(tabs)/mapScreen.tsx | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/app/(tabs)/mapScreen.tsx b/app/(tabs)/mapScreen.tsx index d49992b..9b4371b 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 => ( + + ))} ); From e43811d6f88f0c562b37d30ad5716c6e72f9505f Mon Sep 17 00:00:00 2001 From: Alexis Leboeuf Date: Thu, 11 Dec 2025 21:25:14 +0100 Subject: [PATCH 2/3] Pushing the first elements to work on another machine --- app/(tabs)/home.tsx | 19 +++++++++---------- app/ContextUser.tsx | 27 ++++++++++++++------------ app/_layout.tsx | 46 +++++++++++++++++++++------------------------ 3 files changed, 45 insertions(+), 47 deletions(-) diff --git a/app/(tabs)/home.tsx b/app/(tabs)/home.tsx index 8e60ab6..7d27cc4 100644 --- a/app/(tabs)/home.tsx +++ b/app/(tabs)/home.tsx @@ -6,25 +6,24 @@ import Constants from 'expo-constants'; //pour connaître la taille de la barre import React from 'react'; import { StyleSheet, View } from 'react-native'; import { useChantier } from '../ContextChantier'; - +import { useUser } from '../ContextUser'; export default function Home() { const { chantier, setChantier } = useChantier(); - + const { role } = useUser(); + return( - - - - - - - - + + {role === "chef" && } + {role === "resp" && } + {role === "ouvrier" && ( + + )} 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 ( - - - - - - - - - - - + + + + + + + + + + + + + ); } From 373bd86df43a667717f5f79b25c74d5f5d4a5173 Mon Sep 17 00:00:00 2001 From: Alexis Leboeuf Date: Thu, 11 Dec 2025 21:47:35 +0100 Subject: [PATCH 3/3] Role management done for Home screen --- app/(tabs)/home.tsx | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/(tabs)/home.tsx b/app/(tabs)/home.tsx index 7d27cc4..c1c36fc 100644 --- a/app/(tabs)/home.tsx +++ b/app/(tabs)/home.tsx @@ -18,12 +18,16 @@ export default function Home() { return( - - {role === "chef" && } - {role === "resp" && } - {role === "ouvrier" && ( - + + + + + {role === "chef" && ( + + + )} + {role === "resp"}