correction merge selectChantier
This commit is contained in:
@@ -8,25 +8,30 @@ 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(
|
||||
<ThemedView lvl={3} style={styles.back}>
|
||||
<View style={styles.container}>
|
||||
|
||||
<View style={{width:"100%", position: 'absolute',marginLeft:"50%"}}>
|
||||
<SetStatus></SetStatus>
|
||||
</View>
|
||||
<View style={{width:"100%", position: 'absolute'}}>
|
||||
<SelectChantier></SelectChantier>
|
||||
</View>
|
||||
<ChantierSummary style={styles.summary} data={{chantier}}/>
|
||||
<Anomaly style={styles.anomaly} data={{chantier}}/>
|
||||
{role === "chef" && (
|
||||
<View style={{width:"100%", position: 'absolute',marginLeft:"50%"}}>
|
||||
<SetStatus></SetStatus>
|
||||
</View>
|
||||
)}
|
||||
{role === "resp"}
|
||||
|
||||
</View>
|
||||
</ThemedView>
|
||||
)
|
||||
|
||||
@@ -42,12 +42,15 @@ const region = {
|
||||
style={styles.map}
|
||||
region={region}
|
||||
>
|
||||
{chantiers.map(chantier => (
|
||||
<Marker
|
||||
key={chantier.id}
|
||||
coordinate={{ latitude: chantier.latitude, longitude: chantier.longitude }}
|
||||
/>
|
||||
))}
|
||||
{Array.isArray(chantiers) &&
|
||||
chantiers.map(chantier => (
|
||||
<Marker
|
||||
key = {chantier.id}
|
||||
coordinate={{ latitude: chantier.latitude, longitude: chantier.longitude }}
|
||||
title={chantier.adresse}
|
||||
description={chantier.etat}
|
||||
/>
|
||||
))}
|
||||
</ThemedMapView>
|
||||
</View>
|
||||
);
|
||||
|
||||
@@ -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<UserContextType | null>(null);
|
||||
@@ -13,21 +15,22 @@ type UserProviderProps = {
|
||||
};
|
||||
|
||||
export const UserProvider = ({ children }: UserProviderProps) => {
|
||||
const [user, setUser] = useState<User[]>([]);
|
||||
|
||||
const value = useMemo(() => ({ user, setUser }), [user]);
|
||||
|
||||
return (
|
||||
<UserContext.Provider value={value}>
|
||||
{children}
|
||||
</UserContext.Provider>
|
||||
const [user, setUser] = useState<FirebaseUser | null>(null);
|
||||
const [role, setRole] = useState<string | null>(null);
|
||||
|
||||
const value = useMemo(
|
||||
() => ({ user, role, setUser, setRole }),
|
||||
[user, role]
|
||||
);
|
||||
|
||||
return <UserContext.Provider value={value}>{children}</UserContext.Provider>;
|
||||
};
|
||||
|
||||
export const useUser = () => {
|
||||
const context = useContext(UserContext);
|
||||
|
||||
if (!context) {
|
||||
throw new Error("useUser doit être utilisé dans <UserProvider>");
|
||||
}
|
||||
return context;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -31,8 +31,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;
|
||||
}
|
||||
|
||||
@@ -42,22 +43,14 @@ 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;
|
||||
}, []);
|
||||
|
||||
Reference in New Issue
Block a user