added auto employeelogout when app in background

This commit is contained in:
jfrye122
2023-04-21 00:08:33 -04:00
parent f3384d4e36
commit 6d5b43cddb

View File

@@ -1,25 +1,21 @@
import { Ionicons } from "@expo/vector-icons"; import React, { useEffect, useRef } from "react";
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 i18n from "i18next";
import moment from "moment"; import moment from "moment";
import React, { useEffect } from "react"; import { AppState } from "react-native";
import { Button } from "react-native-paper"; import { Button } from "react-native-paper";
import { Ionicons } from "@expo/vector-icons";
import { NavigationContainer } from "@react-navigation/native";
import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
import { createNativeStackNavigator } from "@react-navigation/native-stack";
import { logImEXEvent } from "../../firebase/firebase.analytics";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { createStructuredSelector } from "reselect"; import { createStructuredSelector } from "reselect";
import { logImEXEvent } from "../../firebase/firebase.analytics";
import { setCameraJob, setCameraJobId } from "../../redux/app/app.actions"; import { setCameraJob, setCameraJobId } from "../../redux/app/app.actions";
import { import { checkUserSession, emailSignInStart, signOutStart } from "../../redux/user/user.actions";
checkUserSession, import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors";
emailSignInStart, import { employeeSignOut } from "../../redux/employee/employee.actions";
signOutStart,
} from "../../redux/user/user.actions";
import {
selectBodyshop,
selectCurrentUser,
} from "../../redux/user/user.selectors";
import { selectCurrentEmployee } from "../../redux/employee/employee.selectors"; import { selectCurrentEmployee } from "../../redux/employee/employee.selectors";
import ScreenJobDetail from "../screen-job-detail/screen-job-detail.component"; import ScreenJobDetail from "../screen-job-detail/screen-job-detail.component";
@@ -39,15 +35,12 @@ const ActiveJobStack = createNativeStackNavigator();
const MoreStack = createNativeStackNavigator(); const MoreStack = createNativeStackNavigator();
const BottomTabs = createBottomTabNavigator(); const BottomTabs = createBottomTabNavigator();
const MediaBrowserStack = createNativeStackNavigator(); const MediaBrowserStack = createNativeStackNavigator();
//ADDED JF TimeTicketBrowserStack for holding screens
const TimeTicketBrowserStack = createNativeStackNavigator(); const TimeTicketBrowserStack = createNativeStackNavigator();
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop, bodyshop: selectBodyshop,
currentUser: selectCurrentUser, currentUser: selectCurrentUser,
}); });
const mapDispatchToProps = (dispatch) => ({ const mapDispatchToProps = (dispatch) => ({
checkUserSession: () => dispatch(checkUserSession()), checkUserSession: () => dispatch(checkUserSession()),
emailSignInStart: (email, password) => emailSignInStart: (email, password) =>
@@ -56,10 +49,12 @@ const mapDispatchToProps = (dispatch) => ({
setCameraJobId: (id) => dispatch(setCameraJobId(id)), setCameraJobId: (id) => dispatch(setCameraJobId(id)),
setCameraJob: (job) => dispatch(setCameraJob(job)), setCameraJob: (job) => dispatch(setCameraJob(job)),
}); });
const mapStateToProps2 = createStructuredSelector({ const mapStateToProps2 = createStructuredSelector({
currentEmployee: selectCurrentEmployee, currentEmployee: selectCurrentEmployee,
}); });
const mapDispatchToProps2 = (dispatch) => ({
signOut: () => dispatch(employeeSignOut()),
});
const JobsTabNavigator = connect( const JobsTabNavigator = connect(
mapStateToProps, mapStateToProps,
@@ -120,11 +115,29 @@ const MoreStackNavigator = () => (
</MoreStack.Navigator> </MoreStack.Navigator>
); );
//ADDED JF TimeTicketBrowserStackNavigator for navigating the stack //ADDED JF TimeTicketBrowserStackNavigator for navigating the stack and logout on appState background
const TimeTicketBrowserStackNavigator = connect( const TimeTicketBrowserStackNavigator = connect(
mapStateToProps2, mapStateToProps2,
mapDispatchToProps mapDispatchToProps2
)(({ currentEmployee }) => { )(({ currentEmployee, signOut }) => {
const appState = useRef(AppState.currentState);
useEffect(() => {
const subscription = AppState.addEventListener("change", (nextAppState) => {
if (
appState.current.match(/inactive|background/) &&
nextAppState === "active"
) {
// console.log("App has come to the foreground");
signOut();
}
appState.current = nextAppState;
// console.log("AppState", appState.current);
});
return () => {
subscription.remove();
};
}, []);
return ( return (
<TimeTicketBrowserStack.Navigator> <TimeTicketBrowserStack.Navigator>
{currentEmployee === null ? ( {currentEmployee === null ? (
@@ -214,7 +227,6 @@ const BottomTabsNavigator = () => (
/> />
</BottomTabs.Navigator> </BottomTabs.Navigator>
); );
//ADDED JF BottomTabs.Screen named TimeTicketBrowserTab
export function ScreenMainComponent({ export function ScreenMainComponent({
checkUserSession, checkUserSession,