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 (
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
);
}