Files
circle-collect/src/navigation/AppNavigator.tsx
T
2025-10-10 13:23:27 +05:30

122 lines
6.2 KiB
TypeScript

import * as React from "react";
import { NavigationContainer } from "@react-navigation/native";
import { createNativeStackNavigator } from "@react-navigation/native-stack";
import LoginScreen from "../screens/LoginScreen";
import OtpVerificationScreen from "../screens/OtpVarificationScreen";
import SplashScreen from "../screens/SplashScreen";
import Profile from "../screens/profile/Profile";
import OrganizerRegisterScreen from "../screens/OrgnizerRagister";
import GroupCreation from "../screens/GroupCreation";
import GroupReview from "../screens/GroupReview";
import BottomTabs from "./BottomTabs";
import BecomeOrg from "../screens/profile/BecomeOrg";
import YourContacts from "../screens/management/YourContacts";
import Transaction from "../screens/profile/Transaction";
import GroupDetails from "../screens/home/user-home/GroupDetails";
import EditGroupScreen from "../screens/management/EditGroupScreen";
import EditBankDetails from "../screens/profile/EditBankDetails";
import ManageJoinedGroup from "../screens/management/ManageJoinedGroup";
import InviteScreen from "../screens/InviteScreen";
import ManagementTabNavigation from "../screens/management/ManagementTabNavigation";
import TransactionsList from "../screens/transaction/TransactionList";
import RandomSelectUserScreen from "../screens/management/RandomSelectUserScreen";
import Notification from "../screens/notification/Notification";
import ManagementScreen from "../screens/management/ManagementScreen";
import { navigationRef } from "../utils/navigationService";
import NotificationRedirection from "../screens/NotificationRedirection";
export type RootStackParamList = {
Splash: undefined;
Login: undefined;
OtpVarify: { mobile: string };
Home: undefined;
OrganizerRegister: undefined;
Profile: undefined;
GroupCreation: undefined;
GroupReview: undefined;
EditGroup: { groupId: string | number };
GroupDetails: { item: object };
BecomeOrg: undefined;
YourContacts: undefined;
Transaction: undefined;
EditBankDetails: { currentBankName: string | null; currentAccountNumber: string | null; currentBranchCode: string | null };
ManageJoinedGroup: { groupId: string | number };
Invite: { groupId: string | number; code: string | number };
ManagementTabs: { groupId: string | number; }
TransactionList: undefined
RandomSelectUserScreen: { groupId: string | number, cycleNumber: number };
Notification: undefined;
NotificationRedirection:{ data: any };
Management:
| { actionTab: "My Groups" }
| { actionTab1: "Joined Groups" }
| { actionTab2: "Requests" }
| { actionTab3: "Your Requests" };
};
const Stack = createNativeStackNavigator<RootStackParamList>();
export default function AppNavigator() {
const linking = {
prefixes: [
"myapp://", // Your custom scheme
"https://your-production-domain.com" // Your website for Universal Links/App Links
],
config: {
screens: {
// Define the route for the InviteScreen
Invite: {
// This path matches the part after the "://" and before the "?"
path: "invite",
// This block tells React Navigation how to handle the query parameters
parse: {
groupId: (groupId: string | number) => `${groupId}`,
code: (code: string | number) => `${code}`,
},
},
// Add deep linking for notification screens
ContributionDetails: "contribution/:contributionId",
GroupDetails: "group/:groupId",
CycleCompleted: "cycle/completed/:groupId/:cycleNumber",
// Add other notification screens as needed
// Add other notification screens as needed
// Other screens in your navigator can be defined here
// e.g., GroupDetails: "group/:id"
},
},
};
return (
<NavigationContainer linking={linking} ref={navigationRef}>
<Stack.Navigator initialRouteName="Splash" >
<Stack.Screen name="Splash" component={SplashScreen} options={{ headerShown: false }} />
<Stack.Screen name="Home" component={BottomTabs} options={{ headerShown: false }} />
<Stack.Screen name="Login" component={LoginScreen} options={{ headerShown: false }} />
<Stack.Screen name="OtpVarify" component={OtpVerificationScreen} options={{ headerShown: false }} />
<Stack.Screen name="OrganizerRegister" component={OrganizerRegisterScreen} options={{ headerShown: false }} />
<Stack.Screen name="Profile" component={Profile} options={{ headerShown: false }} />
<Stack.Screen name="GroupCreation" component={GroupCreation} options={{ headerShown: false }} />
<Stack.Screen name="GroupReview" component={GroupReview} options={{ headerShown: false }} />
<Stack.Screen name="BecomeOrg" component={BecomeOrg} options={{ headerShown: false }} />
<Stack.Screen name="YourContacts" component={YourContacts} options={{ headerShown: false }} />
<Stack.Screen name="Transaction" component={Transaction} options={{ headerShown: false }} />
<Stack.Screen name="GroupDetails" component={GroupDetails} options={{ headerShown: false }} />
<Stack.Screen name="EditGroup" component={EditGroupScreen} options={{ headerShown: false }} />
<Stack.Screen name="EditBankDetails" component={EditBankDetails} options={{ headerShown: false }} />
<Stack.Screen name="ManageJoinedGroup" component={ManageJoinedGroup} options={{ headerShown: false }} />
<Stack.Screen name="Invite" component={InviteScreen} options={{ headerShown: false }} />
<Stack.Screen name="ManagementTabs" component={ManagementTabNavigation} options={{ headerShown: false }} />
<Stack.Screen name="TransactionList" component={TransactionsList} options={{ headerShown: false }} />
<Stack.Screen name="RandomSelectUserScreen" component={RandomSelectUserScreen} options={{ headerShown: false }} />
<Stack.Screen name="Notification" component={Notification} options={{ headerShown: false }} />
<Stack.Screen name="Management" component={ManagementScreen} options={{ headerShown: false }} />
<Stack.Screen name="NotificationRedirection" component={NotificationRedirection} options={{ headerShown: false }} />
</Stack.Navigator>
</NavigationContainer>
);
}