@tap-payments/auth-jsconnect 2.9.35-development → 2.9.36-development

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.
@@ -351,6 +351,11 @@ export declare enum AuthForType {
351
351
  NATIONAL_ID = "national_id",
352
352
  NATIONAL_ID_MISSED = "national_id_missed"
353
353
  }
354
+ export declare enum AuthForScreen {
355
+ INDIVIDUAL = "individual",
356
+ DOB = "dob",
357
+ MOBILE_OWNERSHIP = "mobile_ownership"
358
+ }
354
359
  export declare enum AuthTypeNumber {
355
360
  EMAIL_OTP = 5,
356
361
  MOBILE_OTP = 2,
@@ -43,6 +43,12 @@ export var AuthForType;
43
43
  AuthForType["NATIONAL_ID"] = "national_id";
44
44
  AuthForType["NATIONAL_ID_MISSED"] = "national_id_missed";
45
45
  })(AuthForType || (AuthForType = {}));
46
+ export var AuthForScreen;
47
+ (function (AuthForScreen) {
48
+ AuthForScreen["INDIVIDUAL"] = "individual";
49
+ AuthForScreen["DOB"] = "dob";
50
+ AuthForScreen["MOBILE_OWNERSHIP"] = "mobile_ownership";
51
+ })(AuthForScreen || (AuthForScreen = {}));
46
52
  export var AuthTypeNumber;
