122 lines
6.2 KiB
TypeScript
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>
|
|
);
|
|
}
|