Files
address-verification-app/ProtectedRouter.tsx
2022-12-20 14:30:41 +05:30

108 lines
3.5 KiB
TypeScript

import { createNativeStackNavigator } from '@react-navigation/native-stack';
import React from 'react';
import { getUniqueId } from 'react-native-device-info';
import { useSelector } from 'react-redux';
import { _map } from './RN-UI-LIB/src/utlis/common';
import Widget from './src/components/form';
import { setGlobalUserData } from './src/constants/Global';
import data from './src/data/templateData.json';
import RealTemplate from './src/data/RealTemplateData.json';
import { useAppDispatch } from './src/hooks';
import { setDeviceId } from './src/reducer/userSlice';
import AllCasesMain from './src/screens/allCases';
import CaseDetails from './src/screens/caseDetails/CaseDetails';
import Login from './src/screens/login';
import OtpInput from './src/screens/login/OtpInput';
import TodoList from './src/screens/todoList/TodoList';
import { RootState } from './src/store/store';
const Stack = createNativeStackNavigator();
const LoginScreen = () => <Login />;
const OTPScreen = () => <OtpInput />;
// const HomeScreen = () => (
// <View style={{flex: 1, alignItems: 'center', justifyContent: 'center'}}>
// <SafeAreaView>
// <RenderingEngine data={data} userData={userData} />
// </SafeAreaView>
// </View>
// );
const ProtectedRouter = () => {
const user = useSelector(
(state: RootState) => state.user,
);
const {isLoggedIn, deviceId, sessionDetails} = user;
// for setting user token in global.ts for api calling's
setGlobalUserData(sessionDetails?.sessionToken);
const dispatch = useAppDispatch();
if (!deviceId) {
getUniqueId().then(id => dispatch(setDeviceId(id)));
}
return (
<Stack.Navigator>
{isLoggedIn ? (
<>
<Stack.Screen
name="Home"
component={AllCasesMain}
options={{
header: () => null,
}}
/>
<Stack.Screen
name="caseDetail"
component={CaseDetails}
options={{
header: () => null,
}}
/>
{_map(RealTemplate.widget, key => (
<Stack.Screen
key={key}
name={key}
component={Widget}
options={{
header: () => null,
}}
/>
))}
<Stack.Screen
name="TodoList"
component={TodoList}
options={{
header: () => null,
}}
/>
</>
) : (
<>
<Stack.Screen
name="Login"
component={LoginScreen}
options={{
header: () => null,
}}
/>
<Stack.Screen
name="OTP"
component={OTPScreen}
options={{
header: () => null,
}}
/>
</>
)}
</Stack.Navigator>
);
};
export default ProtectedRouter;