@finspringinnovations/fixeddepositsdk 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/customerApi.js +1 -0
- package/lib/api/fdApi.d.ts +401 -1
- package/lib/api/fdApi.js +24 -2
- package/lib/components/PendingFDBottomSheet.js +27 -18
- package/lib/config/appDataConfig.js +3 -2
- package/lib/config/workflowConstants.d.ts +40 -30
- package/lib/config/workflowConstants.js +35 -24
- package/lib/constants/strings/fd.d.ts +2 -2
- package/lib/constants/strings/fd.js +2 -2
- package/lib/navigation/RootNavigator.js +167 -196
- package/lib/navigation/types.d.ts +4 -1
- package/lib/navigation/workflowNavigator.d.ts +1 -1
- package/lib/navigation/workflowNavigator.js +107 -26
- package/lib/screens/AadhaarVerification.js +1 -11
- package/lib/screens/AddBankAccount.js +1 -11
- package/lib/screens/BankDetail.js +1 -11
- package/lib/screens/Employee.js +1 -11
- package/lib/screens/FDCalculator.js +2 -12
- package/lib/screens/FDList.js +531 -417
- package/lib/screens/FindIFSC.js +1 -11
- package/lib/screens/NomineeDetail.js +12 -22
- package/lib/screens/PayNow.js +1 -11
- package/lib/screens/Payment.js +2 -11
- package/lib/screens/PaymentStatus.js +24 -21
- package/lib/screens/ReviewKYC.js +3 -12
- package/lib/types/workflowTypes.d.ts +1 -1
- package/package.json +50 -50
- package/src/api/customerApi.ts +1 -0
- package/src/api/fdApi.ts +28 -1
- package/src/components/PendingFDBottomSheet.tsx +151 -123
- package/src/config/appDataConfig.ts +245 -242
- package/src/config/workflowConstants.ts +51 -39
- package/src/constants/strings/bank.ts +80 -80
- package/src/constants/strings/fd.ts +2 -2
- package/src/navigation/RootNavigator.tsx +667 -651
- package/src/navigation/types.ts +4 -1
- package/src/navigation/workflowNavigator.ts +170 -107
- package/src/screens/AadhaarVerification.tsx +1 -15
- package/src/screens/AddBankAccount.tsx +2 -16
- package/src/screens/BankDetail.tsx +1 -15
- package/src/screens/Employee.tsx +1 -15
- package/src/screens/FDCalculator.tsx +4 -18
- package/src/screens/FDList.tsx +2311 -2170
- package/src/screens/FindIFSC.tsx +2 -16
- package/src/screens/NomineeDetail.tsx +762 -775
- package/src/screens/PayNow.tsx +2 -16
- package/src/screens/Payment.tsx +190 -203
- package/src/screens/PaymentStatus.tsx +574 -576
- package/src/screens/ReviewKYC.tsx +2 -15
- package/src/types/workflowTypes.ts +1 -10
|
@@ -36,41 +36,168 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
const react_1 = __importStar(require("react"));
|
|
40
39
|
const stack_1 = require("@react-navigation/stack");
|
|
40
|
+
const react_1 = __importStar(require("react"));
|
|
41
41
|
const react_native_1 = require("react-native");
|
|
42
|
-
const helpers_1 = require("./helpers");
|
|
43
42
|
// Import screens
|
|
44
|
-
const FDList_1 = __importDefault(require("../screens/FDList"));
|
|
45
|
-
const FDCalculator_1 = __importDefault(require("../screens/FDCalculator"));
|
|
46
43
|
const AadhaarVerification_1 = __importDefault(require("../screens/AadhaarVerification"));
|
|
47
|
-
const ReviewKYC_1 = __importDefault(require("../screens/ReviewKYC"));
|
|
48
|
-
const Employee_1 = __importDefault(require("../screens/Employee"));
|
|
49
|
-
const NomineeDetail_1 = __importDefault(require("../screens/NomineeDetail"));
|
|
50
|
-
const BankDetail_1 = __importDefault(require("../screens/BankDetail"));
|
|
51
44
|
const AddBankAccount_1 = __importDefault(require("../screens/AddBankAccount"));
|
|
45
|
+
const BankDetail_1 = __importDefault(require("../screens/BankDetail"));
|
|
46
|
+
const Employee_1 = __importDefault(require("../screens/Employee"));
|
|
47
|
+
const FDCalculator_1 = __importDefault(require("../screens/FDCalculator"));
|
|
48
|
+
const FDList_1 = __importDefault(require("../screens/FDList"));
|
|
52
49
|
const FindIFSC_1 = __importDefault(require("../screens/FindIFSC"));
|
|
50
|
+
const NomineeDetail_1 = __importDefault(require("../screens/NomineeDetail"));
|
|
53
51
|
const PayNow_1 = __importDefault(require("../screens/PayNow"));
|
|
54
52
|
const Payment_1 = __importDefault(require("../screens/Payment"));
|
|
55
53
|
const PaymentStatus_1 = __importDefault(require("../screens/PaymentStatus"));
|
|
54
|
+
const ReviewKYC_1 = __importDefault(require("../screens/ReviewKYC"));
|
|
56
55
|
// Import full SDK navigators and initialization functions
|
|
57
|
-
const shriramfdsdk_1 = require("@finspringinnovations/shriramfdsdk");
|
|
58
56
|
const mahindrafdsdk_1 = require("@finspringinnovations/mahindrafdsdk");
|
|
57
|
+
const shriramfdsdk_1 = require("@finspringinnovations/shriramfdsdk");
|
|
59
58
|
// Import NavigationContainer and tree wrappers
|
|
60
59
|
const native_1 = require("@react-navigation/native");
|
|
61
60
|
// Import navigation helpers
|
|
62
|
-
const helpers_2 = require("./helpers");
|
|
63
61
|
const paymentSession_1 = require("../state/paymentSession");
|
|
62
|
+
const helpers_1 = require("./helpers");
|
|
64
63
|
// Import data getters from fdsdk
|
|
65
64
|
const appDataConfig_1 = require("../config/appDataConfig");
|
|
66
65
|
const MasterDataProvider_1 = require("../providers/MasterDataProvider");
|
|
67
66
|
const ThemeContext_1 = require("../theme/ThemeContext");
|
|
68
67
|
const Stack = (0, stack_1.createStackNavigator)();
|
|
69
68
|
const MahindraRootNavigatorAny = mahindrafdsdk_1.RootNavigator;
|
|
69
|
+
const ShriramSDKContent = ({ masterData, routeParams, onSDKExit, onSDKPanRequired, }) => {
|
|
70
|
+
const { setMasterData } = (0, shriramfdsdk_1.useMasterData)();
|
|
71
|
+
const shriramDispatch = (0, shriramfdsdk_1.useAppDispatch)();
|
|
72
|
+
const [initialized, setInitialized] = react_1.default.useState(false);
|
|
73
|
+
react_1.default.useEffect(() => {
|
|
74
|
+
var _a;
|
|
75
|
+
// Perform all dispatches sequentially to ensure state is ready
|
|
76
|
+
if (masterData) {
|
|
77
|
+
const dataToSet = masterData.data || masterData;
|
|
78
|
+
setMasterData(dataToSet);
|
|
79
|
+
}
|
|
80
|
+
if (routeParams.fdListSelectedData) {
|
|
81
|
+
try {
|
|
82
|
+
shriramDispatch((0, shriramfdsdk_1.setFDListSelected)(routeParams.fdListSelectedData));
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
console.log('[RootNavigator] Error setting Shriram FDListSelected:', e);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (routeParams.onboardingIds) {
|
|
89
|
+
try {
|
|
90
|
+
shriramDispatch((0, shriramfdsdk_1.setOnboardingIds)(Object.assign(Object.assign({}, routeParams.onboardingIds), { providerId: routeParams.providerId || ((_a = routeParams.onboardingIds) === null || _a === void 0 ? void 0 : _a.providerId) })));
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
console.log('[RootNavigator] Error setting Shriram OnboardingIds:', e);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (routeParams.shriramSDKGlobalData) {
|
|
97
|
+
try {
|
|
98
|
+
const completeFDData = !!routeParams.shriramSDKGlobalData;
|
|
99
|
+
(0, shriramfdsdk_1.setGlobalData)({ completeFDData });
|
|
100
|
+
}
|
|
101
|
+
catch (e) {
|
|
102
|
+
console.log('[RootNavigator] Error setting Shriram GlobalData:', e);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
setInitialized(true);
|
|
106
|
+
}, [masterData, routeParams, shriramDispatch, setMasterData]);
|
|
107
|
+
if (!initialized) {
|
|
108
|
+
return null; // Or a loading spinner if preferred
|
|
109
|
+
}
|
|
110
|
+
return (react_1.default.createElement(shriramfdsdk_1.RootNavigator, { config: {
|
|
111
|
+
initialRouteName: routeParams.initialRouteName || 'FDCalculator',
|
|
112
|
+
initialPaymentStatusParams: routeParams.initialPaymentStatusParams,
|
|
113
|
+
initialFDContext: {
|
|
114
|
+
providerId: routeParams.providerId,
|
|
115
|
+
fdListSelectedData: routeParams.fdListSelectedData,
|
|
116
|
+
completeFDData: routeParams.completeFDData,
|
|
117
|
+
},
|
|
118
|
+
}, onExit: onSDKExit, onPanRequired: onSDKPanRequired }));
|
|
119
|
+
};
|
|
120
|
+
const MahindraSDKContent = ({ masterData, routeParams, onSDKExit, onSDKPanRequired, }) => {
|
|
121
|
+
const { setMasterData } = (0, mahindrafdsdk_1.useMasterData)();
|
|
122
|
+
const mahindraDispatch = (0, mahindrafdsdk_1.useAppDispatch)();
|
|
123
|
+
const [initialized, setInitialized] = react_1.default.useState(false);
|
|
124
|
+
react_1.default.useEffect(() => {
|
|
125
|
+
var _a;
|
|
126
|
+
// Perform all dispatches sequentially to ensure state is ready
|
|
127
|
+
if (masterData) {
|
|
128
|
+
const dataToSet = masterData.data || masterData;
|
|
129
|
+
setMasterData(dataToSet);
|
|
130
|
+
}
|
|
131
|
+
if (routeParams.fdListSelectedData) {
|
|
132
|
+
try {
|
|
133
|
+
mahindraDispatch((0, mahindrafdsdk_1.setFDListSelected)(routeParams.fdListSelectedData));
|
|
134
|
+
}
|
|
135
|
+
catch (e) {
|
|
136
|
+
console.log('[RootNavigator] Error setting Mahindra FDListSelected:', e);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (routeParams.onboardingIds) {
|
|
140
|
+
try {
|
|
141
|
+
mahindraDispatch((0, mahindrafdsdk_1.setOnboardingIds)(Object.assign(Object.assign({}, routeParams.onboardingIds), { providerId: routeParams.providerId || ((_a = routeParams.onboardingIds) === null || _a === void 0 ? void 0 : _a.providerId) })));
|
|
142
|
+
}
|
|
143
|
+
catch (e) {
|
|
144
|
+
console.log('[RootNavigator] Error setting Mahindra OnboardingIds:', e);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (routeParams.initialPaymentUrl) {
|
|
148
|
+
(0, mahindrafdsdk_1.setPaymentSession)({
|
|
149
|
+
paymentUrl: routeParams.initialPaymentUrl,
|
|
150
|
+
transactionId: routeParams.initialPaymentTransactionId,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
setInitialized(true);
|
|
154
|
+
}, [masterData, routeParams, mahindraDispatch, setMasterData]);
|
|
155
|
+
if (!initialized) {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
return (react_1.default.createElement(MahindraRootNavigatorAny, { config: {
|
|
159
|
+
initialRouteName: routeParams.initialRouteName || 'FDCalculator',
|
|
160
|
+
forceFetchCustomerDetails: !!routeParams.forceFetchCustomerDetails,
|
|
161
|
+
initialPaymentStatusParams: routeParams.initialPaymentStatusParams,
|
|
162
|
+
initialFDContext: {
|
|
163
|
+
providerId: routeParams.providerId,
|
|
164
|
+
fdListSelectedData: routeParams.fdListSelectedData,
|
|
165
|
+
completeFDData: routeParams.completeFDData,
|
|
166
|
+
},
|
|
167
|
+
}, onExit: onSDKExit, onPanRequired: onSDKPanRequired }));
|
|
168
|
+
};
|
|
70
169
|
const RootNavigator = ({ config = {}, onExit, onPanRequired, }) => {
|
|
71
170
|
// State to track external SDK navigation
|
|
72
171
|
const [externalSDK, setExternalSDK] = react_1.default.useState(null);
|
|
73
172
|
const [externalSDKFDData, setExternalSDKFDData] = react_1.default.useState(null);
|
|
173
|
+
// Stable exit callbacks — defined here so they're memoized across renders
|
|
174
|
+
// and can be passed as stable props to the module-level SDK content components.
|
|
175
|
+
const handleShriramExit = react_1.default.useCallback((fdDetails) => {
|
|
176
|
+
setExternalSDK(null);
|
|
177
|
+
setExternalSDKFDData(null);
|
|
178
|
+
(0, helpers_1.navigate)('FDList');
|
|
179
|
+
if (fdDetails)
|
|
180
|
+
onExit === null || onExit === void 0 ? void 0 : onExit(fdDetails);
|
|
181
|
+
}, [onExit]);
|
|
182
|
+
const handleShriramPanRequired = react_1.default.useCallback(() => {
|
|
183
|
+
setExternalSDK(null);
|
|
184
|
+
setExternalSDKFDData(null);
|
|
185
|
+
onPanRequired === null || onPanRequired === void 0 ? void 0 : onPanRequired();
|
|
186
|
+
onExit === null || onExit === void 0 ? void 0 : onExit();
|
|
187
|
+
}, [onExit, onPanRequired]);
|
|
188
|
+
const handleMahindraExit = react_1.default.useCallback((fdDetails) => {
|
|
189
|
+
setExternalSDK(null);
|
|
190
|
+
setExternalSDKFDData(null);
|
|
191
|
+
(0, helpers_1.navigate)('FDList');
|
|
192
|
+
if (fdDetails)
|
|
193
|
+
onExit === null || onExit === void 0 ? void 0 : onExit(fdDetails);
|
|
194
|
+
}, [onExit]);
|
|
195
|
+
const handleMahindraPanRequired = react_1.default.useCallback(() => {
|
|
196
|
+
setExternalSDK(null);
|
|
197
|
+
setExternalSDKFDData(null);
|
|
198
|
+
onPanRequired === null || onPanRequired === void 0 ? void 0 : onPanRequired();
|
|
199
|
+
onExit === null || onExit === void 0 ? void 0 : onExit();
|
|
200
|
+
}, [onExit, onPanRequired]);
|
|
74
201
|
// Get master data and theme from fdsdk – same theme (and themeName for dark/primary) is passed to Shriram and Mahindra
|
|
75
202
|
const { masterData } = (0, MasterDataProvider_1.useMasterData)();
|
|
76
203
|
const { theme: fdsdkTheme, themeName: fdsdkThemeName } = (0, ThemeContext_1.useTheme)();
|
|
@@ -78,35 +205,8 @@ const RootNavigator = ({ config = {}, onExit, onPanRequired, }) => {
|
|
|
78
205
|
(0, react_1.useEffect)(() => {
|
|
79
206
|
if (react_native_1.Platform.OS !== 'android')
|
|
80
207
|
return;
|
|
81
|
-
let lastBackPressTime = 0;
|
|
82
208
|
const onBackPress = () => {
|
|
83
|
-
|
|
84
|
-
// Check if navigation is ready
|
|
85
|
-
if (!((_a = helpers_1.navigationRef.current) === null || _a === void 0 ? void 0 : _a.isReady())) {
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
const now = Date.now();
|
|
89
|
-
// Ignore synthetic back events triggered during forward navigation (debounce)
|
|
90
|
-
if (now - lastBackPressTime < 300) {
|
|
91
|
-
return false;
|
|
92
|
-
}
|
|
93
|
-
lastBackPressTime = now;
|
|
94
|
-
const currentRoute = (_c = (_b = helpers_1.navigationRef.current) === null || _b === void 0 ? void 0 : _b.getCurrentRoute()) === null || _c === void 0 ? void 0 : _c.name;
|
|
95
|
-
// Block back on Payment and PaymentStatus screens
|
|
96
|
-
if (currentRoute === "Payment" || currentRoute === "PaymentStatus") {
|
|
97
|
-
return true; // block hardware back
|
|
98
|
-
}
|
|
99
|
-
// FD Calculator should always redirect to FD List
|
|
100
|
-
if (currentRoute === "FDCalculator") {
|
|
101
|
-
helpers_1.navigationRef.current.navigate('FDList');
|
|
102
|
-
return true;
|
|
103
|
-
}
|
|
104
|
-
// Skip FDList - let screen-specific handler handle it
|
|
105
|
-
if (currentRoute === "FDList") {
|
|
106
|
-
return false; // Let screen-specific handler handle it
|
|
107
|
-
}
|
|
108
|
-
// Enable back navigation everywhere else - use the same goBack() helper that header back buttons use
|
|
109
|
-
(0, helpers_2.goBack)(); // This calls the same function as the header back button
|
|
209
|
+
// Return true to consume the event and do nothing (stop back navigation)
|
|
110
210
|
return true;
|
|
111
211
|
};
|
|
112
212
|
const subscription = react_native_1.BackHandler.addEventListener("hardwareBackPress", onBackPress);
|
|
@@ -144,14 +244,14 @@ const RootNavigator = ({ config = {}, onExit, onPanRequired, }) => {
|
|
|
144
244
|
}
|
|
145
245
|
}, []);
|
|
146
246
|
// Default screen options
|
|
147
|
-
const defaultScreenOptions = Object.assign({ headerShown: false, cardStyle: { backgroundColor: '#f8f9fa' }, animationEnabled: true, gestureEnabled:
|
|
247
|
+
const defaultScreenOptions = Object.assign({ headerShown: false, cardStyle: { backgroundColor: '#f8f9fa' }, animationEnabled: true, gestureEnabled: false }, customScreenOptions);
|
|
148
248
|
return (react_1.default.createElement(Stack.Navigator, { initialRouteName: initialRouteName, screenOptions: defaultScreenOptions },
|
|
149
249
|
react_1.default.createElement(Stack.Screen, { name: "FDList", options: { title: 'Fixed Deposits' } }, (props) => (react_1.default.createElement(FDList_1.default, Object.assign({ onGoBack: () => {
|
|
150
250
|
onExit === null || onExit === void 0 ? void 0 : onExit();
|
|
151
251
|
}, onSelectFD: (fdId) => {
|
|
152
252
|
// FD selected
|
|
153
253
|
}, onNavigateToFDCalculator: (fdData) => {
|
|
154
|
-
(0,
|
|
254
|
+
(0, helpers_1.navigate)('FDCalculator', { fdData });
|
|
155
255
|
}, onNavigateToExternalSDK: (sdkType, fdData, context) => {
|
|
156
256
|
try {
|
|
157
257
|
// Get app data and environment data from fdsdk
|
|
@@ -177,7 +277,7 @@ const RootNavigator = ({ config = {}, onExit, onPanRequired, }) => {
|
|
|
177
277
|
// Navigate to external SDK
|
|
178
278
|
setExternalSDK('shriram');
|
|
179
279
|
setExternalSDKFDData(fdData);
|
|
180
|
-
(0,
|
|
280
|
+
(0, helpers_1.navigate)('ExternalSDK', {
|
|
181
281
|
sdkType: 'shriram',
|
|
182
282
|
fdData,
|
|
183
283
|
providerId: context === null || context === void 0 ? void 0 : context.providerId,
|
|
@@ -199,7 +299,7 @@ const RootNavigator = ({ config = {}, onExit, onPanRequired, }) => {
|
|
|
199
299
|
// Navigate to external SDK
|
|
200
300
|
setExternalSDK('mahindra');
|
|
201
301
|
setExternalSDKFDData(fdData);
|
|
202
|
-
(0,
|
|
302
|
+
(0, helpers_1.navigate)('ExternalSDK', {
|
|
203
303
|
sdkType: 'mahindra',
|
|
204
304
|
fdData,
|
|
205
305
|
providerId: context === null || context === void 0 ? void 0 : context.providerId,
|
|
@@ -224,7 +324,7 @@ const RootNavigator = ({ config = {}, onExit, onPanRequired, }) => {
|
|
|
224
324
|
} }, props)))),
|
|
225
325
|
react_1.default.createElement(Stack.Screen, { name: "FDCalculator", options: { title: 'FD Calculator' } }, (props) => {
|
|
226
326
|
var _a;
|
|
227
|
-
return (react_1.default.createElement(FDCalculator_1.default, Object.assign({ onGoBack: () => (0,
|
|
327
|
+
return (react_1.default.createElement(FDCalculator_1.default, Object.assign({ onGoBack: () => (0, helpers_1.goBack)(), onNavigateToReviewKYC: () => { var _a; return (0, helpers_1.navigate)('ReviewKYC', { fdData: (_a = props.route.params) === null || _a === void 0 ? void 0 : _a.fdData }); }, fdData: (_a = props.route.params) === null || _a === void 0 ? void 0 : _a.fdData }, props)));
|
|
228
328
|
}),
|
|
229
329
|
react_1.default.createElement(Stack.Screen, { name: "ExternalSDK", options: { title: 'External SDK', gestureEnabled: false } }, (props) => {
|
|
230
330
|
var _a, _b, _c, _d;
|
|
@@ -248,142 +348,13 @@ const RootNavigator = ({ config = {}, onExit, onPanRequired, }) => {
|
|
|
248
348
|
if (!ok)
|
|
249
349
|
return null;
|
|
250
350
|
}
|
|
251
|
-
// Component to set master data and initial FD context in external SDK
|
|
252
|
-
const ShriramSDKWithMasterData = ({ masterData }) => {
|
|
253
|
-
const { setMasterData } = (0, shriramfdsdk_1.useMasterData)();
|
|
254
|
-
const shriramDispatch = (0, shriramfdsdk_1.useAppDispatch)();
|
|
255
|
-
const routeParams = props.route.params || {};
|
|
256
|
-
// Set master data
|
|
257
|
-
react_1.default.useEffect(() => {
|
|
258
|
-
if (masterData) {
|
|
259
|
-
const dataToSet = masterData.data || masterData;
|
|
260
|
-
setMasterData(dataToSet);
|
|
261
|
-
}
|
|
262
|
-
}, [masterData, setMasterData]);
|
|
263
|
-
// Set FDListSelectedData using Shriram setter
|
|
264
|
-
react_1.default.useEffect(() => {
|
|
265
|
-
if (routeParams.fdListSelectedData) {
|
|
266
|
-
try {
|
|
267
|
-
shriramDispatch((0, shriramfdsdk_1.setFDListSelected)(routeParams.fdListSelectedData));
|
|
268
|
-
}
|
|
269
|
-
catch (e) {
|
|
270
|
-
console.log('[RootNavigator] Error setting Shriram FDListSelected:', e);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
}, [routeParams.fdListSelectedData, shriramDispatch]);
|
|
274
|
-
// Set OnboardingIds using Shriram setter
|
|
275
|
-
react_1.default.useEffect(() => {
|
|
276
|
-
var _a;
|
|
277
|
-
if (routeParams.onboardingIds) {
|
|
278
|
-
try {
|
|
279
|
-
shriramDispatch((0, shriramfdsdk_1.setOnboardingIds)(Object.assign(Object.assign({}, routeParams.onboardingIds), { providerId: routeParams.providerId || ((_a = routeParams.onboardingIds) === null || _a === void 0 ? void 0 : _a.providerId) })));
|
|
280
|
-
}
|
|
281
|
-
catch (e) {
|
|
282
|
-
console.log('[RootNavigator] Error setting Shriram OnboardingIds:', e);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
}, [routeParams.onboardingIds, shriramDispatch]);
|
|
286
|
-
// Set GlobalData using Shriram setter if present - only set completeFDData boolean
|
|
287
|
-
react_1.default.useEffect(() => {
|
|
288
|
-
if (routeParams.shriramSDKGlobalData) {
|
|
289
|
-
try {
|
|
290
|
-
const completeFDData = !!routeParams.shriramSDKGlobalData;
|
|
291
|
-
(0, shriramfdsdk_1.setGlobalData)({ completeFDData });
|
|
292
|
-
console.log('[RootNavigator] Set ShriramSDKGlobalData completeFDData:', completeFDData);
|
|
293
|
-
}
|
|
294
|
-
catch (e) {
|
|
295
|
-
console.log('[RootNavigator] Error setting Shriram GlobalData:', e);
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
}, [routeParams.shriramSDKGlobalData]);
|
|
299
|
-
return (react_1.default.createElement(shriramfdsdk_1.RootNavigator, { config: {
|
|
300
|
-
initialRouteName: routeParams.initialRouteName || 'FDCalculator',
|
|
301
|
-
initialPaymentStatusParams: routeParams.initialPaymentStatusParams,
|
|
302
|
-
initialFDContext: {
|
|
303
|
-
providerId: routeParams.providerId,
|
|
304
|
-
fdListSelectedData: routeParams.fdListSelectedData,
|
|
305
|
-
completeFDData: routeParams.completeFDData,
|
|
306
|
-
},
|
|
307
|
-
}, onExit: (fdDetails) => {
|
|
308
|
-
// When exiting external SDK, go back to FDList
|
|
309
|
-
setExternalSDK(null);
|
|
310
|
-
setExternalSDKFDData(null);
|
|
311
|
-
(0, helpers_2.navigate)('FDList');
|
|
312
|
-
if (fdDetails) {
|
|
313
|
-
onExit === null || onExit === void 0 ? void 0 : onExit(fdDetails);
|
|
314
|
-
}
|
|
315
|
-
}, onPanRequired: () => {
|
|
316
|
-
// Exit full SDK flow back to host app and notify callback
|
|
317
|
-
setExternalSDK(null);
|
|
318
|
-
setExternalSDKFDData(null);
|
|
319
|
-
onPanRequired === null || onPanRequired === void 0 ? void 0 : onPanRequired();
|
|
320
|
-
onExit === null || onExit === void 0 ? void 0 : onExit();
|
|
321
|
-
} }));
|
|
322
|
-
};
|
|
323
|
-
const MahindraSDKWithMasterData = ({ masterData }) => {
|
|
324
|
-
const { setMasterData } = (0, mahindrafdsdk_1.useMasterData)();
|
|
325
|
-
const mahindraDispatch = (0, mahindrafdsdk_1.useAppDispatch)();
|
|
326
|
-
// Set master data
|
|
327
|
-
react_1.default.useEffect(() => {
|
|
328
|
-
if (masterData) {
|
|
329
|
-
const dataToSet = masterData.data || masterData;
|
|
330
|
-
setMasterData(dataToSet);
|
|
331
|
-
}
|
|
332
|
-
}, [masterData, setMasterData]);
|
|
333
|
-
// Set FDListSelectedData using Mahindra setter
|
|
334
|
-
react_1.default.useEffect(() => {
|
|
335
|
-
if (routeParams.fdListSelectedData) {
|
|
336
|
-
try {
|
|
337
|
-
mahindraDispatch((0, mahindrafdsdk_1.setFDListSelected)(routeParams.fdListSelectedData));
|
|
338
|
-
}
|
|
339
|
-
catch (e) {
|
|
340
|
-
console.log('[RootNavigator] Error setting Mahindra FDListSelected:', e);
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
}, [routeParams.fdListSelectedData, mahindraDispatch]);
|
|
344
|
-
// Set OnboardingIds using Mahindra setter
|
|
345
|
-
react_1.default.useEffect(() => {
|
|
346
|
-
var _a;
|
|
347
|
-
if (routeParams.onboardingIds) {
|
|
348
|
-
try {
|
|
349
|
-
mahindraDispatch((0, mahindrafdsdk_1.setOnboardingIds)(Object.assign(Object.assign({}, routeParams.onboardingIds), { providerId: routeParams.providerId || ((_a = routeParams.onboardingIds) === null || _a === void 0 ? void 0 : _a.providerId) })));
|
|
350
|
-
}
|
|
351
|
-
catch (e) {
|
|
352
|
-
console.log('[RootNavigator] Error setting Mahindra OnboardingIds:', e);
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
}, [routeParams.onboardingIds, mahindraDispatch]);
|
|
356
|
-
return (react_1.default.createElement(MahindraRootNavigatorAny, { config: {
|
|
357
|
-
initialRouteName: routeParams.initialRouteName || 'FDCalculator',
|
|
358
|
-
forceFetchCustomerDetails: !!routeParams.forceFetchCustomerDetails,
|
|
359
|
-
initialFDContext: {
|
|
360
|
-
providerId: routeParams.providerId,
|
|
361
|
-
fdListSelectedData: routeParams.fdListSelectedData,
|
|
362
|
-
completeFDData: routeParams.completeFDData,
|
|
363
|
-
},
|
|
364
|
-
}, onExit: (fdDetails) => {
|
|
365
|
-
// When exiting external SDK, go back to FDList
|
|
366
|
-
setExternalSDK(null);
|
|
367
|
-
setExternalSDKFDData(null);
|
|
368
|
-
(0, helpers_2.navigate)('FDList');
|
|
369
|
-
if (fdDetails) {
|
|
370
|
-
onExit === null || onExit === void 0 ? void 0 : onExit(fdDetails);
|
|
371
|
-
}
|
|
372
|
-
}, onPanRequired: () => {
|
|
373
|
-
// Exit full SDK flow back to host app and notify callback
|
|
374
|
-
setExternalSDK(null);
|
|
375
|
-
setExternalSDKFDData(null);
|
|
376
|
-
onPanRequired === null || onPanRequired === void 0 ? void 0 : onPanRequired();
|
|
377
|
-
onExit === null || onExit === void 0 ? void 0 : onExit();
|
|
378
|
-
} }));
|
|
379
|
-
};
|
|
380
351
|
if (sdkType === 'shriram') {
|
|
381
352
|
return (react_1.default.createElement(shriramfdsdk_1.ApiProvider, null,
|
|
382
353
|
react_1.default.createElement(shriramfdsdk_1.MasterDataProvider, null,
|
|
383
354
|
react_1.default.createElement(shriramfdsdk_1.ThemeProvider, { theme: fdsdkTheme, initialTheme: fdsdkThemeName },
|
|
384
355
|
react_1.default.createElement(native_1.NavigationIndependentTree, null,
|
|
385
356
|
react_1.default.createElement(native_1.NavigationContainer, { ref: shriramfdsdk_1.navigationRef },
|
|
386
|
-
react_1.default.createElement(
|
|
357
|
+
react_1.default.createElement(ShriramSDKContent, { masterData: externalMasterData, routeParams: routeParams, onSDKExit: handleShriramExit, onSDKPanRequired: handleShriramPanRequired })))))));
|
|
387
358
|
}
|
|
388
359
|
if (sdkType === 'mahindra') {
|
|
389
360
|
return (react_1.default.createElement(mahindrafdsdk_1.ApiProvider, null,
|
|
@@ -391,57 +362,57 @@ const RootNavigator = ({ config = {}, onExit, onPanRequired, }) => {
|
|
|
391
362
|
react_1.default.createElement(mahindrafdsdk_1.ThemeProvider, { theme: fdsdkTheme, initialTheme: fdsdkThemeName },
|
|
392
363
|
react_1.default.createElement(native_1.NavigationIndependentTree, null,
|
|
393
364
|
react_1.default.createElement(native_1.NavigationContainer, { ref: mahindrafdsdk_1.navigationRef },
|
|
394
|
-
react_1.default.createElement(
|
|
365
|
+
react_1.default.createElement(MahindraSDKContent, { masterData: externalMasterData, routeParams: routeParams, onSDKExit: handleMahindraExit, onSDKPanRequired: handleMahindraPanRequired })))))));
|
|
395
366
|
}
|
|
396
367
|
return null;
|
|
397
368
|
}),
|
|
398
|
-
react_1.default.createElement(Stack.Screen, { name: "AadhaarVerification", options: { title: 'Aadhaar Verification' } }, (props) => (react_1.default.createElement(AadhaarVerification_1.default, Object.assign({ onGoBack: () => (0,
|
|
399
|
-
(0,
|
|
369
|
+
react_1.default.createElement(Stack.Screen, { name: "AadhaarVerification", options: { title: 'Aadhaar Verification' } }, (props) => (react_1.default.createElement(AadhaarVerification_1.default, Object.assign({ onGoBack: () => (0, helpers_1.goBack)(), onVerificationComplete: () => {
|
|
370
|
+
(0, helpers_1.navigate)('Employee');
|
|
400
371
|
} }, props)))),
|
|
401
|
-
react_1.default.createElement(Stack.Screen, { name: "ReviewKYC", options: { title: 'Review KYC' } }, (props) => (react_1.default.createElement(ReviewKYC_1.default, Object.assign({ onGoBack: () => (0,
|
|
402
|
-
(0,
|
|
372
|
+
react_1.default.createElement(Stack.Screen, { name: "ReviewKYC", options: { title: 'Review KYC' } }, (props) => (react_1.default.createElement(ReviewKYC_1.default, Object.assign({ onGoBack: () => (0, helpers_1.goBack)(), onContinue: () => {
|
|
373
|
+
(0, helpers_1.navigate)('Employee');
|
|
403
374
|
} }, props)))),
|
|
404
|
-
react_1.default.createElement(Stack.Screen, { name: "Employee", options: { title: 'Occupation' } }, (props) => (react_1.default.createElement(Employee_1.default, Object.assign({ onGoBack: () => (0,
|
|
405
|
-
(0,
|
|
375
|
+
react_1.default.createElement(Stack.Screen, { name: "Employee", options: { title: 'Occupation' } }, (props) => (react_1.default.createElement(Employee_1.default, Object.assign({ onGoBack: () => (0, helpers_1.goBack)(), onContinue: () => {
|
|
376
|
+
(0, helpers_1.navigate)('NomineeDetail');
|
|
406
377
|
} }, props)))),
|
|
407
|
-
react_1.default.createElement(Stack.Screen, { name: "NomineeDetail", options: { title: 'Nominee Details' } }, (props) => (react_1.default.createElement(NomineeDetail_1.default, Object.assign({ onGoBack: () => (0,
|
|
408
|
-
(0,
|
|
378
|
+
react_1.default.createElement(Stack.Screen, { name: "NomineeDetail", options: { title: 'Nominee Details' } }, (props) => (react_1.default.createElement(NomineeDetail_1.default, Object.assign({ onGoBack: () => (0, helpers_1.goBack)(), onSave: () => {
|
|
379
|
+
(0, helpers_1.navigate)('BankDetail');
|
|
409
380
|
} }, props)))),
|
|
410
|
-
react_1.default.createElement(Stack.Screen, { name: "BankDetail", options: { title: 'Bank Details' } }, (props) => (react_1.default.createElement(BankDetail_1.default, Object.assign({ onGoBack: () => (0,
|
|
411
|
-
(0,
|
|
381
|
+
react_1.default.createElement(Stack.Screen, { name: "BankDetail", options: { title: 'Bank Details' } }, (props) => (react_1.default.createElement(BankDetail_1.default, Object.assign({ onGoBack: () => (0, helpers_1.goBack)(), onContinue: () => {
|
|
382
|
+
(0, helpers_1.navigate)('PayNow');
|
|
412
383
|
}, onAddAccount: () => {
|
|
413
|
-
(0,
|
|
384
|
+
(0, helpers_1.navigate)('AddBankAccount');
|
|
414
385
|
} }, props)))),
|
|
415
|
-
react_1.default.createElement(Stack.Screen, { name: "AddBankAccount", options: { title: 'Add Bank Account' } }, (props) => (react_1.default.createElement(AddBankAccount_1.default, Object.assign({ onGoBack: () => (0,
|
|
416
|
-
(0,
|
|
386
|
+
react_1.default.createElement(Stack.Screen, { name: "AddBankAccount", options: { title: 'Add Bank Account' } }, (props) => (react_1.default.createElement(AddBankAccount_1.default, Object.assign({ onGoBack: () => (0, helpers_1.goBack)(), onContinue: () => {
|
|
387
|
+
(0, helpers_1.goBack)();
|
|
417
388
|
}, onFindIFSC: () => {
|
|
418
|
-
(0,
|
|
389
|
+
(0, helpers_1.navigate)('FindIFSC');
|
|
419
390
|
}, selectedIFSC: (() => {
|
|
420
391
|
const params = props.route.params;
|
|
421
392
|
return params === null || params === void 0 ? void 0 : params.selectedIFSC;
|
|
422
393
|
})() }, props)))),
|
|
423
394
|
react_1.default.createElement(Stack.Screen, { name: "FindIFSC", options: { title: 'Find IFSC' } }, (props) => {
|
|
424
395
|
var _a;
|
|
425
|
-
return (react_1.default.createElement(FindIFSC_1.default, Object.assign({ onGoBack: () => (0,
|
|
426
|
-
(0,
|
|
427
|
-
(0,
|
|
396
|
+
return (react_1.default.createElement(FindIFSC_1.default, Object.assign({ onGoBack: () => (0, helpers_1.goBack)(), onSelect: (ifscData) => {
|
|
397
|
+
(0, helpers_1.pop)(1);
|
|
398
|
+
(0, helpers_1.navigate)('AddBankAccount', { selectedIFSC: ifscData });
|
|
428
399
|
}, initialSearchTerm: (_a = props.route.params) === null || _a === void 0 ? void 0 : _a.initialSearchTerm }, props)));
|
|
429
400
|
}),
|
|
430
401
|
react_1.default.createElement(Stack.Screen, { name: "PayNow", options: { title: 'Pay Now' } }, (props) => {
|
|
431
402
|
var _a;
|
|
432
|
-
return (react_1.default.createElement(PayNow_1.default, Object.assign({ onGoBack: () => (0,
|
|
403
|
+
return (react_1.default.createElement(PayNow_1.default, Object.assign({ onGoBack: () => (0, helpers_1.goBack)(), onConfirm: () => {
|
|
433
404
|
// onConfirm is handled inside PayNow after createFD; keep fallback
|
|
434
405
|
}, fdData: (_a = props.route.params) === null || _a === void 0 ? void 0 : _a.fdData }, props)));
|
|
435
406
|
}),
|
|
436
407
|
react_1.default.createElement(Stack.Screen, { name: "Payment", options: { title: 'Payment' } }, (props) => {
|
|
437
408
|
var _a, _b, _c;
|
|
438
|
-
return (react_1.default.createElement(Payment_1.default, Object.assign({ onGoBack: () => (0,
|
|
439
|
-
(0,
|
|
409
|
+
return (react_1.default.createElement(Payment_1.default, Object.assign({ onGoBack: () => (0, helpers_1.goBack)(), paymentUrl: (_c = (_b = (_a = props.route.params) === null || _a === void 0 ? void 0 : _a.paymentUrl) !== null && _b !== void 0 ? _b : (0, paymentSession_1.getPaymentSession)().paymentUrl) !== null && _c !== void 0 ? _c : '', onPaymentSuccess: (data) => {
|
|
410
|
+
(0, helpers_1.navigate)('PaymentStatus', {
|
|
440
411
|
status: 'success',
|
|
441
412
|
paymentData: data
|
|
442
413
|
});
|
|
443
414
|
}, onPaymentFailure: (error) => {
|
|
444
|
-
(0,
|
|
415
|
+
(0, helpers_1.navigate)('PaymentStatus', {
|
|
445
416
|
status: 'failed',
|
|
446
417
|
paymentData: error
|
|
447
418
|
});
|
|
@@ -450,7 +421,7 @@ const RootNavigator = ({ config = {}, onExit, onPanRequired, }) => {
|
|
|
450
421
|
react_1.default.createElement(Stack.Screen, { name: "PaymentStatus", options: { title: 'Payment Status' } }, (props) => {
|
|
451
422
|
var _a, _b, _c;
|
|
452
423
|
return (react_1.default.createElement(PaymentStatus_1.default, Object.assign({ status: ((_a = props.route.params) === null || _a === void 0 ? void 0 : _a.status) || 'pending', transactionId: (_b = props.route.params) === null || _b === void 0 ? void 0 : _b.transactionId, fdData: (_c = props.route.params) === null || _c === void 0 ? void 0 : _c.fdData, onRetry: () => {
|
|
453
|
-
(0,
|
|
424
|
+
(0, helpers_1.navigate)('Payment');
|
|
454
425
|
}, onContinue: (fdDetails) => {
|
|
455
426
|
onExit === null || onExit === void 0 ? void 0 : onExit(fdDetails);
|
|
456
427
|
} }, props)));
|
|
@@ -105,12 +105,15 @@ export type RootStackParamList = {
|
|
|
105
105
|
masterData?: any;
|
|
106
106
|
onboardingIds?: any;
|
|
107
107
|
initialRouteName?: string;
|
|
108
|
-
/** When opening Shriram with initialRouteName 'PaymentStatus', pass status/transactionId/fdData here */
|
|
108
|
+
/** When opening Shriram/Mahindra with initialRouteName 'PaymentStatus', pass status/transactionId/fdData here */
|
|
109
109
|
initialPaymentStatusParams?: {
|
|
110
110
|
status?: 'success' | 'failed' | 'pending';
|
|
111
111
|
transactionId?: string;
|
|
112
112
|
fdData?: any;
|
|
113
113
|
};
|
|
114
|
+
/** When opening Mahindra with initialRouteName 'Payment', pass the resolved payment URL and transactionId here */
|
|
115
|
+
initialPaymentUrl?: string;
|
|
116
|
+
initialPaymentTransactionId?: string;
|
|
114
117
|
shriramSDKGlobalData?: any;
|
|
115
118
|
mahindraSDKGlobalData?: any;
|
|
116
119
|
forceFetchCustomerDetails?: boolean;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AppData, CustomerData, FDData, InvestmentData } from '../types/dataTypes';
|
|
2
2
|
import type { WorkflowStateSriram } from '../types/workflowTypes';
|
|
3
3
|
/**
|
|
4
4
|
* Centralized navigation for FD workflow based on Flutter implementation
|