import React from 'react'; import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; import { createNativeStackNavigator } from '@react-navigation/native-stack'; import { TabBarIcon, useTabBarScreenOptions } from './tabBarTheme'; import type { AgentTabParamList, AgentDashboardStackParamList, AgentCustomersStackParamList, AgentCollectionsStackParamList, AgentLoansStackParamList, AgentProfileStackParamList, } from '../modules/agent/navigation/agentNavigationTypes'; import { AGENT_COLLECTIONS_ROUTE_FEATURES, AGENT_CUSTOMERS_ROUTE_FEATURES, AGENT_DASHBOARD_ROUTE_FEATURES, AGENT_LOANS_ROUTE_FEATURES, AGENT_PROFILE_ROUTE_FEATURES, AGENT_TAB_FEATURES, useRouteGuard, } from './featureRoutes'; import AgentDashboardScreen from '../modules/agent/screens/AgentDashboardScreen'; import AgentRouteScreen from '../modules/agent/screens/AgentRouteScreen'; import CustomerListScreen from '../modules/agent/screens/CustomerListScreen'; import CustomerDetailScreen from '../modules/agent/screens/CustomerDetailScreen'; import AddEditCustomerScreen from '../modules/agent/screens/AddEditCustomerScreen'; import CustomerInstallmentHistoryScreen from '../modules/agent/screens/CustomerInstallmentHistoryScreen'; import DailyCollectionScreen from '../modules/agent/screens/DailyCollectionScreen'; import CollectionHistoryScreen from '../modules/agent/screens/CollectionHistoryScreen'; import CollectionReceiptScreen from '../modules/agent/screens/CollectionReceiptScreen'; import AgentLoansScreen from '../modules/agent/screens/AgentLoansScreen'; import CreateLoanRequestScreen from '../modules/agent/screens/CreateLoanRequestScreen'; import AccountOpeningScreen from '../modules/agent/screens/AccountOpeningScreen'; import CommissionDashboardScreen from '../modules/agent/screens/CommissionDashboardScreen'; import AgentProfileScreen from '../modules/agent/screens/AgentProfileScreen'; import SmsHistoryScreen from '../modules/agent/screens/SmsHistoryScreen'; import AgentChangePasswordScreen from '../modules/agent/screens/AgentChangePasswordScreen'; const Tab = createBottomTabNavigator(); const DashboardStack = createNativeStackNavigator(); const DashboardNavigator = () => { const canRoute = useRouteGuard(AGENT_DASHBOARD_ROUTE_FEATURES); return ( {canRoute('AgentDashboardMain') && ( )} {canRoute('AgentRoute') && ( )} ); }; const CustomersStack = createNativeStackNavigator(); const CustomersNavigator = () => { const canRoute = useRouteGuard(AGENT_CUSTOMERS_ROUTE_FEATURES); return ( {canRoute('CustomerList') && ( )} {canRoute('CustomerDetail') && ( )} {canRoute('AddEditCustomer') && ( )} {canRoute('CustomerInstallmentHistory') && ( )} ); }; const CollectionsStack = createNativeStackNavigator(); const CollectionsNavigator = () => { const canRoute = useRouteGuard(AGENT_COLLECTIONS_ROUTE_FEATURES); return ( {canRoute('DailyCollection') && ( )} {canRoute('CollectionHistory') && ( )} {canRoute('CollectionReceipt') && ( )} ); }; const LoansStack = createNativeStackNavigator(); const LoansNavigator = () => { const canRoute = useRouteGuard(AGENT_LOANS_ROUTE_FEATURES); return ( {canRoute('AgentLoansMain') && ( )} {canRoute('CreateLoanRequest') && ( )} {canRoute('AccountOpening') && ( )} {canRoute('CommissionDashboard') && ( )} ); }; const ProfileStack = createNativeStackNavigator(); const ProfileNavigator = () => { const canRoute = useRouteGuard(AGENT_PROFILE_ROUTE_FEATURES); return ( {canRoute('AgentProfileMain') && ( )} {canRoute('SmsHistory') && ( )} {canRoute('AgentChangePassword') && ( )} ); }; export const AgentNavigator = () => { const canRoute = useRouteGuard(AGENT_TAB_FEATURES); const tabBarOptions = useTabBarScreenOptions(); return ( {canRoute('AgentDashboard') && ( , }} /> )} {canRoute('AgentCustomers') && ( , }} /> )} {canRoute('AgentCollections') && ( , }} /> )} {canRoute('AgentLoans') && ( , }} /> )} {canRoute('AgentProfile') && ( , }} /> )} ); };