47
53
  (function (AuthTypeNumber) {
48
54
  AuthTypeNumber[AuthTypeNumber["EMAIL_OTP"] = 5] = "EMAIL_OTP";
@@ -137,6 +137,7 @@ export declare const CONNECT_EXPRESS_STEP_NAMES: {
137
137
  CONNECT_EXPRESS_SUCCESS: string;
138
138
  COLLECT_MOBILE_OWNERSHIP: string;
139
139
  COLLECT_MOBILE_OWNERSHIP_SKIPPED: string;
140
+ VERIFY_AUTH_MOBILE_OTP: string;
140
141
  };
141
142
  export declare const SignIn_STEP_NAMES: {
142
143
  CREATE_AUTH_MOBILE: string;
@@ -228,7 +228,11 @@ export var CONNECT_EXPRESS_SCREENS_NAVIGATION = [
228
228
  },
229
229
  {
230
230
  name: 'CONNECT_EXPRESS_COLLECT_DOB_INFO_STEP',
231
- next: ['CONNECT_EXPRESS_COLLECT_INDIVIDUAL_INFO_STEP', 'CONNECT_EXPRESS_WAITING_FOR_CREATING_ACCOUNT_STEP'],
231
+ next: [
232
+ 'CONNECT_EXPRESS_COLLECT_INDIVIDUAL_INFO_STEP',
233
+ 'CONNECT_EXPRESS_WAITING_FOR_CREATING_ACCOUNT_STEP',
234
+ 'CONNECT_EXPRESS_VERIFY_AUTH_OTP_STEP'
235
+ ],
232
236
  prev: ['CONNECT_EXPRESS_NID_STEP', 'CONNECT_EXPRESS_NID_MISSED_STEP'],
233
237
  order: 5
234
238
  },
@@ -241,7 +245,8 @@ export var CONNECT_EXPRESS_SCREENS_NAVIGATION = [
241
245
  'CONNECT_EXPRESS_CIVIL_ID_STEP',
242
246
  'CONNECT_EXPRESS_CIVIL_ID_MISSED_STEP',
243
247
  'CONNECT_EXPRESS_NID_MISSED_STEP',
244
- 'CONNECT_EXPRESS_COLLECT_DOB_INFO_STEP'
248
+ 'CONNECT_EXPRESS_COLLECT_DOB_INFO_STEP',
249
+ 'CONNECT_EXPRESS_VERIFY_AUTH_OTP_STEP'
245
250
  ],
246
251
  order: 5
247
252
  },
@@ -251,7 +256,8 @@ export var CONNECT_EXPRESS_SCREENS_NAVIGATION = [
251
256
  'CONNECT_EXPRESS_COLLECT_BUSINESS_INFO_STEP',
252
257
  'CONNECT_EXPRESS_WAITING_FOR_CREATING_ACCOUNT_STEP',
253
258
  'CONNECT_EXPRESS_COLLECT_INDIVIDUAL_INFO_STEP',
254
- 'CONNECT_EXPRESS_COLLECT_DOB_INFO_STEP'
259
+ 'CONNECT_EXPRESS_COLLECT_DOB_INFO_STEP',
260
+ 'CONNECT_EXPRESS_VERIFY_AUTH_OTP_STEP'
255
261
  ],
256
262
  prev: ['CONNECT_EXPRESS_COLLECT_INDIVIDUAL_INFO_STEP', 'CONNECT_EXPRESS_NID_MISSED_STEP'],
257
263
  order: 6
@@ -262,29 +268,40 @@ export var CONNECT_EXPRESS_SCREENS_NAVIGATION = [
262
268
  prev: 'CONNECT_EXPRESS_COLLECT_INDIVIDUAL_INFO_STEP',
263
269
  order: 6
264
270
  },
271
+ {
272
+ name: 'CONNECT_EXPRESS_VERIFY_AUTH_OTP_STEP',
273
+ next: [
274
+ 'CONNECT_EXPRESS_COLLECT_DOB_INFO_STEP',
275
+ 'COLLECT_MOBILE_OWNERSHIP',
276
+ 'CONNECT_EXPRESS_COLLECT_BUSINESS_INFO_STEP',
277
+ 'CONNECT_EXPRESS_WAITING_FOR_CREATING_ACCOUNT_STEP'
278
+ ],
279
+ prev: ['CONNECT_EXPRESS_COLLECT_INDIVIDUAL_INFO_STEP', 'CONNECT_EXPRESS_COLLECT_DOB_INFO_STEP', 'COLLECT_MOBILE_OWNERSHIP'],
280
+ order: 7
281
+ },
265
282
  {
266
283
  name: 'CONNECT_EXPRESS_WAITING_FOR_CREATING_ACCOUNT_STEP',
267
284
  next: 'CONNECT_EXPRESS_PREPARING_DATA_STEP',
268
285
  prev: '',
269
- order: 7
286
+ order: 8
270
287
  },
271
288
  {
272
289
  name: 'CONNECT_EXPRESS_PREPARING_DATA_STEP',
273
290
  next: 'CONNECT_EXPRESS_SUCCESS_WITH_FLOW_BUTTONS_STEP',
274
291
  prev: '',
275
- order: 8
292
+ order: 9
276
293
  },
277
294
  {
278
295
  name: 'CONNECT_EXPRESS_ACCOUNT_ALREADY_CREATED_STEP',
279
296
  next: '',
280
297
  prev: '',
281
- order: 9
298
+ order: 10
282
299
  },
283
300
  {
284
301
  name: 'CONNECT_EXPRESS_SUCCESS_WITH_FLOW_BUTTONS_STEP',
285
302
  next: '',
286
303
  prev: '',
287
- order: 9
304
+ order: 11
288
305
  }
289
306
  ];
290
307
  export var AUTH_SCREENS_NAVIGATION = [
@@ -1038,7 +1055,8 @@ export var CONNECT_EXPRESS_STEP_NAMES = {
1038
1055
  VERIFY_AUTH_PASSWORD: 'connect_express_verify_auth_password',
1039
1056
  CONNECT_EXPRESS_SUCCESS: 'connect_express_completed',
1040
1057
  COLLECT_MOBILE_OWNERSHIP: 'collect_owner_phone',
1041
- COLLECT_MOBILE_OWNERSHIP_SKIPPED: 'collect_owner_phone_skipped'
1058
+ COLLECT_MOBILE_OWNERSHIP_SKIPPED: 'collect_owner_phone_skipped',
1059
+ VERIFY_AUTH_MOBILE_OTP: 'connect_express_auth_mobile'
1042
1060
  };
1043
1061
  export var SignIn_STEP_NAMES = {
1044
1062
  CREATE_AUTH_MOBILE: 'signIn_create_auth_mobile',
@@ -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 } from '../../../@types';
2
+ import { MobileFormValues, NIDFormValues, CivilFormValues, OTPFormValues, IndividualFormValues, SharedState, FlowsTypes, ActionState, CountryCode, AuthForType, BusinessDataFormValues, AsyncThunkParams, AuthenticationListFormValues, AuthMerchantFormValues, DOBFormValues, MobileOwnershipFormValues, AuthForScreen } 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<{
@@ -133,6 +133,9 @@ export declare const updateLeadMobile: import("@reduxjs/toolkit").AsyncThunk<{
133
133
  export declare const skipUpdateLeadMobile: import("@reduxjs/toolkit").AsyncThunk<{
134
134
  leadResponse: any;
135
135
  }, void, {}>;
136
+ export declare const verifyAuthMobileOtpAsync: import("@reduxjs/toolkit").AsyncThunk<{
137
+ data: any;
138
+ }, OTPFormValues, {}>;
136
139
  export declare const confirmInfo: import("@reduxjs/toolkit").AsyncThunk<{
137
140
  boardInfo: any;
138
141
  boardData: any;
@@ -156,6 +159,9 @@ export interface ConnectExpressData {
156
159
  individualData: IndividualFormValues & {
157
160
  isPrevDob?: boolean;
158
161
  };
162
+ verifyAuthOtpData: OTPFormValues & {
163
+ authFor: AuthForScreen;
164
+ };
159
165
  businessData: BusinessDataFormValues;
160
166
  authenticationData: AuthenticationListFormValues;
161
167
  authMerchantData: AuthMerchantFormValues;
@@ -177,10 +183,11 @@ export declare const connectSlice: import("@reduxjs/toolkit").Slice<ConnectExpre
177
183
  resetCivilScreen: (state: ConnectExpressState) => void;
178
184
  resetAuthenticationScreen: (state: ConnectExpressState) => void;
179
185
  resetOTPValue: (state: ConnectExpressState) => void;
186
+ resetVerifyAuthOTPValue: (state: ConnectExpressState) => void;
180
187
  resetStore: (state: ConnectExpressState) => void;
181
188
  resetIndividualScreen: (state: ConnectExpressState) => void;
182
189
  }, "connectExpress/store">;
183
- export declare const clearError: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, stopLoader: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setIsLeadIdPassed: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, string>, resetMobileScreen: import("@reduxjs/toolkit").ActionCreatorWithPayload<CountryCode, string>, resetOTPValue: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetNIDScreen: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetCivilScreen: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetStore: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setError: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, string>, setLeadId: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, string>, resetIndividualScreen: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setDefaultCountryCode: import("@reduxjs/toolkit").ActionCreatorWithPayload<CountryCode, string>, storeIsStartFromBusinessCountry: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, string>, resetAuthenticationScreen: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>;
190
+ export declare const clearError: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, stopLoader: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setIsLeadIdPassed: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, string>, resetMobileScreen: import("@reduxjs/toolkit").ActionCreatorWithPayload<CountryCode, string>, resetOTPValue: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetVerifyAuthOTPValue: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetNIDScreen: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetCivilScreen: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetStore: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setError: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, string>, setLeadId: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, string>, resetIndividualScreen: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setDefaultCountryCode: import("@reduxjs/toolkit").ActionCreatorWithPayload<CountryCode, string>, storeIsStartFromBusinessCountry: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, string>, resetAuthenticationScreen: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>;
184
191
  declare const _default: import("redux").Reducer<ConnectExpressState, import("redux").AnyAction>;
185
192
  export default _default;
186
193
  export declare const connectExpressSelector: (state: RootState) => ConnectExpressState;
@@ -57,7 +57,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
57
57
  var _a;
58
58
  import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
59
59
  import { handleNextScreenStep, handleCurrentActiveScreen, handleOpen, handleSetCountryByIso2, onCloseComplete, storeAuthId } from '../../../app/settings';
60
- import { FlowsTypes, AuthForType, BusinessType, LicenseType } from '../../../@types';
60
+ import { FlowsTypes, AuthForType, BusinessType, LicenseType, AuthForScreen } from '../../../@types';
61
61
  import API 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 } from '../../../constants';
63
63
  import { defaultCountry } from '../../../constants';
@@ -1029,7 +1029,7 @@ export var createEntity = createAsyncThunk('connectExpress/createEntity', functi
1029
1029
  });
1030
1030
  }); });
