@finspringinnovations/fixeddepositsdk 1.0.3 → 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.
Files changed (43) hide show
  1. package/lib/api/customerApi.js +1 -0
  2. package/lib/api/fdApi.d.ts +401 -1
  3. package/lib/api/fdApi.js +24 -2
  4. package/lib/config/workflowConstants.d.ts +40 -30
  5. package/lib/config/workflowConstants.js +35 -24
  6. package/lib/navigation/RootNavigator.js +62 -81
  7. package/lib/navigation/types.d.ts +4 -1
  8. package/lib/navigation/workflowNavigator.d.ts +1 -1
  9. package/lib/navigation/workflowNavigator.js +107 -26
  10. package/lib/screens/AadhaarVerification.js +1 -11
  11. package/lib/screens/AddBankAccount.js +1 -11
  12. package/lib/screens/BankDetail.js +1 -11
  13. package/lib/screens/Employee.js +1 -11
  14. package/lib/screens/FDCalculator.js +1 -11
  15. package/lib/screens/FDList.js +529 -416
  16. package/lib/screens/FindIFSC.js +1 -11
  17. package/lib/screens/NomineeDetail.js +12 -22
  18. package/lib/screens/PayNow.js +1 -11
  19. package/lib/screens/Payment.js +2 -11
  20. package/lib/screens/PaymentStatus.js +11 -21
  21. package/lib/screens/ReviewKYC.js +1 -11
  22. package/lib/types/workflowTypes.d.ts +1 -1
  23. package/package.json +1 -1
  24. package/src/api/customerApi.ts +1 -0
  25. package/src/api/fdApi.ts +28 -1
  26. package/src/config/workflowConstants.ts +51 -39
  27. package/src/constants/strings/bank.ts +80 -80
  28. package/src/navigation/RootNavigator.tsx +646 -663
  29. package/src/navigation/types.ts +4 -1
  30. package/src/navigation/workflowNavigator.ts +170 -107
  31. package/src/screens/AadhaarVerification.tsx +1 -15
  32. package/src/screens/AddBankAccount.tsx +2 -16
  33. package/src/screens/BankDetail.tsx +1 -15
  34. package/src/screens/Employee.tsx +1 -15
  35. package/src/screens/FDCalculator.tsx +1 -15
  36. package/src/screens/FDList.tsx +2311 -2171
  37. package/src/screens/FindIFSC.tsx +2 -16
  38. package/src/screens/NomineeDetail.tsx +762 -775
  39. package/src/screens/PayNow.tsx +2 -16
  40. package/src/screens/Payment.tsx +190 -203
  41. package/src/screens/PaymentStatus.tsx +574 -588
  42. package/src/screens/ReviewKYC.tsx +1 -15
  43. package/src/types/workflowTypes.ts +1 -10
