@tap-payments/auth-jsconnect 2.12.7-development → 2.12.7-sandbox

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 (42) hide show
  1. package/README.md +60 -10
  2. package/build/api/file.d.ts +1 -0
  3. package/build/api/file.js +9 -1
  4. package/build/api/index.d.ts +1 -0
  5. package/build/components/Tooltip/Tooltip.js +1 -1
  6. package/build/constants/api.js +1 -1
  7. package/build/constants/app.d.ts +3 -0
  8. package/build/constants/app.js +15 -6
  9. package/build/features/app/connectExpress/connectExpressStore.d.ts +11 -1
  10. package/build/features/app/connectExpress/connectExpressStore.js +196 -18
  11. package/build/features/app/individual/individualStore.js +2 -1
  12. package/build/features/app/terminal/terminalStore.d.ts +3 -0
  13. package/build/features/app/terminal/terminalStore.js +34 -1
  14. package/build/features/connectExpress/ConnectExpress.js +6 -3
  15. package/build/features/connectExpress/screens/AuthenticationList/AuthenticationList.js +11 -8
  16. package/build/features/connectExpress/screens/BusinessCountry/BusinessCountry.js +5 -1
  17. package/build/features/connectExpress/screens/CollectIndividualInfo/CollectIndividualInfo.js +8 -7
  18. package/build/features/connectExpress/screens/Email/Email.d.ts +5 -0
  19. package/build/features/connectExpress/screens/Email/Email.js +57 -0
  20. package/build/features/connectExpress/screens/Email/EmailField.d.ts +8 -0
  21. package/build/features/connectExpress/screens/Email/EmailField.js +52 -0
  22. package/build/features/connectExpress/screens/Email/index.d.ts +3 -0
  23. package/build/features/connectExpress/screens/Email/index.js +2 -0
  24. package/build/features/connectExpress/screens/Email/validation.d.ts +8 -0
  25. package/build/features/connectExpress/screens/Email/validation.js +4 -0
  26. package/build/features/connectExpress/screens/NIDMissed/NID.js +7 -4
  27. package/build/features/connectExpress/screens/OTP/OTP.js +19 -12
  28. package/build/features/connectExpress/screens/OTP/OTPInput.js +15 -6
  29. package/build/features/featuresScreens.js +5 -0
  30. package/build/features/kyc/screens/Terms/Terms.js +6 -5
  31. package/build/features/terminal/screens/TerminalDeviceList/TerminalDeviceList.js +2 -1
  32. package/build/features/terminal/screens/shared/POSDeviceList.js +5 -5
  33. package/build/hooks/useCountry.d.ts +1 -0
  34. package/build/hooks/useCountry.js +3 -2
  35. package/build/utils/common.js +3 -3
  36. package/build/utils/file.d.ts +1 -0
  37. package/build/utils/file.js +6 -0
  38. package/build/utils/index.d.ts +1 -0
  39. package/build/utils/index.js +1 -0
  40. package/build/utils/string.d.ts +1 -0
  41. package/build/utils/string.js +5 -0
  42. package/package.json +2 -2
package/README.md CHANGED
@@ -20,12 +20,17 @@ yarn add @tap-payments/auth-jsconnect
20
20
 
21
21
  ## Features
22
22
 