1031
1031
  export var updateLeadDOBAsync = createAsyncThunk('connectExpress/updateLeadDOBAsync', function (params, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
1032
- var _a, settings, connectExpress, id, dob, payload, data, needToCollectMoreInfo, creatingAccount;
1032
+ var _a, settings, connectExpress, id, dob, payload, data, needToCollectMoreInfo, creatingAccount, verifyAuthMobile;
1033
1033
  var _b, _c, _d;
1034
1034
  return __generator(this, function (_e) {
1035
1035
  switch (_e.label) {
@@ -1049,6 +1049,10 @@ export var updateLeadDOBAsync = createAsyncThunk('connectExpress/updateLeadDOBAs
1049
1049
  (_d = (_c = settings.data.appConfig).onStepCompleted) === null || _d === void 0 ? void 0 : _d.call(_c, settings.data.activeScreen.name, params);
1050
1050
  needToCollectMoreInfo = data.step_name === 'collect_info';
1051
1051
  creatingAccount = data.step_name === 'create_account';
1052
+ verifyAuthMobile = data.step_name === 'connect_express_auth_mobile';
1053
+ if (verifyAuthMobile) {
1054
+ sleep(100).then(function () { return thunkApi.dispatch(handleNextScreenStep('CONNECT_EXPRESS_VERIFY_AUTH_OTP_STEP')); });
1055
+ }
1052
1056
  if (creatingAccount) {
1053
1057
  sleep(100).then(function () { return thunkApi.dispatch(handleCurrentActiveScreen('CONNECT_EXPRESS_WAITING_FOR_CREATING_ACCOUNT_STEP')); });
1054
1058
  }
@@ -1062,7 +1066,7 @@ export var updateLeadDOBAsync = createAsyncThunk('connectExpress/updateLeadDOBAs
1062
1066
  export var updateLeadIndividualAsync = createAsyncThunk('connectExpress/updateLeadIndividualAsync', function (_a, thunkApi) {
1063
1067
  var formData = _a.formData, originalFormData = _a.originalFormData;
1064
1068
  return __awaiter(void 0, void 0, void 0, function () {
1065
- var _b, settings, connectExpress, id, countryCode, name, email, mobile, phoneCountry, isContactAvailable, payload, data, needToCollectMoreInfo, creatingAccount, collectPhoneOwnershipScreen, isSaudi;
1069
+ var _b, settings, connectExpress, id, countryCode, name, email, mobile, phoneCountry, isContactAvailable, payload, data, needToCollectMoreInfo, creatingAccount, collectPhoneOwnershipScreen, verifyAuthMobile, isSaudi;
1066
1070
  var _c, _d, _e, _f, _g;
1067
1071
  return __generator(this, function (_h) {
1068
1072
  switch (_h.label) {
@@ -1082,6 +1086,10 @@ export var updateLeadIndividualAsync = createAsyncThunk('connectExpress/updateLe
1082
1086
  needToCollectMoreInfo = data.step_name === 'collect_info';
1083
1087
  creatingAccount = data.step_name === 'create_account';
1084
1088
  collectPhoneOwnershipScreen = data.step_name === CONNECT_EXPRESS_STEP_NAMES.COLLECT_MOBILE_OWNERSHIP;
1089
+ verifyAuthMobile = data.step_name === CONNECT_EXPRESS_STEP_NAMES.VERIFY_AUTH_MOBILE_OTP;
1090
+ if (verifyAuthMobile) {
1091
+ sleep(100).then(function () { return thunkApi.dispatch(handleNextScreenStep('CONNECT_EXPRESS_VERIFY_AUTH_OTP_STEP')); });
1092
+ }
1085
1093
  if (collectPhoneOwnershipScreen) {
1086
1094
  sleep(100).then(function () { return thunkApi.dispatch(handleNextScreenStep('COLLECT_MOBILE_OWNERSHIP')); });
1087
1095
  }
@@ -1145,7 +1153,7 @@ export var updateLeadBusinessDataAsync = createAsyncThunk('updateLeadBusinessDat
1145
1153
  });
1146
1154
  });
1147
1155
  export var updateLeadMobile = createAsyncThunk('connectExpress/updateLeadMobile', function (params, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
1148
- var _a, settings, connectExpress, id, startWithNID, payload, leadResponse, needToCollectMoreInfo, creatingAccount, askDobInfo, collectPhoneOwnershipScreen;
1156
+ var _a, settings, connectExpress, id, startWithNID, payload, leadResponse, needToCollectMoreInfo, creatingAccount, askDobInfo, collectPhoneOwnershipScreen, verifyAuthMobile;
1149
1157
  var _b, _c, _d;
1150
1158
  return __generator(this, function (_e) {
1151
1159
  switch (_e.label) {
@@ -1172,9 +1180,13 @@ export var updateLeadMobile = createAsyncThunk('connectExpress/updateLeadMobile'
1172
1180
  creatingAccount = leadResponse.step_name === 'create_account';
1173
1181
  askDobInfo = leadResponse.step_name === COLLECT_DOB_INFO_NAFATH;
1174
1182
  collectPhoneOwnershipScreen = leadResponse.step_name === CONNECT_EXPRESS_STEP_NAMES.COLLECT_MOBILE_OWNERSHIP;
1183
+ verifyAuthMobile = leadResponse.step_name === CONNECT_EXPRESS_STEP_NAMES.VERIFY_AUTH_MOBILE_OTP;
1175
1184
  if (collectPhoneOwnershipScreen) {
1176
1185
  throw new Error("The new mobile number doesn't match the national ID, please update the mobile to the correct one");
1177
1186
  }
1187
+ if (verifyAuthMobile) {
1188
+ sleep(100).then(function () { return thunkApi.dispatch(handleNextScreenStep('CONNECT_EXPRESS_VERIFY_AUTH_OTP_STEP')); });
1189
+ }
1178
1190
  if (askDobInfo) {
1179
1191
  sleep(100).then(function () { return thunkApi.dispatch(handleCurrentActiveScreen('CONNECT_EXPRESS_COLLECT_DOB_INFO_STEP')); });
1180
1192
  }
@@ -1199,7 +1211,7 @@ export var updateLeadMobile = createAsyncThunk('connectExpress/updateLeadMobile'
1199
1211
  });
1200
1212
  }); });
1201
1213
  export var skipUpdateLeadMobile = createAsyncThunk('connectExpress/skipUpdateLeadMobile', function (_, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
1202
- var _a, settings, connectExpress, id, startWithNID, payload, leadResponse, needToCollectMoreInfo, creatingAccount, askDobInfo;
1214
+ var _a, settings, connectExpress, id, startWithNID, payload, leadResponse, needToCollectMoreInfo, creatingAccount, askDobInfo, verifyAuthMobile;
1203
1215
  var _b, _c, _d;
1204
1216
  return __generator(this, function (_e) {
1205
1217
  switch (_e.label) {
@@ -1219,6 +1231,10 @@ export var skipUpdateLeadMobile = createAsyncThunk('connectExpress/skipUpdateLea
1219
1231
  needToCollectMoreInfo = leadResponse.step_name === 'collect_info';
1220
1232
  creatingAccount = leadResponse.step_name === 'create_account';
1221
1233
  askDobInfo = leadResponse.step_name === COLLECT_DOB_INFO_NAFATH;
1234
+ verifyAuthMobile = leadResponse.step_name === CONNECT_EXPRESS_STEP_NAMES.VERIFY_AUTH_MOBILE_OTP;
1235
+ if (verifyAuthMobile) {
1236
+ sleep(100).then(function () { return thunkApi.dispatch(handleNextScreenStep('CONNECT_EXPRESS_VERIFY_AUTH_OTP_STEP')); });
1237
+ }
1222
1238
  if (askDobInfo) {
1223
1239
  sleep(100).then(function () { return thunkApi.dispatch(handleCurrentActiveScreen('CONNECT_EXPRESS_COLLECT_DOB_INFO_STEP')); });
1224
1240
  }
@@ -1242,6 +1258,57 @@ export var skipUpdateLeadMobile = createAsyncThunk('connectExpress/skipUpdateLea
1242
1258
  }
1243
1259
  });
1244
1260
  }); });
1261
+ export var verifyAuthMobileOtpAsync = createAsyncThunk('connectExpress/verifyAuthMobileOtpAsync', function (params, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
1262
+ var _a, settings, connectExpress, responseData, _b, verify_token, verification_by, payload, data, needToCollectMoreInfo, creatingAccount, askDobInfo, collectPhoneOwnershipScreen, isSaudi;
1263
+ var _c, _d;
1264
+ return __generator(this, function (_e) {
1265
+ switch (_e.label) {
1266
+ case 0:
1267
+ _a = thunkApi.getState(), settings = _a.settings, connectExpress = _a.connectExpress;
1268
+ responseData = (connectExpress.data || {}).responseData;
1269
+ if (!(responseData === null || responseData === void 0 ? void 0 : responseData.verifyAuthMobile))
1270
+ throw new Error('Auth data is missing');
1271
+ _b = responseData.verifyAuthMobile, verify_token = _b.verify_token, verification_by = _b.verification_by;
1272
+ payload = {
1273
+ verify_token: verify_token,
1274
+ data: params.otp,
1275
+ auth_type: 2,
1276
+ service_name: verification_by === null || verification_by === void 0 ? void 0 : verification_by.service_name,
1277
+ sign_in: false,
1278
+ step_name: CONNECT_EXPRESS_STEP_NAMES.VERIFY_AUTH_MOBILE_OTP,
1279
+ encryption_contract: ['data']
1280
+ };
1281
+ return [4, API.authService.verifyExpressLeadIdentity(payload)];
1282
+ case 1:
1283
+ data = _e.sent();
1284
+ (_d = (_c = settings.data.appConfig).onStepCompleted) === null || _d === void 0 ? void 0 : _d.call(_c, settings.data.activeScreen.name, params);
1285
+ needToCollectMoreInfo = data.step_name === 'collect_info';
1286
+ creatingAccount = data.step_name === 'create_account';
1287
+ askDobInfo = data.step_name === COLLECT_DOB_INFO_NAFATH;
1288
+ collectPhoneOwnershipScreen = data.step_name === CONNECT_EXPRESS_STEP_NAMES.COLLECT_MOBILE_OWNERSHIP;
1289
+ if (askDobInfo) {
1290
+ sleep(100).then(function () { return thunkApi.dispatch(handleCurrentActiveScreen('CONNECT_EXPRESS_COLLECT_DOB_INFO_STEP')); });
1291
+ }
1292
+ if (creatingAccount) {
1293
+ sleep(100).then(function () { return thunkApi.dispatch(handleCurrentActiveScreen('CONNECT_EXPRESS_WAITING_FOR_CREATING_ACCOUNT_STEP')); });
1294
+ }
1295
+ if (collectPhoneOwnershipScreen) {
1296
+ sleep(100).then(function () { return thunkApi.dispatch(handleNextScreenStep('COLLECT_MOBILE_OWNERSHIP')); });
1297
+ }
1298
+ if (!needToCollectMoreInfo) return [3, 4];
1299
+ isSaudi = isSA(settings.data.businessCountry.iso2);
1300
+ if (!isSaudi) return [3, 3];
1301
+ return [4, thunkApi.dispatch(retrieveEntityListAsync(data.lead.id)).unwrap()];
1302
+ case 2:
1303
+ _e.sent();
1304
+ _e.label = 3;
1305
+ case 3:
1306
+ sleep(100).then(function () { return thunkApi.dispatch(handleCurrentActiveScreen('CONNECT_EXPRESS_COLLECT_BUSINESS_INFO_STEP')); });
1307
+ _e.label = 4;
1308
+ case 4: return [2, { data: data }];
1309
+ }
1310
+ });
1311
+ }); });
1245
1312
  export var confirmInfo = createAsyncThunk('connectExpress/confirmInfo', function (_a, thunkApi) {
1246
1313
  var brandInfo = _a.brandInfo, entityInfo = _a.entityInfo, merchantInfo = _a.merchantInfo;
1247
1314
  return __awaiter(void 0, void 0, void 0, function () {
@@ -1366,6 +1433,10 @@ var initialState = {
1366
1433
  mobile: '',
1367
1434
  countryCode: defaultCountry
1368
1435
  },
1436
+ verifyAuthOtpData: {
1437
+ otp: '',
1438
+ authFor: AuthForScreen.INDIVIDUAL
1439
+ },
1369
1440
  businessData: {
1370
1441
  brandName: '',
1371
1442
  licenseNumber: '',
@@ -1421,6 +1492,9 @@ export var connectSlice = createSlice({
1421
1492
  resetOTPValue: function (state) {
1422
1493
  state.data.otpData.otp = '';
1423
1494
  },
1495
+ resetVerifyAuthOTPValue: function (state) {
1496
+ state.data.verifyAuthOtpData.otp = '';
1497
+ },
1424
1498
  resetStore: function (state) {
1425
1499
  var _a;
1426
1500
  state.data = __assign(__assign({}, state.data), { responseData: { leadData: (_a = state.data.responseData) === null || _a === void 0 ? void 0 : _a.leadData } });
@@ -1754,7 +1828,8 @@ export var connectSlice = createSlice({
1754
1828
  state.loading = false;
1755
1829
  state.error = null;
1756
1830
  state.data.dobData = action.payload.formData;
1757
- state.data.responseData = __assign(__assign({}, state.data.responseData), { dobData: action.payload.response });
1831
+ state.data.responseData = __assign(__assign({}, state.data.responseData), { dobData: action.payload.response, verifyAuthMobile: action.payload.response });
1832
+ state.data.verifyAuthOtpData.authFor = AuthForScreen.DOB;
1758
1833
  })
1759
1834
  .addCase(updateLeadDOBAsync.pending, function (state) {
1760
1835
  state.loading = true;
@@ -1770,7 +1845,8 @@ export var connectSlice = createSlice({
1770
1845
  state.error = null;
1771
1846
  var licenseList = [OTHER_CR_LICENSE, OTHER_FL_LICENSE];
1772
1847
  state.data.individualData = action.payload.formData;
1773
- state.data.responseData = __assign(__assign(__assign({}, state.data.responseData), { individualData: action.payload.response }), (!((_b = (_a = state.data.responseData) === null || _a === void 0 ? void 0 : _a.licenseList) === null || _b === void 0 ? void 0 : _b.length) && { licenseList: licenseList }));
1848
+ state.data.responseData = __assign(__assign(__assign(__assign({}, state.data.responseData), { individualData: action.payload.response }), (!((_b = (_a = state.data.responseData) === null || _a === void 0 ? void 0 : _a.licenseList) === null || _b === void 0 ? void 0 : _b.length) && { licenseList: licenseList })), { verifyAuthMobile: action.payload.response });
1849
+ state.data.verifyAuthOtpData.authFor = AuthForScreen.INDIVIDUAL;
1774
1850
  })
1775
1851
  .addCase(updateLeadIndividualAsync.pending, function (state) {
1776
1852
  state.loading = true;
@@ -1798,7 +1874,8 @@ export var connectSlice = createSlice({
1798
1874
  state.loading = false;
1799
1875
  state.error = null;
1800
1876
  state.data.individualData.mobile = action.payload.formData.mobile;
1801
- state.data.responseData = __assign(__assign({}, state.data.responseData), { individualData: action.payload.leadResponse });
1877
+ state.data.responseData = __assign(__assign({}, state.data.responseData), { individualData: action.payload.leadResponse, verifyAuthMobile: action.payload.leadResponse });
1878
+ state.data.verifyAuthOtpData.authFor = AuthForScreen.MOBILE_OWNERSHIP;
1802
1879
  })
1803
1880
  .addCase(updateLeadMobile.pending, function (state) {
1804
1881
  state.loading = true;
@@ -1811,7 +1888,8 @@ export var connectSlice = createSlice({
1811
1888
  .addCase(skipUpdateLeadMobile.fulfilled, function (state, action) {
1812
1889
  state.loading = false;
1813
1890
  state.error = null;
1814
- state.data.responseData = __assign(__assign({}, state.data.responseData), { individualData: action.payload.leadResponse });
1891
+ state.data.responseData = __assign(__assign({}, state.data.responseData), { individualData: action.payload.leadResponse, verifyAuthMobile: action.payload.leadResponse });
1892
+ state.data.verifyAuthOtpData.authFor = AuthForScreen.MOBILE_OWNERSHIP;
1815
1893
  })
1816
1894
  .addCase(skipUpdateLeadMobile.pending, function (state) {
1817
1895
  state.loading = true;
@@ -1820,6 +1898,20 @@ export var connectSlice = createSlice({
1820
1898
  .addCase(skipUpdateLeadMobile.rejected, function (state, action) {
1821
1899
  state.loading = false;
1822
1900
  state.error = action.error.message;
1901
+ })
1902
+ .addCase(verifyAuthMobileOtpAsync.fulfilled, function (state, action) {
1903
+ state.loading = false;
1904
+ state.error = null;
1905
+ state.data.responseData = __assign(__assign({}, state.data.responseData), { verifyAuthMobileOtp: action.payload.data });
1906
+ state.data.verifyAuthOtpData.authFor = AuthForScreen.MOBILE_OWNERSHIP;
1907
+ })
1908
+ .addCase(verifyAuthMobileOtpAsync.pending, function (state) {
1909
+ state.loading = true;
1910
+ state.error = null;
1911
+ })
1912
+ .addCase(verifyAuthMobileOtpAsync.rejected, function (state, action) {
1913
+ state.loading = false;
1914
+ state.error = action.error.message;
1823
1915
  })
1824
1916
  .addCase(createAccountAsync.pending, function (state) {
1825
1917
  state.loading = true;
@@ -1928,6 +2020,6 @@ export var connectSlice = createSlice({
1928
2020
  });
1929
2021
  }
1930
2022
  });
1931
- export var clearError = (_a = connectSlice.actions, _a.clearError), stopLoader = _a.stopLoader, setIsLeadIdPassed = _a.setIsLeadIdPassed, resetMobileScreen = _a.resetMobileScreen, resetOTPValue = _a.resetOTPValue, resetNIDScreen = _a.resetNIDScreen, resetCivilScreen = _a.resetCivilScreen, resetStore = _a.resetStore, setError = _a.setError, setLeadId = _a.setLeadId, resetIndividualScreen = _a.resetIndividualScreen, setDefaultCountryCode = _a.setDefaultCountryCode, storeIsStartFromBusinessCountry = _a.storeIsStartFromBusinessCountry, resetAuthenticationScreen = _a.resetAuthenticationScreen;
2023
+ export var clearError = (_a = connectSlice.actions, _a.clearError), stopLoader = _a.stopLoader, setIsLeadIdPassed = _a.setIsLeadIdPassed, resetMobileScreen = _a.resetMobileScreen, resetOTPValue = _a.resetOTPValue, resetVerifyAuthOTPValue = _a.resetVerifyAuthOTPValue, resetNIDScreen = _a.resetNIDScreen, resetCivilScreen = _a.resetCivilScreen, resetStore = _a.resetStore, setError = _a.setError, setLeadId = _a.setLeadId, resetIndividualScreen = _a.resetIndividualScreen, setDefaultCountryCode = _a.setDefaultCountryCode, storeIsStartFromBusinessCountry = _a.storeIsStartFromBusinessCountry, resetAuthenticationScreen = _a.resetAuthenticationScreen;
1932
2024
  export default connectSlice.reducer;
1933
2025
  export var connectExpressSelector = function (state) { return state.connectExpress; };
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ export interface OTPProps {
3
+ }
4
+ declare const _default: React.MemoExoticComponent<({}: OTPProps) => JSX.Element>;
5
+ export default _default;
@@ -0,0 +1,58 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import * as React from 'react';
14
+ import { useController, useFormContext } from 'react-hook-form';
15
+ import { useTranslation } from 'react-i18next';
16
+ import Box from '@mui/material/Box/Box';
17
+ import { styled } from '@mui/material/styles';
18
+ import OTPField from '../../../shared/OTP';
19
+ import { DEFAULT_TIMER_VALUE } from '../../../../constants';
20
+ import { connectExpressSelector, clearError, updateLeadIndividualAsync, updateLeadMobile, updateLeadDOBAsync } from '../../../app/connectExpress/connectExpressStore';
21
+ import { useAppDispatch, useAppSelector } from '../../../../hooks';
22
+ import { deepCopy } from '../../../../utils';
23
+ import { AuthForScreen } from '../../../../@types';
24
+ var BoxStyled = styled(Box)(function (_a) {
25
+ var theme = _a.theme;
26
+ return ({
27
+ display: 'flex',
28
+ flexDirection: 'column',
29
+ fontFamily: theme.typography.fontFamily
30
+ });
31
+ });
32
+ var OTPInput = function (_a) {
33
+ var _b = useFormContext(), control = _b.control, setValue = _b.setValue;
34
+ var t = useTranslation().t;
35
+ var dispatch = useAppDispatch();
36
+ var otpControl = useController({ name: 'otp', control: control });
37
+ var _c = useAppSelector(connectExpressSelector), data = _c.data, error = _c.error;
38
+ var verifyAuthOtpData = data.verifyAuthOtpData, individualData = data.individualData, dobData = data.dobData;
39
+ var authFor = verifyAuthOtpData.authFor;
40
+ var handleOnOTPChange = function (otp) {
41
+ if (error)
42
+ dispatch(clearError());
43
+ otpControl.field.onChange(otp);
44
+ };
45
+ var handleOnResendOTP = function () {
46
+ if (otpControl.field.value)
47
+ setValue('otp', '', { shouldValidate: true });
48
+ if (authFor === AuthForScreen.MOBILE_OWNERSHIP)
49
+ dispatch(updateLeadMobile(deepCopy(individualData)));
50
+ else if (authFor === AuthForScreen.DOB)
51
+ dispatch(updateLeadDOBAsync(deepCopy(dobData)));
52
+ else
53
+ dispatch(updateLeadIndividualAsync(deepCopy(individualData)));
54
+ };
55
+ var otpValue = otpControl.field.value;
56
+ return (_jsx(BoxStyled, __assign({ dir: 'ltr' }, { children: _jsx(OTPField, { timeEndLabel: t('ide_otp_resend_label'), timerInSeconds: DEFAULT_TIMER_VALUE, onResetClick: handleOnResendOTP, value: otpValue, onChange: function (number) { return handleOnOTPChange(number.toString()); } }) })));
57
+ };
58
+ export default React.memo(OTPInput);
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ export interface VerifyMobileAuthOTPProps {
3
+ }
4
+ declare const _default: React.MemoExoticComponent<() => JSX.Element>;
5
+ export default _default;
@@ -0,0 +1,88 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import Box from '@mui/material/Box/Box';
14
+ import { styled } from '@mui/material/styles';
15
+ import * as React from 'react';
16
+ import { useTranslation } from 'react-i18next';
17
+ import Text from '../../../../components/Text';
18
+ import { clearError, connectExpressSelector, verifyAuthMobileOtpAsync, resetVerifyAuthOTPValue } from '../../../app/connectExpress/connectExpressStore';
19
+ import Button from '../../../shared/Button';
20
+ import { ScreenContainer } from '../../../shared/Containers';
21
+ import { useAppDispatch, useAppSelector, useSanitizedTranslation } from '../../../../hooks';
22
+ import { handlePrevScreenStep } from '../../../../app/settings';
23
+ import { useLanguage } from '../../../../hooks';
24
+ import { useForm, FormProvider } from 'react-hook-form';
25
+ import { yupResolver } from '@hookform/resolvers/yup';
26
+ import Form from '../../../../components/Form';
27
+ import { maskPhone, deepCopy } from '../../../../utils';
28
+ import { AuthForScreen } from '../../../../@types';
29
+ import { OTPValidation } from './validation';
30
+ import OTPInput from './OTPInput';
31
+ var OTPTitleContainerStyled = styled(Box)(function (_a) {
32
+ var theme = _a.theme;
33
+ return ({
34
+ background: theme.palette.common.white,
35
+ border: '1px solid',
36
+ borderColor: theme.palette.divider,
37
+ direction: theme.direction,
38
+ borderRadius: theme.spacing(0, 0, 1.25, 1.25),
39
+ marginBottom: theme.spacing(5.75)
40
+ });
41
+ });
42
+ var OTPTitleStyled = styled(Text)(function (_a) {
43
+ var theme = _a.theme;
44
+ return (__assign(__assign({}, theme.typography.body1), { color: theme.palette.text.primary, fontWeight: theme.typography.fontWeightLight, marginBlock: theme.spacing(1.75), marginInline: theme.spacing(2.5), lineHeight: 1.75, whiteSpace: 'pre-line' }));
45
+ });
46
+ var FormStyled = styled(Form)(function () { return ({
47
+ display: 'flex',
48
+ flexDirection: 'column'
49
+ }); });
50
+ var VerifyMobileAuthOTP = function () {
51
+ var _a, _b, _c, _d, _e, _f;
52
+ var dispatch = useAppDispatch();
53
+ var _g = useAppSelector(connectExpressSelector), data = _g.data, loading = _g.loading, error = _g.error;
54
+ var t = useTranslation().t;
55
+ var st = useSanitizedTranslation();
56
+ var isAr = useLanguage().isAr;
57
+ var methods = useForm({
58
+ resolver: yupResolver(OTPValidation),
59
+ defaultValues: data.verifyAuthOtpData,
60
+ mode: 'onChange'
61
+ });
62
+ React.useEffect(function () {
63
+ if (error)
64
+ dispatch(clearError());
65
+ }, [methods.formState.isValid]);
66
+ React.useEffect(function () {
67
+ return function () {
68
+ dispatch(resetVerifyAuthOTPValue());
69
+ };
70
+ }, []);
71
+ var onSubmit = function (formData) {
72
+ dispatch(verifyAuthMobileOtpAsync(deepCopy(formData)));
73
+ };
74
+ var onBack = function () {
75
+ var authFor = data.verifyAuthOtpData.authFor;
76
+ var step_name = 'CONNECT_EXPRESS_COLLECT_INDIVIDUAL_INFO_STEP';
77
+ if (authFor === AuthForScreen.DOB)
78
+ step_name = 'CONNECT_EXPRESS_COLLECT_DOB_INFO_STEP';
79
+ else if (authFor === AuthForScreen.MOBILE_OWNERSHIP)
80
+ step_name = 'COLLECT_MOBILE_OWNERSHIP';
81
+ dispatch(handlePrevScreenStep(step_name));
82
+ };
83
+ var disabled = !methods.formState.isValid;
84
+ var phone = ((_c = (_b = (_a = data.responseData) === null || _a === void 0 ? void 0 : _a.verifyAuthMobile) === null || _b === void 0 ? void 0 : _b.verification_by) === null || _c === void 0 ? void 0 : _c.sent_to) ? (_f = (_e = (_d = data.responseData) === null || _d === void 0 ? void 0 : _d.verifyAuthMobile) === null || _e === void 0 ? void 0 : _e.verification_by) === null || _f === void 0 ? void 0 : _f.sent_to : '';
85
+ var title = t('ide_opt_sent_title');
86
+ return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(OTPTitleContainerStyled, { children: _jsxs(OTPTitleStyled, { children: [loading ? st('ide_otp_waiting_title') : title, !loading && _jsx("span", __assign({ dir: 'ltr' }, { children: maskPhone(phone) }))] }) }), _jsx(OTPInput, {}), _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, disabled: disabled, isAr: isAr, loading: loading, error: st(error || '') }, { children: t('next') }))] })) })) }));
87
+ };
88
+ export default React.memo(VerifyMobileAuthOTP);
@@ -0,0 +1,3 @@
1
+ import VerifyMobileAuthOTP, { VerifyMobileAuthOTPProps } from './VerifyMobileAuthOTP';
2
+ export type { VerifyMobileAuthOTPProps };
3
+ export default VerifyMobileAuthOTP;
@@ -0,0 +1,2 @@
1
+ import VerifyMobileAuthOTP from './VerifyMobileAuthOTP';
2
+ export default VerifyMobileAuthOTP;
@@ -0,0 +1,8 @@
1
+ import * as yup from 'yup';
2
+ export declare const OTPValidation: yup.ObjectSchema<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
3
+ otp: import("yup/lib/string").RequiredStringSchema<string | undefined, import("yup/lib/types").AnyObject>;
4
+ }>, import("yup/lib/object").AnyObject, import("yup/lib/object").TypeOfShape<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
5
+ otp: import("yup/lib/string").RequiredStringSchema<string | undefined, import("yup/lib/types").AnyObject>;
6
+ }>>, import("yup/lib/object").AssertsShape<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
7
+ otp: import("yup/lib/string").RequiredStringSchema<string | undefined, import("yup/lib/types").AnyObject>;
8
+ }>>>;
@@ -0,0 +1,4 @@
1
+ import * as yup from 'yup';
2
+ export var OTPValidation = yup.object().shape({
3
+ otp: yup.string().min(6, 'otp_min_length').required('otp_required')
4
+ });
@@ -27,6 +27,7 @@ import ConnectExpressIdentityVerifyNafathScreen from './connectExpress/screens/I
27
27
  import ConnectExpressCollectIndividualScreen from './connectExpress/screens/CollectIndividualInfo';
28
28
  import ConnectExpressCollectDobScreen from './connectExpress/screens/DOB';
29
29
  import ConnectExpressCollectBusinessScreen from './connectExpress/screens/CollectBusinessInfo';
30
+ import ConnectExpressVerifyAuthMobileOtpScreen from './connectExpress/screens/VerifyMobileAuthOTP';
30
31
  import ConnectExpressCreateAccountLoaderScreen from './connectExpress/screens/CreateAccountLoader';
31
32
  import ConnectExpressPreparingDataLoaderScreen from './connectExpress/screens/PrepareDataLoading';
32
33
  import ConnectExpressSuccessFlowButtonsScreen from './connectExpress/screens/SuccessWithFlowButtons';
@@ -262,6 +263,10 @@ export var connectExpressFeatureScreens = [
262
263
  name: 'CONNECT_EXPRESS_COLLECT_BUSINESS_INFO_STEP',
263
264
  element: ConnectExpressCollectBusinessScreen
264
265
  },
266
+ {
267
+ name: 'CONNECT_EXPRESS_VERIFY_AUTH_OTP_STEP',
268
+ element: ConnectExpressVerifyAuthMobileOtpScreen
269
+ },
265
270
  {
266
271
  name: 'CONNECT_EXPRESS_ACCOUNT_ALREADY_CREATED_STEP',
267
272
  element: ConnectExpressAccountAlreadyCreatedScreen
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tap-payments/auth-jsconnect",
3
- "version": "2.9.35-development",
3
+ "version": "2.9.36-development",
4
4
  "description": "connect library, auth",
5
5
  "private": false,
6
6
  "main": "build/index.js",