import { Ionicons } from "@expo/vector-icons"; import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; import { NavigationContainer } from "@react-navigation/native"; import { createNativeStackNavigator } from "@react-navigation/native-stack"; import i18n from "i18next"; import moment from "moment"; import React, { useEffect } from "react"; import { Button } from "react-native-paper"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; import { logImEXEvent } from "../../firebase/firebase.analytics"; import { setCameraJob, setCameraJobId } from "../../redux/app/app.actions"; import { checkUserSession, emailSignInStart, signOutStart, } from "../../redux/user/user.actions"; import { selectBodyshop, selectCurrentUser, } from "../../redux/user/user.selectors"; import ScreenJobDetail from "../screen-job-detail/screen-job-detail.component"; import ScreenJobList from "../screen-job-list/screen-job-list.component"; import ScreenMediaBrowser from "../screen-media-browser/screen-media-browser.component"; import ScreenSettingsComponent from "../screen-settings/screen-settings.component"; import ScreenSignIn from "../screen-sign-in/screen-sign-in.component"; import ScreenSplash from "../screen-splash/screen-splash.component"; const ActiveJobStack = createNativeStackNavigator(); const MoreStack = createNativeStackNavigator(); const BottomTabs = createBottomTabNavigator(); const MediaBrowserStack = createNativeStackNavigator(); const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, currentUser: selectCurrentUser, }); const mapDispatchToProps = (dispatch) => ({ checkUserSession: () => dispatch(checkUserSession()), emailSignInStart: (email, password) => dispatch(emailSignInStart({ email, password })), signOutStart: () => dispatch(signOutStart()), setCameraJobId: (id) => dispatch(setCameraJobId(id)), setCameraJob: (job) => dispatch(setCameraJob(job)), }); const JobsTabNavigator = connect( mapStateToProps, mapDispatchToProps )(({ setCameraJobId, setCameraJob }) => ( ({ title: i18n.t("joblist.labels.activejobs"), })} component={ScreenJobList} /> ({ title: (route.params && route.params.title) || i18n.t("joblist.labels.detail"), // eslint-disable-next-line react/display-name headerRight: () => ( ), })} /> )); const MediaBrowserStackNavigator = () => ( ); const MoreStackNavigator = () => ( ); const BottomTabsNavigator = () => ( ({ // eslint-disable-next-line react/display-name tabBarIcon: ({ color, size }) => { let iconName; if (route.name === "JobTab") { iconName = "list"; } else if (route.name === "MoreTab") { iconName = "settings"; } else if (route.name === "MediaBrowserTab") { iconName = "camera"; } else { //iconName = "customerservice"; } return ; }, })} > ); export function ScreenMainComponent({ checkUserSession, currentUser, bodyshop, }) { useEffect(() => { checkUserSession(); }, [checkUserSession]); return ( {currentUser.authorized === null ? ( ) : currentUser.authorized ? ( bodyshop ? ( HasAccess(bodyshop) ? ( ) : ( ) ) : ( ) ) : ( )} ); } export default connect( mapStateToProps, mapDispatchToProps )(ScreenMainComponent); function HasAccess({ features }) { if (features.mobile === undefined || features.mobile === true) return true; if (features.mobile === false) return false; const d = moment(moment(features.mobile)); if (d.isValid()) return d.isAfter(moment()); }