@@ -137,17 +137,7 @@ const FindIFSC = ({ onGoBack, onSelect, initialSearchTerm }) => {
137
137
  const handleBackPress = () => {
138
138
  (0, helpers_1.navigate)('AddBankAccount');
139
139
  };
140
- // Handle Android hardware back button
141
- (0, react_1.useEffect)(() => {
142
- if (react_native_1.Platform.OS !== 'android')
143
- return;
144
- const onHardwareBackPress = () => {
145
- handleBackPress();
146
- return true; // Prevent default behavior
147
- };
148
- const backHandler = react_native_1.BackHandler.addEventListener('hardwareBackPress', onHardwareBackPress);
149
- return () => backHandler.remove();
150
- }, []);
140
+ // Removed screen-level hardware back handler to allow only header back button navigation
151
141
  return (react_1.default.createElement(SafeAreaWrapper_1.default, { includeTop: false, bottomPadding: 25, statusBarColor: "#000000", statusBarStyle: "light-content" },
152
142
  react_1.default.createElement(components_1.Header, { title: bank_1.BANK_STRINGS.FIND_IFSC_TITLE, onBackPress: handleBackPress, backgroundColor: colors.primary }),
153
143
  react_1.default.createElement(react_native_1.ScrollView, { style: styles.container, showsVerticalScrollIndicator: false },
@@ -36,26 +36,26 @@ 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 datetimepicker_1 = __importDefault(require("@react-native-community/datetimepicker"));
39
40
  const react_1 = __importStar(require("react"));
40
41
  const react_native_1 = require("react-native");
41
42
  const Ionicons_1 = __importDefault(require("react-native-vector-icons/Ionicons"));
42
- const datetimepicker_1 = __importDefault(require("@react-native-community/datetimepicker"));
43
43
  // import DatePicker from 'react-native-date-picker'; // Commented out old date picker
44
- const SafeAreaWrapper_1 = __importDefault(require("../components/SafeAreaWrapper"));
44
+ const native_1 = require("@react-navigation/native");
45
+ const customerApi_1 = require("../api/customerApi");
46
+ const workflowApi_1 = require("../api/workflowApi");
45
47
  const components_1 = require("../components");
46
48
  const ActionButton_1 = __importDefault(require("../components/ActionButton"));
49
+ const SafeAreaWrapper_1 = __importDefault(require("../components/SafeAreaWrapper"));
47
50
  const TextFieldWithLabel_1 = __importDefault(require("../components/TextFieldWithLabel"));
48
- const ThemeContext_1 = require("../theme/ThemeContext");
49
- const customerApi_1 = require("../api/customerApi");
50
- const MasterDataProvider_1 = require("../providers/MasterDataProvider");
51
- const store_1 = require("../store");
52
51
  const appDataConfig_1 = require("../config/appDataConfig");
53
- const workflowApi_1 = require("../api/workflowApi");
54
- const native_1 = require("@react-navigation/native");
55
- const helpers_1 = require("../navigation/helpers");
56
52
  const base64Images_1 = require("../constants/strings/base64Images");
57
- const nominee_1 = require("../constants/strings/nominee");
58
53
  const common_1 = require("../constants/strings/common");
54
+ const nominee_1 = require("../constants/strings/nominee");
55
+ const helpers_1 = require("../navigation/helpers");
56
+ const MasterDataProvider_1 = require("../providers/MasterDataProvider");
57
+ const store_1 = require("../store");
58
+ const ThemeContext_1 = require("../theme/ThemeContext");
59
59
  const makeNominationOptions = ['Yes', 'No'];
60
60
  const NomineeDetail = ({ onGoBack, onSave, initialData }) => {
61
61
  var _a;
@@ -500,17 +500,7 @@ const NomineeDetail = ({ onGoBack, onSave, initialData }) => {
500
500
  (0, helpers_1.navigate)('Employee');
501
501
  }
502
502
  };
503
- // Handle Android hardware back button
504
- (0, react_1.useEffect)(() => {
505
- if (react_native_1.Platform.OS !== 'android')
506
- return;
507
- const onHardwareBackPress = () => {
508
- handleBackPress();
509
- return true; // Prevent default behavior
510
- };
511
- const backHandler = react_native_1.BackHandler.addEventListener('hardwareBackPress', onHardwareBackPress);
512
- return () => backHandler.remove();
513
- }, [defaultProviderId, workflowInstanceId, applicationId]);
503
+ // Removed screen-level hardware back handler to allow only header back button navigation
514
504
  return (react_1.default.createElement(SafeAreaWrapper_1.default, { includeTop: false, bottomPadding: 25, statusBarColor: "#000000", statusBarStyle: "light-content" },
515
505
  react_1.default.createElement(components_1.Header, { title: nominee_1.NOMINEE_STRINGS.NOMINEE_DETAILS_TITLE, onBackPress: handleBackPress, backgroundColor: colors.primary }),
516
506
  react_1.default.createElement(react_native_1.KeyboardAvoidingView, { behavior: react_native_1.Platform.OS === 'ios' ? 'padding' : undefined, style: styles.keyboardAvoidingView, keyboardVerticalOffset: react_native_1.Platform.OS === 'ios' ? 0 : 0 },
@@ -523,7 +513,7 @@ const NomineeDetail = ({ onGoBack, onSave, initialData }) => {
523
513
  renderDropdown(nominee_1.NOMINEE_STRINGS.RELATIONSHIP_LABEL, form.relationship, 'relationship', nomineeRelationOptions, 'relationship'),
524
514
  renderDateField(nominee_1.NOMINEE_STRINGS.DATE_OF_BIRTH_LABEL, form.dateOfBirth, 'dateOfBirth'),
525
515
  showDatePicker && (react_1.default.createElement(react_native_1.View, { style: styles.datePickerContainer },
526
- react_1.default.createElement(datetimepicker_1.default, { value: selectedDate, mode: "date", display: react_native_1.Platform.OS === 'ios' ? 'spinner' : 'default', onChange: onDateChange, maximumDate: new Date(new Date().getFullYear() - 18, new Date().getMonth(), new Date().getDate()), themeVariant: "light" }))),
516
+ react_1.default.createElement(datetimepicker_1.default, { value: selectedDate, mode: "date", display: react_native_1.Platform.OS === 'ios' ? 'spinner' : 'default', onChange: onDateChange, maximumDate: new Date(new Date().getFullYear() - 18, new Date().getMonth(), new Date().getDate()), minimumDate: new Date(new Date().getFullYear() - 100, 0, 1), themeVariant: "light" }))),
527
517
  react_1.default.createElement(react_native_1.View, { style: styles.checkboxContainer },
528
518
  react_1.default.createElement(react_native_1.TouchableOpacity, { style: styles.checkbox, onPress: () => updateField('printNameOnCertificate', !form.printNameOnCertificate) },
529
519
  react_1.default.createElement(react_native_1.View, { style: [styles.checkboxBox, form.printNameOnCertificate && styles.checkboxChecked] }, form.printNameOnCertificate ? (react_1.default.createElement(react_native_1.Image, { source: { uri: ((0, ThemeContext_1.useTheme)().themeName === 'dark') ? base64Images_1.base64Images.checkBoxDark : base64Images_1.base64Images.filledCheckBox }, style: { width: 22, height: 22 }, resizeMode: "contain" })) : (((0, ThemeContext_1.useTheme)().themeName === 'dark') ? (react_1.default.createElement(react_native_1.Image, { source: { uri: base64Images_1.base64Images.unCheckBoxDark }, style: { width: 22, height: 22 }, resizeMode: "contain" })) : null))),
@@ -148,17 +148,7 @@ const PayNow = ({ onGoBack, onConfirm, fdData }) => {
148
148
  (0, helpers_1.navigate)('BankDetail');
149
149
  }
150
150
  };
151
- // Handle Android hardware back button
152
- (0, react_1.useEffect)(() => {
153
- if (react_native_1.Platform.OS !== 'android')
154
- return;
155
- const onHardwareBackPress = () => {
156
- handleBackPress();
157
- return true; // Prevent default behavior
158
- };
159
- const backHandler = react_native_1.BackHandler.addEventListener('hardwareBackPress', onHardwareBackPress);
160
- return () => backHandler.remove();
161
- }, [defaultProviderId, workflowInstanceId, applicationId, entityId]);
151
+ // Removed screen-level hardware back handler to allow only header back button navigation
162
152
  return (react_1.default.createElement(SafeAreaWrapper_1.default, { includeTop: false, bottomPadding: 25, statusBarColor: "#000000", statusBarStyle: "light-content" },
163
153
  react_1.default.createElement(react_native_1.View, { style: styles.container },
164
154
  react_1.default.createElement(react_native_1.ScrollView, { showsVerticalScrollIndicator: false, contentContainerStyle: styles.scrollContent },
@@ -40,9 +40,9 @@ const react_1 = __importStar(require("react"));
40
40
  const react_native_1 = require("react-native");
41
41
  const react_native_webview_1 = require("react-native-webview");
42
42
  const SafeAreaWrapper_1 = __importDefault(require("../components/SafeAreaWrapper"));
43
+ const encryptionConfig_1 = require("../config/encryptionConfig");
43
44
  const ThemeContext_1 = require("../theme/ThemeContext");
44
45
  const encryption_1 = require("../utils/encryption");
45
- const encryptionConfig_1 = require("../config/encryptionConfig");
46
46
  const Payment = ({ onGoBack, onPaymentSuccess, onPaymentFailure, paymentUrl, successUrl = 'payment/success', failureUrl = 'payment/failure', }) => {
47
47
  const colors = (0, ThemeContext_1.useColors)();
48
48
  const styles = createStyles(colors);
@@ -149,16 +149,7 @@ const Payment = ({ onGoBack, onPaymentSuccess, onPaymentFailure, paymentUrl, suc
149
149
  }
150
150
  };
151
151
  // Disable hardware back button on Payment screen
152
- (0, react_1.useEffect)(() => {
153
- if (react_native_1.Platform.OS !== 'android')
154
- return;
155
- const onBackPress = () => {
156
- // Return true to prevent default behavior (block back button)
157
- return true;
158
- };
159
- const backHandler = react_native_1.BackHandler.addEventListener('hardwareBackPress', onBackPress);
160
- return () => backHandler.remove();
161
- }, []);
152
+ // Removed screen-level hardware back handler to allow only header back button navigation
162
153
  return (react_1.default.createElement(SafeAreaWrapper_1.default, { includeTop: false, bottomPadding: 0, statusBarColor: "#000000", statusBarStyle: "light-content" },
163
154
  react_native_1.Platform.OS === 'ios' && react_1.default.createElement(react_native_1.StatusBar, { barStyle: "light-content" }),
164
155
  react_1.default.createElement(react_native_1.View, { style: styles.container },
@@ -36,24 +36,24 @@ 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 native_1 = require("@react-navigation/native");
39
40
  const react_1 = __importStar(require("react"));
40
41
  const react_native_1 = require("react-native");
41
42
  const Ionicons_1 = __importDefault(require("react-native-vector-icons/Ionicons"));
42
- const base64Images_1 = require("../constants/strings/base64Images");
43
- const SafeAreaWrapper_1 = __importDefault(require("../components/SafeAreaWrapper"));
43
+ const customerApi_1 = require("../api/customerApi");
44
+ const fdApi_1 = require("../api/fdApi");
44
45
  const components_1 = require("../components");
45
46
  const ActionButton_1 = __importDefault(require("../components/ActionButton"));
46
- const ThemeContext_1 = require("../theme/ThemeContext");
47
- const fdApi_1 = require("../api/fdApi");
48
- const customerApi_1 = require("../api/customerApi");
49
- const store_1 = require("../store");
47
+ const SafeAreaWrapper_1 = __importDefault(require("../components/SafeAreaWrapper"));
48
+ const apiConfig_1 = require("../config/apiConfig");
50
49
  const appDataConfig_1 = require("../config/appDataConfig");
51
- const helpers_1 = require("../navigation/helpers");
52
- const paymentSession_1 = require("../state/paymentSession");
53
- const native_1 = require("@react-navigation/native");
54
50
  const bank_1 = require("../constants/strings/bank");
51
+ const base64Images_1 = require("../constants/strings/base64Images");
55
52
  const common_1 = require("../constants/strings/common");
56
- const apiConfig_1 = require("../config/apiConfig");
53
+ const helpers_1 = require("../navigation/helpers");
54
+ const paymentSession_1 = require("../state/paymentSession");
55
+ const store_1 = require("../store");
56
+ const ThemeContext_1 = require("../theme/ThemeContext");
57
57
  const PaymentStatus = ({ onRetry, onContinue, status, transactionId, fdData }) => {
58
58
  var _a;
59
59
  const colors = (0, ThemeContext_1.useColors)();
@@ -305,17 +305,7 @@ const PaymentStatus = ({ onRetry, onContinue, status, transactionId, fdData }) =
305
305
  const handleNavigateToFDList = () => {
306
306
  (0, helpers_1.navigate)('FDList');
307
307
  };
308
- // Disable hardware back button on PaymentStatus screen
309
- (0, react_1.useEffect)(() => {
310
- if (react_native_1.Platform.OS !== 'android')
311
- return;
312
- const onBackPress = () => {
313
- // Return true to prevent default behavior (block back button)
314
- return true;
315
- };
316
- const backHandler = react_native_1.BackHandler.addEventListener('hardwareBackPress', onBackPress);
317
- return () => backHandler.remove();
318
- }, []);
308
+ // Removed screen-level hardware back handler to allow only header back button navigation
319
309
  return (react_1.default.createElement(SafeAreaWrapper_1.default, { includeTop: true, bottomPadding: 0, statusBarColor: "#000000", statusBarStyle: "light-content" },
320
310
  react_native_1.Platform.OS === 'ios' && react_1.default.createElement(react_native_1.StatusBar, { barStyle: "light-content" }),
321
311
  react_1.default.createElement(react_native_1.View, { style: styles.container },
@@ -587,17 +587,7 @@ const ReviewKYC = ({ onGoBack, onContinue, initialData, }) => {
587
587
  (0, helpers_1.navigate)('FDCalculator');
588
588
  }
589
589
  };
590
- // Handle Android hardware back button
591
- (0, react_1.useEffect)(() => {
592
- if (react_native_1.Platform.OS !== 'android')
593
- return;
594
- const onHardwareBackPress = () => {
595
- handleBackPress();
596
- return true; // Prevent default behavior
597
- };
598
- const backHandler = react_native_1.BackHandler.addEventListener('hardwareBackPress', onHardwareBackPress);
599
- return () => backHandler.remove();
600
- }, [defaultProviderId, workflowInstanceId, applicationId, entityId]);
590
+ // Removed screen-level hardware back handler to allow only header back button navigation
601
591
  return (react_1.default.createElement(SafeAreaWrapper_1.default, { includeTop: false, bottomPadding: 25, statusBarColor: "#000000", statusBarStyle: "light-content" },
602
592
  react_1.default.createElement(components_1.Header, { title: "Review KYC", onBackPress: handleBackPress, backgroundColor: colors.primary }),
603
593
  react_1.default.createElement(react_native_1.KeyboardAvoidingView, { behavior: react_native_1.Platform.OS === 'ios' ? 'padding' : undefined, style: styles.keyboardAvoidingView, keyboardVerticalOffset: react_native_1.Platform.OS === 'ios' ? 0 : 0 },
@@ -1,2 +1,2 @@
1
1
  import { WORKFLOW_STATES } from '../config/workflowConstants';
2
- export type WorkflowStateSriram = typeof WORKFLOW_STATES.START | typeof WORKFLOW_STATES.INITIATION | typeof WORKFLOW_STATES.CREATE_FD | typeof WORKFLOW_STATES.OCCUPATION | typeof WORKFLOW_STATES.NOMINEE | typeof WORKFLOW_STATES.BANK_DETAILS | typeof WORKFLOW_STATES.KYC | typeof WORKFLOW_STATES.PAYMENT | typeof WORKFLOW_STATES.END;
2
+ export type WorkflowStateSriram = typeof WORKFLOW_STATES[keyof typeof WORKFLOW_STATES] | string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@finspringinnovations/fixeddepositsdk",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "FD SDK for React Native applications",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -123,6 +123,7 @@ export const customerApi = baseApi.injectEndpoints({
123
123
  "customer_id", // ← ADD THIS
124
124
  "current_task",
125
125
  "current_state",
126
+ "current_state_caption",
126
127
  "fd_id",
127
128
  ];
128
129
 
package/src/api/fdApi.ts CHANGED
@@ -142,9 +142,36 @@ export const fdApi = baseApi.injectEndpoints({
142
142
  };
143
143
  },
144
144
  }),
145
+
146
+ getPaymentUrl: builder.query<
147
+ { status?: string; statusCode?: number; message?: string; data?: Array<{ paymentUrl?: string; transactionId?: string }> },
148
+ { providerId?: string; workflowInstanceId?: string; userreferenceid?: string; applicationid?: string; entityid?: string; applicationId: string; panNo: string; isRetry?: boolean }
149
+ >({
150
+ query: (params) => {
151
+ const { providerId, workflowInstanceId, userreferenceid, applicationid, entityid, applicationId, panNo, isRetry = false } = params;
152
+ const qs = new URLSearchParams({
153
+ applicationId,
154
+ panNo,
155
+ isRetry: String(isRetry),
156
+ }).toString();
157
+ return {
158
+ url: `fd/payment/url?${qs}`,
159
+ method: 'GET',
160
+ headers: {
161
+ provider: providerId || '{{shriramprovider}}',
162
+ workflowInstanceId: workflowInstanceId || '{{workflowInstanceId}}',
163
+ userreferenceid: userreferenceid || '{{userreferenceid}}',
164
+ applicationid: applicationid || applicationId || '{{applicationid}}',
165
+ entityid: entityid || '{{entityid}}',
166
+ encryptdecrypt: 'true',
167
+ },
168
+ };
169
+ },
170
+ }),
145
171
  }),
146
172
  });
147
173
 
148
174
  export const { useCreateFDMutation, useFdBankAccountMutation,
149
175
  useFdBankDetailsQuery, useFdBankDetailsSearchMutation,
150
- usePaymentReverseFeedMutation, usePaymentRetryMutation } = fdApi;
176
+ usePaymentReverseFeedMutation, usePaymentRetryMutation,
177
+ useLazyGetPaymentUrlQuery } = fdApi;
@@ -1,69 +1,81 @@
1
1
  // Workflow State Constants
2
2
  export const WORKFLOW_STATES = {
3
- INITIATION: 404,
4
- START: 405,
5
- KYC: 406,
6
- OCCUPATION: 409,
7
- NOMINEE: 407,
8
- BANK_DETAILS: 408,
9
- CREATE_FD: 411,
10
- PAYMENT: 410,
11
- END: 403,
3
+ INITIATION: 'INITIATION',
4
+ START: 'START',
5
+ KYC: 'KYC',
6
+ OCCUPATION: 'OCCUPATION',
7
+ NOMINEE: 'NOMINEE',
8
+ BANK_DETAILS: 'BANK_DETAILS',
9
+ CREATE_FD: 'CREATE_FD',
10
+ PAYMENT: 'PAYMENT',
11
+ END: 'END',
12
+ } as const;
13
+
14
+ // Keep numeric IDs for reference/backward compatibility only
15
+ export const WORKFLOW_STATE_IDS = {
16
+ INITIATION: 404,
17
+ START: 405,
18
+ KYC: 406,
19
+ OCCUPATION: 409,
20
+ NOMINEE: 407,
21
+ BANK_DETAILS: 408,
22
+ CREATE_FD: 411,
23
+ PAYMENT: 410,
24
+ END: 403,
12
25
  } as const;
13
26
 
14
27
  export const SHRIRAM_WORKFLOW_STATES = {
15
- INITIATION: 404,
16
- START: 405,
17
- KYC: 406,
18
- OCCUPATION: 409,
19
- NOMINEE: 407,
20
- BANK_DETAILS: 408,
21
- CREATE_FD: 411,
22
- PAYMENT: 410,
23
- END: 403,
28
+ START: 'SHRIRAM_V1_S1_START',
29
+ INITIATION: 'SHRIRAM_V1_S2_INITIATION',
30
+ KYC: 'SHRIRAM_V1_S3_CUSTOMER_INFO_KYC',
31
+ OCCUPATION: 'SHRIRAM_V1_S4_OCCUPATION',
32
+ NOMINEE: 'SHRIRAM_V1_S5_NOMINEE_DETAILS',
33
+ BANK_DETAILS: 'SHRIRAM_V1_S6_BANK_DETAILS',
34
+ CREATE_FD: 'SHRIRAM_V1_S7_FD_CREATION',
35
+ PAYMENT: 'SHRIRAM_V1_S8_PAYMENT',
36
+ END: 'SHRIRAM_V1_S9_END',
24
37
  } as const;
25
38
 
26
39
  export const MAHINDRA_WORKFLOW_STATES = {
27
- INITIATION: 404,
28
- START: 405,
29
- KYC: 444,
30
- OCCUPATION: 447,
31
- NOMINEE: 448,
32
- BANK_DETAILS: 449,
33
- CREATE_FD: 411,
34
- PAYMENT: 450,
35
- END: 403,
36
- AADHAAR_VERIFICATION: 451,
37
- /** KYC completed / post-KYC success – open KYCSuccess (Pay Now) */
38
- KYC_SUCCESS: 446,
40
+ START: 'MAHINDRA_V1_S1_START',
41
+ INITIATION: 'MAHINDRA_V1_S2_INITIATION',
42
+ DEMOGRAPHIC_INFO: 'MAHINDRA_V1_S3_DEMOGRAPHIC_INFO',
43
+ KYC: 'MAHINDRA_V1_S4_KYC',
44
+ OCCUPATION: 'MAHINDRA_V1_S5_OCCUPATION',
45
+ NOMINEE: 'MAHINDRA_V1_S6_NOMINEE_DETAILS',
46
+ BANK_DETAILS: 'MAHINDRA_V1_S7_BANK_DETAILS',
47
+ CREATE_FD: 'MAHINDRA_V1_S8_FD_CREATION',
48
+ PAYMENT: 'MAHINDRA_V1_S9_PAYMENT',
49
+ END: 'MAHINDRA_V1_S10_END',
50
+ AADHAAR_VERIFICATION: 'MAHINDRA_V1_S4_KYC',
39
51
  } as const;
40
52
 
41
53
  // Workflow Task Constants
42
54
  export const WORKFLOW_TASKS = {
43
- RESEND_OTP: 11045,
44
- VALIDATE_OTP: 11047,
55
+ RESEND_OTP: 11045,
56
+ VALIDATE_OTP: 11047,
45
57
  } as const;
46
58
 
47
59
  // Type definitions for TypeScript
48
60
  export type WorkflowState = typeof WORKFLOW_STATES[keyof typeof WORKFLOW_STATES];
49
61
  export type WorkflowTask = typeof WORKFLOW_TASKS[keyof typeof WORKFLOW_TASKS];
50
62
 
51
- // Helper function to get workflow state name
63
+ // Helper function to get workflow state name from ID
52
64
  export const getWorkflowStateName = (stateId: number): string | undefined => {
53
- const entry = Object.entries(WORKFLOW_STATES).find(([_, value]) => value === stateId);
54
- return entry ? entry[0] : undefined;
65
+ const entry = Object.entries(WORKFLOW_STATE_IDS).find(([_, value]) => value === stateId);
66
+ return entry ? entry[0] : undefined;
55
67
  };
56
68
 
57
69
  // Helper function to get workflow task name
58
70
  export const getWorkflowTaskName = (taskId: number): string | undefined => {
59
- const entry = Object.entries(WORKFLOW_TASKS).find(([_, value]) => value === taskId);
60
- return entry ? entry[0] : undefined;
71
+ const entry = Object.entries(WORKFLOW_TASKS).find(([_, value]) => value === taskId);
72
+ return entry ? entry[0] : undefined;
61
73
  };
62
74
 
63
75
  // Export all as a single object for convenience
64
76
  export const WORKFLOW_CONSTANTS = {
65
- STATES: WORKFLOW_STATES,
66
- TASKS: WORKFLOW_TASKS,
77
+ STATES: WORKFLOW_STATES,
78
+ TASKS: WORKFLOW_TASKS,
67
79
  } as const;
68
80
 
69
81
  export default WORKFLOW_CONSTANTS;
@@ -1,92 +1,92 @@
1
1
  // Bank and payment related strings
2
2
  export const BANK_STRINGS = {
3
- // Screen titles
4
- BANK_DETAILS_TITLE: 'Bank Details',
5
- ADD_BANK_ACCOUNT_TITLE: 'Add Bank Account',
6
- FIND_IFSC_TITLE: 'Find IFSC',
7
- PAYMENT_DETAILS_TITLE: 'Payment Details',
8
- PAYMENT_STATUS_TITLE: 'Payment Status',
3
+ // Screen titles
4
+ BANK_DETAILS_TITLE: 'Bank Details',
5
+ ADD_BANK_ACCOUNT_TITLE: 'Add Bank Account',
6
+ FIND_IFSC_TITLE: 'Find IFSC',
7
+ PAYMENT_DETAILS_TITLE: 'Payment Details',
8
+ PAYMENT_STATUS_TITLE: 'Payment Status',
9
9
 
10
- // Form labels
11
- ACCOUNT_TYPE_LABEL: 'Account Type',
12
- ACCOUNT_NUMBER_LABEL: 'Account Number',
13
- IFSC_CODE_LABEL: 'IFSC Code',
14
- BANK_NAME_LABEL: 'Bank Name',
15
- BRANCH_NAME_LABEL: 'Branch Name',
16
- ACCOUNT_HOLDER_NAME_LABEL: 'Account Holder Name',
17
- CONFIRM_ACCOUNT_NUMBER_LABEL: 'Confirm Account Number',
10
+ // Form labels
11
+ ACCOUNT_TYPE_LABEL: 'Account Type',
12
+ ACCOUNT_NUMBER_LABEL: 'Account Number',
13
+ IFSC_CODE_LABEL: 'IFSC Code',
14
+ BANK_NAME_LABEL: 'Bank Name',
15
+ BRANCH_NAME_LABEL: 'Branch Name',
16
+ ACCOUNT_HOLDER_NAME_LABEL: 'Account Holder Name',
17
+ CONFIRM_ACCOUNT_NUMBER_LABEL: 'Confirm Account Number',
18
18
 
19
- // Placeholders
20
- ACCOUNT_TYPE_PLACEHOLDER: 'Select option',
21
- ACCOUNT_NUMBER_PLACEHOLDER: 'Enter Account Number',
22
- IFSC_CODE_PLACEHOLDER: 'Enter IFSC Code',
23
- BANK_NAME_PLACEHOLDER: 'Bank Name',
24
- BRANCH_NAME_PLACEHOLDER: 'Branch Name',
25
- ACCOUNT_HOLDER_NAME_PLACEHOLDER: 'Enter Account Holder Name',
26
- CONFIRM_ACCOUNT_NUMBER_PLACEHOLDER: 'Re-enter Account Number',
19
+ // Placeholders
20
+ ACCOUNT_TYPE_PLACEHOLDER: 'Select option',
21
+ ACCOUNT_NUMBER_PLACEHOLDER: 'Enter Account Number',
22
+ IFSC_CODE_PLACEHOLDER: 'Enter IFSC Code',
23
+ BANK_NAME_PLACEHOLDER: 'Bank Name',
24
+ BRANCH_NAME_PLACEHOLDER: 'Branch Name',
25
+ ACCOUNT_HOLDER_NAME_PLACEHOLDER: 'Enter Account Holder Name',
26
+ CONFIRM_ACCOUNT_NUMBER_PLACEHOLDER: 'Re-enter Account Number',
27
27
 
28
- // Account types
29
- ACCOUNT_TYPE_SAVINGS: 'Savings Account',
30
- ACCOUNT_TYPE_CURRENT: 'Current Account',
31
- ACCOUNT_TYPE_FD: 'Fixed Deposit Account',
32
- ACCOUNT_TYPE_RD: 'Recurring Deposit Account',
28
+ // Account types
29
+ ACCOUNT_TYPE_SAVINGS: 'Savings Account',
30
+ ACCOUNT_TYPE_CURRENT: 'Current Account',
31
+ ACCOUNT_TYPE_FD: 'Fixed Deposit Account',
32
+ ACCOUNT_TYPE_RD: 'Recurring Deposit Account',
33
33
 
34
- // Buttons
35
- ADD_BANK_BUTTON: 'Add Bank Account',
36
- UPDATE_BANK_BUTTON: 'Update Bank Account',
37
- DELETE_BANK_BUTTON: 'Delete Bank Account',
38
- FIND_IFSC_BUTTON: 'Find IFSC',
39
- VERIFY_ACCOUNT_BUTTON: 'Verify Account',
40
- PROCEED_PAYMENT_BUTTON: 'Proceed to Payment',
41
- RETRY_PAYMENT_BUTTON: 'Retry Payment',
42
- REFRESH_STATUS_BUTTON: 'Refresh Status',
34
+ // Buttons
35
+ ADD_BANK_BUTTON: 'Add Bank Account',
36
+ UPDATE_BANK_BUTTON: 'Update Bank Account',
37
+ DELETE_BANK_BUTTON: 'Delete Bank Account',
38
+ FIND_IFSC_BUTTON: 'Find IFSC',
39
+ VERIFY_ACCOUNT_BUTTON: 'Verify Account',
40
+ PROCEED_PAYMENT_BUTTON: 'Proceed to Payment',
41
+ RETRY_PAYMENT_BUTTON: 'Retry Payment',
42
+ REFRESH_STATUS_BUTTON: 'Refresh Status',
43
43
 
44
- // Messages
45
- BANK_ACCOUNT_ADDED_SUCCESS: 'Bank account added successfully',
46
- BANK_ACCOUNT_ADDED_FAILED: 'Failed to add bank account',
47
- BANK_ACCOUNT_UPDATED_SUCCESS: 'Bank account updated successfully',
48
- BANK_ACCOUNT_UPDATED_FAILED: 'Failed to update bank account',
49
- BANK_ACCOUNT_DELETED_SUCCESS: 'Bank account deleted successfully',
50
- BANK_ACCOUNT_DELETED_FAILED: 'Failed to delete bank account',
51
- IFSC_FOUND_SUCCESS: 'IFSC details found',
52
- IFSC_NOT_FOUND: 'IFSC code not found',
53
- ACCOUNT_VERIFIED_SUCCESS: 'Account verified successfully',
54
- ACCOUNT_VERIFICATION_FAILED: 'Account verification failed',
55
- PAYMENT_SUCCESS: 'Payment completed successfully',
56
- PAYMENT_FAILED: 'Payment failed',
57
- PAYMENT_PENDING: 'Payment is pending',
58
- PAYMENT_PROCESSING: 'Payment is being processed',
44
+ // Messages
45
+ BANK_ACCOUNT_ADDED_SUCCESS: 'Bank account added successfully',
46
+ BANK_ACCOUNT_ADDED_FAILED: 'Failed to add bank account',
47
+ BANK_ACCOUNT_UPDATED_SUCCESS: 'Bank account updated successfully',
48
+ BANK_ACCOUNT_UPDATED_FAILED: 'Failed to update bank account',
49
+ BANK_ACCOUNT_DELETED_SUCCESS: 'Bank account deleted successfully',
50
+ BANK_ACCOUNT_DELETED_FAILED: 'Failed to delete bank account',
51
+ IFSC_FOUND_SUCCESS: 'IFSC details found',
52
+ IFSC_NOT_FOUND: 'IFSC code not found',
53
+ ACCOUNT_VERIFIED_SUCCESS: 'Account verified successfully',
54
+ ACCOUNT_VERIFICATION_FAILED: 'Account verification failed',
55
+ PAYMENT_SUCCESS: 'Payment completed successfully',
56
+ PAYMENT_FAILED: 'Payment failed',
57
+ PAYMENT_PENDING: 'Payment is pending',
58
+ PAYMENT_PROCESSING: 'Payment is being processed',
59
59
 
60
- // Validation messages
61
- ACCOUNT_TYPE_REQUIRED: 'Account type is required',
62
- ACCOUNT_NUMBER_REQUIRED: 'Account number is required',
63
- IFSC_CODE_REQUIRED: 'IFSC code is required',
64
- BANK_NAME_REQUIRED: 'Bank name is required',
65
- BRANCH_NAME_REQUIRED: 'Branch name is required',
66
- ACCOUNT_HOLDER_NAME_REQUIRED: 'Account holder name is required',
67
- INVALID_ACCOUNT_NUMBER: 'Invalid account number',
68
- INVALID_IFSC_CODE: 'Invalid IFSC code',
69
- ACCOUNT_NUMBER_MISMATCH: 'Account numbers do not match',
70
- IFSC_CODE_NOT_FOUND: 'IFSC code not found. Please verify and try again.',
60
+ // Validation messages
61
+ ACCOUNT_TYPE_REQUIRED: 'Account type is required',
62
+ ACCOUNT_NUMBER_REQUIRED: 'Account number is required',
63
+ IFSC_CODE_REQUIRED: 'IFSC code is required',
64
+ BANK_NAME_REQUIRED: 'Bank name is required',
65
+ BRANCH_NAME_REQUIRED: 'Branch name is required',
66
+ ACCOUNT_HOLDER_NAME_REQUIRED: 'Account holder name is required',
67
+ INVALID_ACCOUNT_NUMBER: 'Invalid account number',
68
+ INVALID_IFSC_CODE: 'Invalid IFSC code',
69
+ ACCOUNT_NUMBER_MISMATCH: 'Account numbers do not match',
70
+ IFSC_CODE_NOT_FOUND: 'IFSC code not found. Please verify and try again.',
71
71
 
72
- // Status messages
73
- PAYMENT_STATUS_SUCCESS: 'Payment Successful',
74
- PAYMENT_STATUS_FAILED: 'Payment Failed',
75
- PAYMENT_STATUS_PENDING: 'Payment Pending',
76
- PAYMENT_STATUS_PROCESSING: 'Processing Payment',
77
- PAYMENT_STATUS_CANCELLED: 'Payment Cancelled',
72
+ // Status messages
73
+ PAYMENT_STATUS_SUCCESS: 'Payment Successful',
74
+ PAYMENT_STATUS_FAILED: 'Payment Failed',
75
+ PAYMENT_STATUS_PENDING: 'Payment Pending',
76
+ PAYMENT_STATUS_PROCESSING: 'Processing Payment',
77
+ PAYMENT_STATUS_CANCELLED: 'Payment Cancelled',
78
78
 
79
- // Instructions
80
- BANK_DETAILS_INSTRUCTIONS: 'Please provide your bank account details for FD processing',
81
- IFSC_INSTRUCTIONS: 'Enter IFSC code to find bank and branch details',
82
- PAYMENT_INSTRUCTIONS: 'Please complete the payment to proceed with FD creation',
83
- ACCOUNT_VERIFICATION_INSTRUCTIONS: 'Your account will be verified before processing',
84
- PAYMENT_SUCCESS_DISCLAIMER: 'Your FD request has been submitted successfully and is currently under review. The review process may take 2–3 days. You will receive all related updates and information via email.',
79
+ // Instructions
80
+ BANK_DETAILS_INSTRUCTIONS: 'Please provide your bank account details for FD processing',
81
+ IFSC_INSTRUCTIONS: 'Enter IFSC code to find bank and branch details',
82
+ PAYMENT_INSTRUCTIONS: 'Please complete the payment to proceed with FD creation',
83
+ ACCOUNT_VERIFICATION_INSTRUCTIONS: 'Your account will be verified before processing',
84
+ PAYMENT_SUCCESS_DISCLAIMER: 'Your FD request has been submitted successfully and is currently under review. The review process may take 2–3 days. You will receive all related updates and information via email.',
85
85
 
86
- // Error messages
87
- BANK_VERIFICATION_FAILED: 'Bank account verification failed',
88
- PAYMENT_GATEWAY_ERROR: 'Payment gateway error occurred',
89
- INSUFFICIENT_FUNDS: 'Insufficient funds in account',
90
- PAYMENT_TIMEOUT: 'Payment request timed out',
91
- BANK_SERVICE_UNAVAILABLE: 'Bank service is temporarily unavailable',
86
+ // Error messages
87
+ BANK_VERIFICATION_FAILED: 'Bank account verification failed',
88
+ PAYMENT_GATEWAY_ERROR: 'Payment gateway error occurred',
89
+ INSUFFICIENT_FUNDS: 'Insufficient funds in account',
90
+ PAYMENT_TIMEOUT: 'Payment request timed out',
91
+ BANK_SERVICE_UNAVAILABLE: 'Bank service is temporarily unavailable',
92
92
  } as const;