23
- - [Connect](#Connect)
24
- - [Business](#Business)
25
- - [Password](#Password)
26
- - [Individual](#Individual)
27
- - [Bank](#Bank)
28
- - [Tax](#Tax)
23
+ - [Connect](#Connect) - Create a new account with Tap Payments
24
+ - [ConnectExpress](#ConnectExpress) - Simplified connect flow
25
+ - [Business](#Business) - Business entity onboarding and verification
26
+ - [Individual](#Individual) - Individual entity onboarding and verification
27
+ - [Entity](#Entity) - Entity management and verification
28
+ - [Password](#Password) - Password management and recovery
29
+ - [Bank](#Bank) - Bank account management
30
+ - [Tax](#Tax) - Tax information management
31
+ - [Terminal](#Terminal) - Terminal kit for point-of-sale operations
32
+ - [Auth](#Auth) - Authentication module
33
+ - [KYC](#KYC) - Know Your Customer verification
29
34
 
30
35
  ## Examples
31
36
 
@@ -135,17 +140,48 @@ const App = () => {
135
140
  ```
136
141
 
137
142
  ## Connect
138
- - Help our merchants to create a account with Tap Payments
143
+ - Help merchants create an account with Tap Payments
139
144
 
140
- ## Business
145
+ ## ConnectExpress
146
+ - Streamlined onboarding flow with simplified user experience
141
147
 
142
- ## Password
148
+ ## Business
149
+ - Business entity registration and verification
150
+ - License number validation
151
+ - Support for creating new sessions after expiry
143
152
 
144
153
  ## Individual
154
+ - Individual entity registration and verification
155
+ - Arabic name validation (English names only accepted)
156
+ - Support for creating new sessions after expiry
157
+
158
+ ## Entity
159
+ - Entity information management
160
+ - Frontend-editable fields even when non-editable from backend
161
+ - Entity verification workflows
162
+
163
+ ## Password
164
+ - Password management and recovery
165
+ - Session expiry handling with new session creation support
145
166
 
146
167
  ## Bank
168
+ - Bank account information management and verification
147
169
 
148
170
  ## Tax
171
+ - Tax identification and information management
172
+ - Support for creating new sessions after expiry
173
+ - UNN Collection logic improvements
174
+
175
+ ## Terminal
176
+ - Point-of-sale terminal operations
177
+ - Session expiry management with new session creation support
178
+ - Hotfix for improved session handling
179
+
180
+ ## Auth
181
+ - Core authentication module for the library
182
+
183
+ ## KYC
184
+ - Know Your Customer verification processes
149
185
 
150
186
  ```
151
187
 
@@ -164,4 +200,18 @@ const App = () => {
164
200
  | onFlowCompleted `required` - `function` | callback function will called after completing the flow |
165
201
  | onReady `required` - `function` | callback function will call after loading library configuration |
166
202
  | onStepError `required` - `function` | callback function will call in case if any error happened in the screen |
167
- | onStepStarted `required` - `function` | callback function will call in the begging of each step |
203
+ | onStepCompleted `optional` - `function` | callback function will call after completing each step |
204
+ | onStepStarted `required` - `function` | callback function will call in the beginning of each step |
205
+
206
+ ## Branch Information
207
+
208
+ This repository maintains multiple branches for different environments and stages:
209
+
210
+ | Branch | Purpose | Environment |
211
+ | ------------- | ------------------------------ | ----------- |
212
+ | `main` | Production releases | Production |
213
+ | `beta` | Beta features and testing | Beta |
214
+ | `sandbox` | Sandbox environment testing | Sandbox |
215
+ | `development` | Development features and fixes | Development |
216
+
217
+ **Workflow**: `development` → `sandbox` → `beta` → `main` (production)
@@ -10,5 +10,6 @@ declare const fileService: {
10
10
  uploadFile: (data: UploadFileBody, config?: AxiosRequestConfig) => Promise<import("axios").AxiosResponse<any, any, {}>>;
11
11
  uploadFileInfo: (data: UploadFileBody, config?: AxiosRequestConfig) => Promise<any>;
12
12
  downloadFile: (id: string, name: string, config?: AxiosRequestConfig) => Promise<import("axios").AxiosResponse<any, any, {}>>;
13
+ retrieveFileInfo: (fileId: string) => Promise<any>;
13
14
  };
14
15
  export { fileService };
package/build/api/file.js CHANGED
@@ -29,9 +29,17 @@ var downloadFile = function (id, name, config) {
29
29
  return response;
30
30
  });
31
31
  };
32
+ var retrieveFileInfo = function (fileId) {
33
+ return httpClient({
34
+ method: 'get',
35
+ url: "".concat(ENDPOINT_PATHS.FILES_PATH, "/content?fileId=").concat(fileId),
36
+ responseType: 'blob'
37
+ });
38
+ };
32
39
  var fileService = {
33
40
  uploadFile: uploadFile,
34
41
  uploadFileInfo: uploadFileInfo,
35
- downloadFile: downloadFile
42
+ downloadFile: downloadFile,
43
+ retrieveFileInfo: retrieveFileInfo
36
44
  };
37
45
  export { fileService };
@@ -157,6 +157,7 @@ declare const API: {
157
157
  uploadFile: (data: UploadFileBody, config?: import("axios").AxiosRequestConfig<any> | undefined) => Promise<import("axios").AxiosResponse<any, any, {}>>;
158
158
  uploadFileInfo: (data: UploadFileBody, config?: import("axios").AxiosRequestConfig<any> | undefined) => Promise<any>;
159
159
  downloadFile: (id: string, name: string, config?: import("axios").AxiosRequestConfig<any> | undefined) => Promise<import("axios").AxiosResponse<any, any, {}>>;
160
+ retrieveFileInfo: (fileId: string) => Promise<any>;
160
161
  };
161
162
  documentService: {
162
163
  updateDocumentInfo: (data: DocumentUpdateBody) => Promise<any>;
@@ -33,7 +33,7 @@ var StyledTooltip = styled(function (_a) {
33
33
  var _b;
34
34
  var theme = _a.theme;
35
35
  return (_b = {},
36
- _b["& .".concat(tooltipClasses.tooltip)] = __assign(__assign({ color: alpha(theme.palette.text.primary, 0.5), width: 'fit-content', maxHeight: 'fit-content' }, theme.typography.body2), { fontWeight: theme.typography.fontWeightLight, backgroundColor: theme.palette.secondary.light, border: "1px solid ".concat(alpha(theme.palette.divider, 0.8)) }),
36
+ _b["& .".concat(tooltipClasses.tooltip)] = __assign(__assign({ color: alpha(theme.palette.text.primary, 0.5), width: 'fit-content', maxHeight: 'fit-content' }, theme.typography.body2), { fontWeight: theme.typography.fontWeightLight, backgroundColor: theme.palette.secondary.light, border: "1px solid ".concat(alpha(theme.palette.divider, 0.8)), zIndex: 2147483647 }),
37
37
  _b);
38
38
  });
39
39
  var TextStyled = styled(Text, { shouldForwardProp: function (prop) { return prop !== 'isAr'; } })(function (_a) {
@@ -1,7 +1,7 @@
1
1
  var SANDBOX_BASE_URL = 'https://connect-mw.sandbox.tap.company/middleware';
2
2
  var PRODUCTION_BASE_URL = 'https://connect-mw.tap.company/middleware';
3
3
  var PRODUCTION_BASE_URL_SA = 'https://connect-mw.tap.com.sa/middleware';
4
- var PRODUCTION_BASE_URL_SA_DR = 'https://connect-mw.tap.com.sa/middleware';
4
+ var PRODUCTION_BASE_URL_SA_DR = 'https://connect-mw-tmp.tap.com.sa/middleware';
5
5
  var DEV_BASE_URL = 'https://connect-mw.dev.tap.company/middleware';
6
6
  var API_BUSINESS_COUNTRIES = 'https://godata.sandbox.tap.company/api/v1/business/country/list';
7
7
  var API_COUNTRIES = 'https://utilities.tap.company/api/v1/country/list';
@@ -1,5 +1,6 @@
1
1
  import { ScreenStepNavigation, BusinessType, POSInfo, TerminalInfo } from '../@types';
2
2
  export declare const CONNECT_DEV_URL = "https://connect.dev.tap.company";
3
+ export declare const CONNECT_SANDBOX_URL = "https://connect.sandbox.tap.company";
3
4
  export declare const CONNECT_PROD_URL = "https://connect.tap.company";
4
5
  export declare const CLIENT_ORIGIN: string;
5
6
  export declare const TAP_WEBSITE = "https://www.tap.company/";
@@ -130,6 +131,8 @@ export declare const AUTH_STEP_NAMES: {
130
131
  export declare const CONNECT_EXPRESS_STEP_NAMES: {
131
132
  CREATE_AUTH_MOBILE: string;
132
133
  VERIFY_AUTH_MOBILE: string;
134
+ CREATE_AUTH_EMAIL: string;
135
+ VERIFY_AUTH_EMAIL: string;
133
136
  CREATE_AUTH_CIVIL_ID: string;
134
137
  VERIFY_AUTH_CIVIL_ID: string;
135
138
  CREATE_AUTH_NID: string;
@@ -1,6 +1,7 @@
1
1
  import { BusinessType } from '../@types';
2
2
  import { CONNECT_FLOWS } from './flows';
3
3
  export var CONNECT_DEV_URL = 'https://connect.dev.tap.company';
4
+ export var CONNECT_SANDBOX_URL = 'https://connect.sandbox.tap.company';
4
5
  export var CONNECT_PROD_URL = 'https://connect.tap.company';
5
6
  export var CLIENT_ORIGIN = window.location.origin;
6
7
  export var TAP_WEBSITE = 'https://www.tap.company/';
@@ -151,9 +152,15 @@ export var CONNECT_EXPRESS_SCREENS_NAVIGATION = [
151
152
  prev: ['CONNECT_EXPRESS_NID_STEP', 'CONNECT_EXPRESS_CIVIL_ID_STEP'],
152
153
  order: 1
153
154
  },
155
+ {
156
+ name: 'CONNECT_EXPRESS_EMAIL_STEP',
157
+ next: 'CONNECT_EXPRESS_OTP_STEP',
158
+ prev: 'CONNECT_EXPRESS_BUSINESS_COUNTRY_STEP',
159
+ order: 1
160
+ },
154
161
  {
155
162
  name: 'CONNECT_EXPRESS_BUSINESS_COUNTRY_STEP',
156
- next: ['CONNECT_EXPRESS_NID_STEP', 'CONNECT_EXPRESS_MOBILE_STEP'],
163
+ next: ['CONNECT_EXPRESS_NID_STEP', 'CONNECT_EXPRESS_MOBILE_STEP', 'CONNECT_EXPRESS_EMAIL_STEP'],
157
164
  prev: '',
158
165
  order: 1
159
166
  },
@@ -196,20 +203,19 @@ export var CONNECT_EXPRESS_SCREENS_NAVIGATION = [
196
203
  'CONNECT_EXPRESS_AUTHENTICATION_LIST_STEP',
197
204
  'CONNECT_EXPRESS_OTP_VERIFY_SECURITY_ERROR_STEP'
198
205
  ],
199
- prev: 'CONNECT_EXPRESS_MOBILE_STEP',
200
- order: 2,
201
- back: 'CONNECT_EXPRESS_MOBILE_STEP'
206
+ prev: ['CONNECT_EXPRESS_MOBILE_STEP', 'CONNECT_EXPRESS_EMAIL_STEP'],
207
+ order: 2
202
208
  },
203
209
  {
204
210
  name: 'CONNECT_EXPRESS_AUTHENTICATION_LIST_STEP',
205
211
  next: ['CONNECT_EXPRESS_AUTH_MERCHANT_LIST_STEP', 'CONNECT_EXPRESS_AUTH_ACCOUNT_CREATED_STEP'],
206
- prev: ['CONNECT_EXPRESS_MOBILE_STEP', 'CONNECT_EXPRESS_NID_STEP', 'CONNECT_EXPRESS_CIVIL_ID_STEP'],
212
+ prev: ['CONNECT_EXPRESS_MOBILE_STEP', 'CONNECT_EXPRESS_EMAIL_STEP', 'CONNECT_EXPRESS_NID_STEP', 'CONNECT_EXPRESS_CIVIL_ID_STEP'],
207
213
  order: 3
208
214
  },
209
215
  {
210
216
  name: 'CONNECT_EXPRESS_NID_MISSED_STEP',
211
217
  next: ['CONNECT_EXPRESS_IDENTITY_VERIFY_NAFATH_STEP', 'CONNECT_EXPRESS_COLLECT_INDIVIDUAL_INFO_STEP'],
212
- prev: 'CONNECT_EXPRESS_MOBILE_STEP',
218
+ prev: ['CONNECT_EXPRESS_MOBILE_STEP', 'CONNECT_EXPRESS_EMAIL_STEP'],
213
219
  order: 3
214
220
  },
215
221
  {
@@ -270,6 +276,7 @@ export var CONNECT_EXPRESS_SCREENS_NAVIGATION = [
270
276
  ],
271
277
  prev: [
272
278
  'CONNECT_EXPRESS_MOBILE_STEP',
279
+ 'CONNECT_EXPRESS_EMAIL_STEP',
273
280
  'CONNECT_EXPRESS_NID_STEP',
274
281
  'CONNECT_EXPRESS_CIVIL_ID_STEP',
275
282
  'CONNECT_EXPRESS_CIVIL_ID_MISSED_STEP',
@@ -1314,6 +1321,8 @@ export var AUTH_STEP_NAMES = {
1314
1321
  export var CONNECT_EXPRESS_STEP_NAMES = {
1315
1322
  CREATE_AUTH_MOBILE: 'connect_express_create_auth_mobile',
1316
1323
  VERIFY_AUTH_MOBILE: 'connect_express_verify_auth_mobile',
1324
+ CREATE_AUTH_EMAIL: 'connect_express_create_auth_email',
1325
+ VERIFY_AUTH_EMAIL: 'connect_express_verify_auth_email',
1317
1326
  CREATE_AUTH_CIVIL_ID: 'connect_express_create_auth_civil_id',
1318
1327
  VERIFY_AUTH_CIVIL_ID: 'connect_express_verify_auth_civil_id',
1319
1328
  CREATE_AUTH_NID: 'connect_express_create_auth_nid',
@@ -1,5 +1,5 @@
1
1
  import { RootState } from '../../../app/store';
2
- import { MobileFormValues, NIDFormValues, CivilFormValues, OTPFormValues, IndividualFormValues, SharedState, FlowsTypes, ActionState, CountryCode, AuthForType, BusinessDataFormValues, AsyncThunkParams, AuthenticationListFormValues, AuthMerchantFormValues, DOBFormValues, MobileOwnershipFormValues, AuthForScreen } from '../../../@types';
2
+ import { MobileFormValues, NIDFormValues, CivilFormValues, OTPFormValues, IndividualFormValues, SharedState, FlowsTypes, ActionState, CountryCode, AuthForType, BusinessDataFormValues, AsyncThunkParams, AuthenticationListFormValues, AuthMerchantFormValues, DOBFormValues, MobileOwnershipFormValues, AuthForScreen, AuthEmailFormValues } from '../../../@types';
3
3
  import { CancelToken } from 'axios';
4
4
  export declare const updateBusinessCountryAsync: import("@reduxjs/toolkit").AsyncThunk<any, string, {}>;
5
5
  export declare const retrieveLeadIdentityByIdAsync: import("@reduxjs/toolkit").AsyncThunk<{
@@ -37,6 +37,14 @@ export declare const resendMobileAuthOTP: import("@reduxjs/toolkit").AsyncThunk<
37
37
  response: any;
38
38
  formData: MobileFormValues;
39
39
  }, MobileFormValues, {}>;
40
+ export declare const createEmailAuthAsync: import("@reduxjs/toolkit").AsyncThunk<{
41
+ response: any;
42
+ formData: AuthEmailFormValues;
43
+ }, AuthEmailFormValues, {}>;
44
+ export declare const resendEmailAuthOTP: import("@reduxjs/toolkit").AsyncThunk<{
45
+ response: any;
46
+ formData: AuthEmailFormValues;
47
+ }, AuthEmailFormValues, {}>;
40
48
  export declare const createAuthSessionExpiredAsync: import("@reduxjs/toolkit").AsyncThunk<{
41
49
  data: any;
42
50
  }, boolean, {}>;
@@ -65,6 +73,7 @@ export declare const createCivilIdAuthAsync: import("@reduxjs/toolkit").AsyncThu
65
73
  formData: CivilFormValues;
66
74
  }, CivilFormValues, {}>;
67
75
  export declare const verifyMobileOtpAsync: import("@reduxjs/toolkit").AsyncThunk<any, OTPFormValues, {}>;
76
+ export declare const verifyEmailOtpAsync: import("@reduxjs/toolkit").AsyncThunk<any, OTPFormValues, {}>;
68
77
  export declare const verifyPACIAsync: import("@reduxjs/toolkit").AsyncThunk<any, verifyPACIAsyncParams, {}>;
69
78
  export declare const createCivilIDAuthIdentityAsync: import("@reduxjs/toolkit").AsyncThunk<{
70
79
  response: any;
@@ -157,6 +166,7 @@ interface ResponseData {
157
166
  export interface ConnectExpressData {
158
167
  isLeadIdPassed: boolean;
159
168
  mobileData: MobileFormValues;
169
+ emailData: AuthEmailFormValues;
160
170
  nidData: NIDFormValues;
161
171
  civilIdData: CivilFormValues;
162
172
  otpData: OTPFormValues & {
@@ -61,7 +61,7 @@ import { FlowsTypes, AuthForType, BusinessType, LicenseType, AuthForScreen } fro
61
61
  import API, { setAuthSessionToGlobalHeaders } from '../../../api';
62
62
  import { ADD_NEW_ENTITY, COLLECT_DOB_INFO_NAFATH, CONNECT_EXPRESS_STEP_NAMES, IDENTIFICATION_TYPE, NAFATH_PACI_TIMEOUT_DURATION, NAFATH_VERIFICATION_FAILED, OTHER_CR_LICENSE, OTHER_FL_LICENSE, SCOPE_AUTH, SCOPE_MERCHANT } from '../../../constants';
63
63
  import { defaultCountry } from '../../../constants';
64
- import { getIndividualName, capitalizeTheFirstLetterOfEachWord, sleep, findCountryByIddPrefix, concatenateObjectValues, isSA, isKW, isOtherThanKWOrSA, sendCustomEventToGTM, sendCustomDimension, getMetaData, isNetworkError, isTimeoutError, isInternalServerError, isAuthenticationVerificationFailed } from '../../../utils';
64
+ import { getIndividualName, capitalizeTheFirstLetterOfEachWord, sleep, findCountryByIddPrefix, concatenateObjectValues, isSA, isKW, isQA, isOtherThanKWOrSA, sendCustomEventToGTM, sendCustomDimension, getMetaData, isNetworkError, isTimeoutError, isInternalServerError, isAuthenticationVerificationFailed } from '../../../utils';
65
65
  export var updateBusinessCountryAsync = createAsyncThunk('connectExpress/updateBusinessCountryAsync', function (countryCode, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
66
66
  var connectExpress, payload, data;
67
67
  return __generator(this, function (_a) {
@@ -81,17 +81,17 @@ export var updateBusinessCountryAsync = createAsyncThunk('connectExpress/updateB
81
81
  });
82
82
  }); });
83
83
  export var retrieveLeadIdentityByIdAsync = createAsyncThunk('expressConnect/retrieveLeadIdentityByIdAsync', function (leadId, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
84
- var settings, countryCode, showBoard, data, _a, country_code, contact, phone, status, board_id, board_info_id, isRegistered, screen_1, _b, boardInfo, boardData, error_1;
85
- var _c, _d, _e, _f, _g;
86
- return __generator(this, function (_h) {
87
- switch (_h.label) {
84
+ var settings, countryCode, showBoard, data, _a, country_code, contact, phone, status, board_id, board_info_id, isRegistered, screen_1, screen_2, _b, boardInfo, boardData, error_1;
85
+ var _c, _d, _e, _f, _g, _h;
86
+ return __generator(this, function (_j) {
87
+ switch (_j.label) {
88
88
  case 0:
89
89
  settings = thunkApi.getState().settings;
90
90
  countryCode = settings.data.businessCountry;
91
91
  showBoard = settings.data.appConfig.showBoard;
92
92
  return [4, API.leadService.retrieveLeadIdentity(leadId)];
93
93
  case 1:
94
- data = _h.sent();
94
+ data = _j.sent();
95
95
  _a = data || {}, country_code = _a.country_code, contact = _a.contact;
96
96
  if (country_code)
97
97
  thunkApi.dispatch(handleSetCountryByIso2(country_code));
@@ -105,14 +105,19 @@ export var retrieveLeadIdentityByIdAsync = createAsyncThunk('expressConnect/retr
105
105
  }
106
106
  isRegistered = (status === null || status === void 0 ? void 0 : status.toLowerCase()) === 'registered';
107
107
  if (!isRegistered && !(data === null || data === void 0 ? void 0 : data.identification) && phone) {
108
- thunkApi.dispatch(handleCurrentActiveScreen('CONNECT_EXPRESS_MOBILE_STEP'));
108
+ screen_1 = isQA(country_code || ((_d = settings.data.businessCountry) === null || _d === void 0 ? void 0 : _d.iso2)) ? 'CONNECT_EXPRESS_EMAIL_STEP' : 'CONNECT_EXPRESS_MOBILE_STEP';
109
+ thunkApi.dispatch(handleCurrentActiveScreen(screen_1));
109
110
  return [2, { data: data, countryCode: countryCode }];
110
111
  }
111
112
  if (!isRegistered && country_code) {
112
- screen_1 = 'CONNECT_EXPRESS_NID_STEP';
113
+ screen_2 = 'CONNECT_EXPRESS_NID_STEP';
113
114
  if (!isSA(data.country_code))
114
- screen_1 = 'CONNECT_EXPRESS_MOBILE_STEP';
115
- thunkApi.dispatch(handleCurrentActiveScreen(screen_1));
115
+ screen_2 = isQA(data.country_code) ? 'CONNECT_EXPRESS_EMAIL_STEP' : 'CONNECT_EXPRESS_MOBILE_STEP';
116
+ thunkApi.dispatch(handleCurrentActiveScreen(screen_2));
117
+ return [2, { data: data, countryCode: countryCode }];
118
+ }
119
+ if (!isRegistered && isQA(settings.data.businessCountry.iso2)) {
120
+ thunkApi.dispatch(handleCurrentActiveScreen('CONNECT_EXPRESS_EMAIL_STEP'));
116
121
  return [2, { data: data, countryCode: countryCode }];
117
122
  }
118
123
  if (!isRegistered && !isSA(settings.data.businessCountry.iso2)) {
@@ -123,11 +128,11 @@ export var retrieveLeadIdentityByIdAsync = createAsyncThunk('expressConnect/retr
123
128
  thunkApi.dispatch(handleCurrentActiveScreen('CONNECT_EXPRESS_NID_STEP'));
124
129
  return [2, { data: data, countryCode: countryCode }];
125
130
  }
126
- if ((_d = data === null || data === void 0 ? void 0 : data.identification) === null || _d === void 0 ? void 0 : _d.authentication_id) {
127
- thunkApi.dispatch(storeAuthId((_e = data === null || data === void 0 ? void 0 : data.identification) === null || _e === void 0 ? void 0 : _e.authentication_id));
131
+ if ((_e = data === null || data === void 0 ? void 0 : data.identification) === null || _e === void 0 ? void 0 : _e.authentication_id) {
132
+ thunkApi.dispatch(storeAuthId((_f = data === null || data === void 0 ? void 0 : data.identification) === null || _f === void 0 ? void 0 : _f.authentication_id));
128
133
  }
129
134
  if (isRegistered && !showBoard) {
130
- (_g = (_f = settings.data.appConfig).onFlowCompleted) === null || _g === void 0 ? void 0 : _g.call(_f, data);
135
+ (_h = (_g = settings.data.appConfig).onFlowCompleted) === null || _h === void 0 ? void 0 : _h.call(_g, data);
131
136
  thunkApi.dispatch(handleCurrentActiveScreen('CONNECT_EXPRESS_ACCOUNT_ALREADY_CREATED_STEP'));
132
137
  return [2, { data: data, countryCode: countryCode }];
133
138
  }
@@ -136,19 +141,19 @@ export var retrieveLeadIdentityByIdAsync = createAsyncThunk('expressConnect/retr
136
141
  return [2, { data: data, countryCode: countryCode }];
137
142
  }
138
143
  if (!(isRegistered && board_id && board_info_id)) return [3, 5];
139
- _h.label = 2;
144
+ _j.label = 2;
140
145
  case 2:
141
- _h.trys.push([2, 4, , 5]);
146
+ _j.trys.push([2, 4, , 5]);
142
147
  return [4, Promise.all([
143
148
  API.boardService.retrieveBoardInfo({ id: board_id, infoId: board_info_id }),
144
149
  API.boardService.retrieveBoardDetails(board_id)
145
150
  ])];
146
151
  case 3:
147
- _b = _h.sent(), boardInfo = _b[0], boardData = _b[1];
152
+ _b = _j.sent(), boardInfo = _b[0], boardData = _b[1];
148
153
  thunkApi.dispatch(handleCurrentActiveScreen('CONNECT_EXPRESS_SUCCESS_WITH_FLOW_BUTTONS_STEP'));
149
154
  return [2, { data: data, countryCode: countryCode, boardInfo: boardInfo, boardData: boardData }];
150
155
  case 4:
151
- error_1 = _h.sent();
156
+ error_1 = _j.sent();
152
157
  thunkApi.dispatch(handleCurrentActiveScreen('CONNECT_EXPRESS_ACCOUNT_ALREADY_CREATED_STEP'));
153
158
  return [2, { data: data, countryCode: countryCode }];
154
159
  case 5: return [2, { data: data, countryCode: countryCode }];
@@ -309,6 +314,61 @@ export var resendMobileAuthOTP = createAsyncThunk('connectExpress/resendMobileAu
309
314
  }
310
315
  });
311
316
  }); });
317
+ export var createEmailAuthAsync = createAsyncThunk('connectExpress/createEmailAuthAsync', function (params, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
318
+ var _a, settings, connectExpress, requestBody, data;
319
+ var _b, _c;
320
+ return __generator(this, function (_d) {
321
+ switch (_d.label) {
322
+ case 0:
323
+ _a = thunkApi.getState(), settings = _a.settings, connectExpress = _a.connectExpress;
324
+ requestBody = {
325
+ country: settings.data.businessCountry.iso2,
326
+ scope: settings.data.appConfig.scope,
327
+ lang: settings.data.language,
328
+ lead_id: connectExpress.data.leadId,
329
+ user_credentail: {
330
+ email: params.email || ''
331
+ },
332
+ sign_in: false,
333
+ is_lead: true,
334
+ step_name: CONNECT_EXPRESS_STEP_NAMES.CREATE_AUTH_EMAIL,
335
+ encryption_contract: ['user_credentail.email']
336
+ };
337
+ return [4, API.authService.createExpressAuth(requestBody)];
338
+ case 1:
339
+ data = _d.sent();
340
+ thunkApi.dispatch(handleNextScreenStep());
341
+ (_c = (_b = settings.data.appConfig).onStepCompleted) === null || _c === void 0 ? void 0 : _c.call(_b, settings.data.activeScreen.name, requestBody.user_credentail);
342
+ return [2, { response: data, formData: params }];
343
+ }
344
+ });
345
+ }); });
346
+ export var resendEmailAuthOTP = createAsyncThunk('connectExpress/resendEmailAuthOTPExpress', function (params, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
347
+ var _a, settings, connectExpress, requestBody, data;
348
+ return __generator(this, function (_b) {
349
+ switch (_b.label) {
350
+ case 0:
351
+ _a = thunkApi.getState(), settings = _a.settings, connectExpress = _a.connectExpress;
352
+ requestBody = {
353
+ country: settings.data.businessCountry.iso2,
354
+ scope: settings.data.appConfig.scope,
355
+ lang: settings.data.language,
356
+ lead_id: connectExpress.data.leadId,
357
+ user_credentail: {
358
+ email: params.email || ''
359
+ },
360
+ sign_in: false,
361
+ is_lead: true,
362
+ step_name: CONNECT_EXPRESS_STEP_NAMES.CREATE_AUTH_EMAIL,
363
+ encryption_contract: ['user_credentail.email']
364
+ };
365
+ return [4, API.authService.createExpressAuth(requestBody)];
366
+ case 1:
367
+ data = _b.sent();
368
+ return [2, { response: data, formData: params }];
369
+ }
370
+ });
371
+ }); });
312
372
  export var createAuthSessionExpiredAsync = createAsyncThunk('connectExpress/createAuthSessionExpiredAsync', function (redirect, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
313
373
  var settings, requestBody, data;
314
374
  return __generator(this, function (_a) {
@@ -614,6 +674,78 @@ export var verifyMobileOtpAsync = createAsyncThunk('connectExpress/verifyMobileO
614
674
  }
615
675
  });
616
676
  }); });
677
+ export var verifyEmailOtpAsync = createAsyncThunk('connectExpress/verifyEmailOtpAsync', function (params, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
678
+ var _a, settings, connectExpress, _b, responseData, leadId, _c, auth_token, device_token, service_name, auth_type, _d, scope, redirectUrl, authData, isScopeAuthentication, bi, isDataHasIndividualOnly, authDataHasValue, payload, data, authId, urlQueryStart, _e, brandList, entityList;
679
+ var _f, _g;
680
+ return __generator(this, function (_h) {
681
+ switch (_h.label) {
682
+ case 0:
683
+ _a = thunkApi.getState(), settings = _a.settings, connectExpress = _a.connectExpress;
684
+ _b = connectExpress.data || {}, responseData = _b.responseData, leadId = _b.leadId;
685
+ if (!(responseData === null || responseData === void 0 ? void 0 : responseData.authData))
686
+ throw new Error('Auth data is missing');
687
+ _c = responseData.authData, auth_token = _c.auth_token, device_token = _c.device_token, service_name = _c.service_name, auth_type = _c.auth_type;
688
+ _d = settings.data.appConfig, scope = _d.scope, redirectUrl = _d.redirectUrl, authData = _d.data;
689
+ isScopeAuthentication = scope === SCOPE_AUTH;
690
+ bi = settings.data.deviceInfo.browser.browser_id;
691
+ isDataHasIndividualOnly = (authData === null || authData === void 0 ? void 0 : authData.length) === 1 && authData.includes('individual');
692
+ authDataHasValue = authData === null || authData === void 0 ? void 0 : authData.length;
693
+ payload = {
694
+ auth_token: auth_token,
695
+ lead_id: leadId,
696
+ data: params.otp,
697
+ auth_type: auth_type,
698
+ device_token: device_token,
699
+ service_name: service_name,
700
+ sign_in: false,
701
+ step_name: CONNECT_EXPRESS_STEP_NAMES.VERIFY_AUTH_EMAIL,
702
+ encryption_contract: ['data']
703
+ };
704
+ return [4, API.authService.verifyExpressAuth(payload).catch(function (err) {
705
+ if (isAuthenticationVerificationFailed(err === null || err === void 0 ? void 0 : err.message))
706
+ thunkApi.dispatch(handleNextScreenStep('CONNECT_EXPRESS_OTP_VERIFY_SECURITY_ERROR_STEP'));
707
+ throw new Error(err === null || err === void 0 ? void 0 : err.message);
708
+ })];
709
+ case 1:
710
+ data = _h.sent();
711
+ setAuthSessionToGlobalHeaders(data === null || data === void 0 ? void 0 : data.auth_session);
712
+ sendCustomEventToGTM({
713
+ event: 'Send Event',
714
+ event_category: 'User Registration Flow',
715
+ event_action: 'First OTP Success'
716
+ });
717
+ (_g = (_f = settings.data.appConfig).onStepCompleted) === null || _g === void 0 ? void 0 : _g.call(_f, settings.data.activeScreen.name, params);
718
+ authId = data.auth.id;
719
+ thunkApi.dispatch(storeAuthId(authId));
720
+ if (isScopeAuthentication && !data.new_user && isDataHasIndividualOnly && authId) {
721
+ if (settings.data.appConfig.mode === 'popup') {
722
+ settings.data.appConfig.onFlowCompleted({ auth_id: authId, bi: bi });
723
+ thunkApi.dispatch(handleOpen(false));
724
+ return [2, data];
725
+ }
726
+ if (redirectUrl) {
727
+ urlQueryStart = redirectUrl.includes('?') ? '&' : '?';
728
+ window.open("".concat(redirectUrl).concat(urlQueryStart, "authentication_id=").concat(authId, "&bi=").concat(bi), '_self');
729
+ return [2, data];
730
+ }
731
+ }
732
+ if (!(isScopeAuthentication && !data.new_user && authDataHasValue)) return [3, 3];
733
+ return [4, thunkApi.dispatch(retrieveAuthenticationListAsync({ individualId: data.individual_id })).unwrap()];
734
+ case 2:
735
+ _e = _h.sent(), brandList = _e.brandList, entityList = _e.entityList;
736
+ if (brandList.length && entityList.length) {
737
+ sleep(100).then(function () { return thunkApi.dispatch(handleNextScreenStep('CONNECT_EXPRESS_AUTHENTICATION_LIST_STEP')); });
738
+ return [2, data];
739
+ }
740
+ _h.label = 3;
741
+ case 3: return [4, thunkApi.dispatch(getLeadByIdAsync(data.lead_id)).unwrap()];
742
+ case 4:
743
+ _h.sent();
744
+ sleep(100).then(function () { return thunkApi.dispatch(handleNextScreenStep('CONNECT_EXPRESS_NID_MISSED_STEP')); });
745
+ return [2, data];
746
+ }
747
+ });
748
+ }); });
617
749
  export var verifyPACIAsync = createAsyncThunk('connectExpress/verifyPACIAsync', function (params, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
618
750
  var _a, settings, connectExpress, authData, _b, scope, redirectUrl, authConfigData, isScopeAuthentication, bi, isDataHasIndividualOnly, authDataHasValue, expiry, interval, maxCalls, count, data, error_3, isSuccess, authId, urlQueryStart, _c, brandList, entityList, stepName, needToCollectMoreInfo, creatingAccount;
619
751
  var _d, _e, _f;
@@ -1543,6 +1675,9 @@ var initialState = {
1543
1675
  mobile: '',
1544
1676
  termAndConditionChecked: false
1545
1677
  },
1678
+ emailData: {
1679
+ email: ''
1680
+ },
1546
1681
  nidData: {
1547
1682
  nid: '',
1548
1683
  termAndConditionChecked: false
@@ -1647,11 +1782,14 @@ export var connectSlice = createSlice({
1647
1782
  var _b = data || {}, identification = _b.identification, contact = _b.contact, terms_conditions_accepted = _b.terms_conditions_accepted;
1648
1783
  if (identification === null || identification === void 0 ? void 0 : identification.id)
1649
1784
  state.data.nidData.nid = identification === null || identification === void 0 ? void 0 : identification.id;
1650
- var phone = (contact || {}).phone;
1785
+ var _c = contact || {}, phone = _c.phone, email = _c.email;
1651
1786
  if (phone) {
1652
1787
  state.data.mobileData.mobile = phone === null || phone === void 0 ? void 0 : phone.number;
1653
1788
  state.data.mobileData.countryCode = countryCode;
1654
1789
  }
1790
+ if (email) {
1791
+ state.data.emailData.email = email;
1792
+ }
1655
1793
  if (terms_conditions_accepted !== undefined && state.data.isLeadIdPassed) {
1656
1794
  state.data.mobileData.termAndConditionChecked = terms_conditions_accepted;
1657
1795
  state.data.nidData.termAndConditionChecked = terms_conditions_accepted;
@@ -1718,6 +1856,31 @@ export var connectSlice = createSlice({
1718
1856
  })
1719
1857
  .addCase(resendMobileAuthOTP.rejected, function (state, action) {
1720
1858
  state.error = action.error.message;
1859
+ })
1860
+ .addCase(createEmailAuthAsync.pending, function (state) {
1861
+ state.loading = true;
1862
+ state.error = null;
1863
+ })
1864
+ .addCase(createEmailAuthAsync.fulfilled, function (state, action) {
1865
+ state.loading = false;
1866
+ state.data.emailData = action.payload.formData;
1867
+ state.data.otpData.authFor = AuthForType.EMAIL;
1868
+ state.data.responseData = __assign(__assign({}, state.data.responseData), { authData: action.payload.response });
1869
+ })
1870
+ .addCase(createEmailAuthAsync.rejected, function (state, action) {
1871
+ state.loading = false;
1872
+ state.error = action.error.message;
1873
+ })
1874
+ .addCase(resendEmailAuthOTP.pending, function (state) {
1875
+ state.error = null;
1876
+ })
1877
+ .addCase(resendEmailAuthOTP.fulfilled, function (state, action) {
1878
+ state.data.emailData = action.payload.formData;
1879
+ state.data.otpData.authFor = AuthForType.EMAIL;
1880
+ state.data.responseData = __assign(__assign({}, state.data.responseData), { authData: action.payload.response });
1881
+ })
1882
+ .addCase(resendEmailAuthOTP.rejected, function (state, action) {
1883
+ state.error = action.error.message;
1721
1884
  })
1722
1885
  .addCase(createAuthSessionExpiredAsync.pending, function (state) {
1723
1886
  state.loading = true;
@@ -1822,6 +1985,21 @@ export var connectSlice = createSlice({
1822
1985
  state.loading = false;
1823
1986
  if (!isAuthenticationVerificationFailed(message))
1824
1987
  state.error = message;
1988
+ })
1989
+ .addCase(verifyEmailOtpAsync.pending, function (state) {
1990
+ state.loading = true;
1991
+ state.error = null;
1992
+ })
1993
+ .addCase(verifyEmailOtpAsync.fulfilled, function (state, action) {
1994
+ var _a;
1995
+ state.loading = false;
1996
+ state.data.responseData = __assign(__assign({}, state.data.responseData), { authData: __assign(__assign({}, (_a = state.data.responseData) === null || _a === void 0 ? void 0 : _a.authData), action.payload) });
1997
+ })
1998
+ .addCase(verifyEmailOtpAsync.rejected, function (state, _a) {
1999
+ var message = _a.error.message;
2000
+ state.loading = false;
2001
+ if (!isAuthenticationVerificationFailed(message))
2002
+ state.error = message;
1825
2003
  })
1826
2004
  .addCase(verifyNafathAsync.pending, function (state) {
1827
2005
  state.loading = true;
@@ -818,7 +818,7 @@ export var updateIndividualInfo = createAsyncThunk('updateIndividualInfo', funct
818
818
  documentsList.push({ type: DocumentPurpose.CUSTOMER_SIGNATURE, images: signatureFileId });
819
819
  if (!(documentsList.length > 0)) return [3, 6];
820
820
  documentBody = {
821
- individual_type_id: ((ids === null || ids === void 0 ? void 0 : ids.length) ? ids.find(function (i) { return i.includes('usr_'); }) : id) || '',
821
+ individual_type_id: ((ids === null || ids === void 0 ? void 0 : ids.length) ? ids[0] : id) || '',
822
822
  country: businessCountry.iso2,
823
823
  documents: documentsList
824
824
  };
@@ -1274,6 +1274,7 @@ export var individualSlice = createSlice({
1274
1274
  state.data.individualData.isAuthorized = is_authorized;
1275
1275
  })
1276
1276
  .addCase(retrieveIndividualInfo.rejected, function (state, action) {
1277
+ state.addOrRequestDetailLoading = false;
1277
1278
  state.error = action.error.message;
1278
1279
  })
1279
1280
  .addCase(getIndividualList.pending, function (state) {
@@ -40,6 +40,9 @@ export declare const linkNewTerminal: import("@reduxjs/toolkit").AsyncThunk<{
40
40
  export declare const retrievePOSDevices: import("@reduxjs/toolkit").AsyncThunk<{
41
41
  data: any;
42
42
  }, void, {}>;
43
+ export declare const retrieveTerminalPlatformBrandLogo: import("@reduxjs/toolkit").AsyncThunk<{
44
+ logo: string;
45
+ }, void, {}>;
43
46
  interface pushNotificationLinkNewTerminalParams {
44
47
  newTerminal: boolean;
45
48
  onSuccess: () => void;