import { Redirect, Tabs, useRouter } from "expo-router"; import { Boxes, Container, Home, LogOut, Logs, Rows4, Settings, } from "lucide-react-native"; import { Alert } from "react-native"; import { useAppStore } from "../../hooks/useAppStore"; import { useMobileAuthStore } from "../../hooks/useMobileAuth"; // const roles = { // adminOnly: ["admin"], // management: ["admin", "manager"], // allStaff: ["admin", "manager", "driver", "lead", "user"], // }; export default function TabsLayout() { const serverPort = useAppStore((s) => s.serverPort); const user = useMobileAuthStore((s) => s.user); const isUnlocked = useMobileAuthStore((s) => s.isUnlocked); const logoutScanner = useMobileAuthStore((s) => s.logout); const router = useRouter(); const port = parseInt(serverPort || "0", 10) >= 50000; if (!port) { if (!user || !isUnlocked) { return ; } } const isNormalScanner = parseInt(serverPort || "0", 10) >= 50000; const hasRole = (allowed: string[] = []) => { const role = user?.role?.toLowerCase(); return role ? allowed.includes(role) : false; }; const logout = async () => { try { // optional confirm Alert.alert("Logout", "Are you sure?", [ { text: "Cancel", style: "cancel" }, { text: "Logout", style: "destructive", onPress: async () => { // clear auth/session logoutScanner(); router.replace("/(tabs)/scanner"); // clear zustand/session stuff //useAuthStore.getState().reset(); // maybe clear async storage too // await AsyncStorage.clear(); }, }, ]); } catch (err) { console.error(err); } }; return ( , // header: ({ route }) => { // const version = serverVersion?.versionCode; // const hasUpdate = version && version > build; // if (!hasUpdate) return null; // 👈 hides header completely // return ; // }, }} /> , }} /> , }} /> ( ), }} /> , }} /> {/* = 50000 ? null : "/(tabs)/logs", }} /> */} ( ), }} /> , }} listeners={{ tabPress: (e) => { // stop navigation e.preventDefault(); // run logout logic logout(); }, }} /> ); }