@tap-payments/auth-jsconnect 1.0.63 → 1.0.67

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 (38) hide show
  1. package/build/api/availabilityServices.d.ts +5 -0
  2. package/build/api/availabilityServices.js +5 -1
  3. package/build/api/entity.d.ts +1 -0
  4. package/build/api/index.d.ts +1 -0
  5. package/build/assets/locales/ar.json +2 -0
  6. package/build/assets/locales/en.json +4 -2
  7. package/build/constants/api.d.ts +1 -0
  8. package/build/constants/api.js +3 -1
  9. package/build/constants/assets.d.ts +10 -8
  10. package/build/constants/assets.js +10 -8
  11. package/build/constants/validation.d.ts +1 -0
  12. package/build/constants/validation.js +1 -0
  13. package/build/features/app/bank/bankStore.d.ts +8 -0
  14. package/build/features/app/bank/bankStore.js +36 -3
  15. package/build/features/app/business/businessStore.d.ts +3 -0
  16. package/build/features/app/business/businessStore.js +66 -33
  17. package/build/features/app/connect/connectStore.js +1 -1
  18. package/build/features/bank/screens/BankDetails/BankDetails.js +6 -4
  19. package/build/features/bank/screens/BankDetails/BankName.js +17 -3
  20. package/build/features/bank/screens/BankDetails/Beneficiary.js +12 -3
  21. package/build/features/bank/screens/BankDetails/IBAN.d.ts +3 -1
  22. package/build/features/bank/screens/BankDetails/IBAN.js +67 -4
  23. package/build/features/bank/screens/BankDetails/validation.js +2 -2
  24. package/build/features/bank/screens/Success/Success.js +2 -4
  25. package/build/features/business/screens/BusinessType/LicenseList.js +1 -1
  26. package/build/features/business/screens/BusinessType/LicenseNumber.js +1 -1
  27. package/build/features/business/screens/BusinessType/validation.d.ts +3 -3
  28. package/build/features/business/screens/BusinessType/validation.js +14 -7
  29. package/build/features/business/screens/Customers/ExpectedSalesRange.js +0 -5
  30. package/build/features/business/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +33 -27
  31. package/build/features/individual/screens/Success/Success.js +2 -4
  32. package/build/features/password/screens/Success/Success.js +2 -4
  33. package/build/features/shared/Button/AbsherButton.js +22 -19
  34. package/build/features/shared/Button/FlowsButtons.d.ts +3 -3
  35. package/build/features/shared/Button/FlowsButtons.js +30 -18
  36. package/build/features/shared/Button/MobileButton.js +13 -11
  37. package/build/features/tax/screens/Success/Success.js +2 -4
  38. package/package.json +1 -1
@@ -5,8 +5,13 @@ export declare type CheckEmailBody = {
5
5
  export declare type CheckBrandBody = {
6
6
  profile_name: string;
7
7
  };
8
+ export declare type CheckIBanBody = {
9
+ iban_number: string;
10
+ encryption_contract?: Array<string>;
11
+ };
8
12
  declare const availabilityServices: {
9
13
  checkEmail: (data: CheckEmailBody, config?: AxiosRequestConfig) => Promise<import("axios").AxiosResponse<any, any>>;
10
14
  checkBrand: (data: CheckBrandBody, config?: AxiosRequestConfig) => Promise<import("axios").AxiosResponse<any, any>>;
15
+ checkIbanBank: (data: CheckIBanBody, config?: AxiosRequestConfig) => Promise<import("axios").AxiosResponse<any, any>>;
11
16
  };
12
17
  export default availabilityServices;
@@ -6,8 +6,12 @@ var checkEmail = function (data, config) {
6
6
  var checkBrand = function (data, config) {
7
7
  return instance.post("".concat(ENDPOINT_PATHS.CHECK_BRAND), data, config);
8
8
  };
9
+ var checkIbanBank = function (data, config) {
10
+ return instance.post("".concat(ENDPOINT_PATHS.IBAN_BANK), data, config);
11
+ };
9
12
  var availabilityServices = {
10
13
  checkEmail: checkEmail,
11
- checkBrand: checkBrand
14
+ checkBrand: checkBrand,
15
+ checkIbanBank: checkIbanBank
12
16
  };
13
17
  export default availabilityServices;
@@ -31,6 +31,7 @@ export declare type EntityBankUpdateBody = {
31
31
  account_number?: string;
32
32
  };
33
33
  step_name: string;
34
+ encryption_contract?: Array<string>;
34
35
  };
35
36
  export interface EntityInfoUpdateBody extends EntityInfoCreateBody {
36
37
  id: string;
@@ -37,6 +37,7 @@ declare const API: {
37
37
  availabilityServices: {
38
38
  checkEmail: (data: CheckEmailBody, config?: import("axios").AxiosRequestConfig<any> | undefined) => Promise<import("axios").AxiosResponse<any, any>>;
39
39
  checkBrand: (data: CheckBrandBody, config?: import("axios").AxiosRequestConfig<any> | undefined) => Promise<import("axios").AxiosResponse<any, any>>;
40
+ checkIbanBank: (data: import("./availabilityServices").CheckIBanBody, config?: import("axios").AxiosRequestConfig<any> | undefined) => Promise<import("axios").AxiosResponse<any, any>>;
40
41
  };
41
42
  firebaseService: {
42
43
  getLocale: () => Promise<import("axios").AxiosResponse<any, any>>;
@@ -232,5 +232,7 @@
232
232
  "individual_flow_pending": "Individual",
233
233
  "bank_flow_pending": "Bank",
234
234
  "password_flow_pending": "Password",
235
+ "business_flow_pending": "Business",
236
+ "business_flow_completed": "Business",
235
237
  "continue": "Continue"
236
238
  }
@@ -239,12 +239,14 @@
239
239
  "cr_number": "CR Number",
240
240
  "fl_number": "FL Number",
241
241
  "tax_flow_completed": "Tax",
242
- "individual_flow_completed": "Individual",
242
+ "individual_flow_completed": "Individual {{individual_name}}",
243
243
  "bank_flow_completed": "Bank",
244
244
  "password_flow_completed": "Password",
245
245
  "tax_flow_pending": "Tax",
246
- "individual_flow_pending": "Individual",
246
+ "individual_flow_pending": "Individual {{individual_name}}",
247
247
  "bank_flow_pending": "Bank",
248
248
  "password_flow_pending": "Password",
249
+ "business_flow_pending": "Business",
250
+ "business_flow_completed": "Business",
249
251
  "continue": "Continue"
250
252
  }
@@ -19,4 +19,5 @@ export declare const ENDPOINT_PATHS: {
19
19
  SALES: string;
20
20
  EXPECTED_CUSTOMERS: string;
21
21
  BANK: string;
22
+ IBAN_BANK: string;
22
23
  };
@@ -10,6 +10,7 @@ var LEAD_IDENTITY_VERIFY_PATH = 'lead/identity/verify';
10
10
  var RETRIEVE_ENTITY_LIST_PATH = '/lead/entity/list';
11
11
  var ENTITY_PATH = '/entity';
12
12
  var BANK_PATH = '/entity/bankaccount';
13
+ var IBAN_PATH = '/iban';
13
14
  var CHECK_EMAIL = '/lead/identity/emailcheck';
14
15
  var CHECK_BRAND = 'lead/profile/profile_name';
15
16
  var CREATE_ACCOUNT_PATH = '/account/create';
@@ -38,5 +39,6 @@ export var ENDPOINT_PATHS = {
38
39
  CUSTOMER_BASES: CUSTOMER_BASES_PATH,
39
40
  SALES: SALES_PATH,
40
41
  EXPECTED_CUSTOMERS: EXPECTED_CUSTOMERS_PATH,
41
- BANK: BANK_PATH
42
+ BANK: BANK_PATH,
43
+ IBAN_BANK: IBAN_PATH
42
44
  };
@@ -41,14 +41,16 @@ export declare const ICONS_NAMES: {
41
41
  outlook_White_ICON: string;
42
42
  Apple_Filled_ICON: string;
43
43
  apple_white_icon: string;
44
- Tax_filled_icon: string;
45
- Tax_white_icon: string;
46
- Bank_filled_icon: string;
47
- Bank_white_icon: string;
48
- User_filled_icon: string;
49
- User_white_icon: string;
50
- Password_filled_icon: string;
51
- Password_white_icon: string;
44
+ tax_filled_icon: string;
45
+ tax_white_icon: string;
46
+ bank_filled_icon: string;
47
+ bank_white_icon: string;
48
+ individual_filled_icon: string;
49
+ individual_white_icon: string;
50
+ password_filled_icon: string;
51
+ password_white_icon: string;
52
+ business_filled_icon: string;
53
+ business_white_icon: string;
52
54
  Arrow_filled_right_icon: string;
53
55
  Arrow_white_right_icon: string;
54
56
  };
@@ -41,14 +41,16 @@ export var ICONS_NAMES = {
41
41
  outlook_White_ICON: 'https://dash.b-cdn.net/icons/menu/Outlook-white.svg',
42
42
  Apple_Filled_ICON: 'https://dash.b-cdn.net/icons/menu/Apple-filled.svg',
43
43
  apple_white_icon: 'https://dash.b-cdn.net/icons/menu/Apple-white.svg',
44
- Tax_filled_icon: 'https://dash.b-cdn.net/icons/menu/tax-filled.svg',
45
- Tax_white_icon: 'https://dash.b-cdn.net/icons/menu/tax-white.svg',
46
- Bank_filled_icon: 'https://dash.b-cdn.net/icons/menu/bank-filled.svg',
47
- Bank_white_icon: 'https://dash.b-cdn.net/icons/menu/bank-white.svg',
48
- User_filled_icon: 'https://dash.b-cdn.net/icons/menu/user-filled.svg',
49
- User_white_icon: 'https://dash.b-cdn.net/icons/menu/user-white.svg',
50
- Password_filled_icon: 'https://dash.b-cdn.net/icons/menu/password-filled.svg',
51
- Password_white_icon: 'https://dash.b-cdn.net/icons/menu/password-white.svg',
44
+ tax_filled_icon: 'https://dash.b-cdn.net/icons/menu/tax-filled.svg',
45
+ tax_white_icon: 'https://dash.b-cdn.net/icons/menu/tax-white.svg',
46
+ bank_filled_icon: 'https://dash.b-cdn.net/icons/menu/bank-filled.svg',
47
+ bank_white_icon: 'https://dash.b-cdn.net/icons/menu/bank-white.svg',
48
+ individual_filled_icon: 'https://dash.b-cdn.net/icons/menu/user-filled.svg',
49
+ individual_white_icon: 'https://dash.b-cdn.net/icons/menu/user-white.svg',
50
+ password_filled_icon: 'https://dash.b-cdn.net/icons/menu/password-filled.svg',
51
+ password_white_icon: 'https://dash.b-cdn.net/icons/menu/password-white.svg',
52
+ business_filled_icon: 'https://dash.b-cdn.net/icons/menu/business-filled.svg',
53
+ business_white_icon: 'https://dash.b-cdn.net/icons/menu/business-white.svg',
52
54
  Arrow_filled_right_icon: 'https://dash.b-cdn.net/icons/menu/right-arrow-filled.svg',
53
55
  Arrow_white_right_icon: 'https://dash.b-cdn.net/icons/menu/right-arrow-white.svg'
54
56
  };
@@ -7,3 +7,4 @@ export declare const CR_NUMBER_LENGTH = 10;
7
7
  export declare const SAUDI_NUMBER_LENGTH = 9;
8
8
  export declare const REGEX_FULL_NAME: RegExp;
9
9
  export declare const REGEX_WEBSITE: RegExp;
10
+ export declare const REGEX_BENEFICIARY_NAME: RegExp;
@@ -7,3 +7,4 @@ export var CR_NUMBER_LENGTH = 10;
7
7
  export var SAUDI_NUMBER_LENGTH = 9;
8
8
  export var REGEX_FULL_NAME = /^([a-zA-Z]{2,}\s{1}[a-zA-Z]{1,}|[a-zA-Z]+\s{1}[a-zA-Z.-]{1,}\s{1}[a-zA-Z.-]{1,}\s{1}[a-zA-Z]{1,}|[a-zA-Z]+\s{1}[a-zA-Z.-]{1,}\s{1}[a-zA-Z]{1,})$/g;
9
9
  export var REGEX_WEBSITE = /^[a-zA-Z0-9]+([\-\.]{1}[a-zA-Z0-9]+)*\.[a-zA-Z]{2,63}(:[0-9]{1,5})?(\/.*)?$/;
10
+ export var REGEX_BENEFICIARY_NAME = /^([\u0600-\u065F\u066A-\u06EF\u06FA-\u06FFa-zA-Z\s])*$/g;
@@ -1,5 +1,6 @@
1
1
  import { RootState } from '../../../app/store';
2
2
  import { BankFormValues, OTPFormValues, ResponseData, SharedState } from '../../../@types';
3
+ import { CancelToken } from 'axios';
3
4
  export declare const verifyLeadToken: import("@reduxjs/toolkit").AsyncThunk<{
4
5
  data: any;
5
6
  leadData: any;
@@ -13,6 +14,13 @@ export declare const createBankAccount: import("@reduxjs/toolkit").AsyncThunk<{
13
14
  data: any;
14
15
  formData: BankFormValues;
15
16
  }, BankFormValues, {}>;
17
+ export declare const checkIbanBank: import("@reduxjs/toolkit").AsyncThunk<{
18
+ data: any;
19
+ }, {
20
+ iban: string;
21
+ cancelToken: CancelToken;
22
+ onSuccess?: (() => void) | undefined;
23
+ }, {}>;
16
24
  export declare const updateLeadSuccess: import("@reduxjs/toolkit").AsyncThunk<{
17
25
  response: any;
18
26
  formData: void;
@@ -126,7 +126,8 @@ export var createBankAccount = createAsyncThunk('createBankAccount', function (p
126
126
  beneficiary_name: beneficiaryName,
127
127
  bank_name: bank_name
128
128
  },
129
- step_name: BANK_STEP_NAMES.BANK_INFO
129
+ step_name: BANK_STEP_NAMES.BANK_INFO,
130
+ encryption_contract: ['bank_account.iban', 'bank_account.beneficiary_name', 'bank_account.bank_name']
130
131
  };
131
132
  return [4, API.entityService.createBankAccount(requestBody)];
132
133
  case 1:
@@ -139,6 +140,26 @@ export var createBankAccount = createAsyncThunk('createBankAccount', function (p
139
140
  }
140
141
  });
141
142
  }); });
143
+ export var checkIbanBank = createAsyncThunk('checkIbanBank', function (_a) {
144
+ var iban = _a.iban, cancelToken = _a.cancelToken, onSuccess = _a.onSuccess;
145
+ return __awaiter(void 0, void 0, void 0, function () {
146
+ var payload, data;
147
+ return __generator(this, function (_b) {
148
+ switch (_b.label) {
149
+ case 0:
150
+ payload = {
151
+ iban_number: iban,
152
+ encryption_contract: ['iban_number']
153
+ };
154
+ return [4, API.availabilityServices.checkIbanBank(payload, { cancelToken: cancelToken })];
155
+ case 1:
156
+ data = (_b.sent()).data;
157
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess();
158
+ return [2, { data: data }];
159
+ }
160
+ });
161
+ });
162
+ });
142
163
  export var updateLeadSuccess = createAsyncThunk('updateLeadSuccess', function (params, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
143
164
  var _a, settings, bank, response, payload;
144
165
  var _b, _c, _d, _e, _f, _g;
@@ -177,7 +198,7 @@ var initialState = {
177
198
  bankData: {
178
199
  iban: '',
179
200
  beneficiaryName: '',
180
- bankName: 'Global Bank'
201
+ bankName: ''
181
202
  }
182
203
  }
183
204
  };
@@ -277,7 +298,19 @@ export var bankSlice = createSlice({
277
298
  state.data.bankData.responseBody = data;
278
299
  })
279
300
  .addCase(createBankAccount.rejected, function (state, action) {
280
- state.loading = false;
301
+ state.error = action.error.message;
302
+ })
303
+ .addCase(checkIbanBank.pending, function (state) {
304
+ state.error = null;
305
+ })
306
+ .addCase(checkIbanBank.fulfilled, function (state, action) {
307
+ state.error = null;
308
+ var data = action.payload.data;
309
+ state.data.bankData.responseBody = data;
310
+ })
311
+ .addCase(checkIbanBank.rejected, function (state, action) {
312
+ if (action.error.message === 'Aborted')
313
+ return;
281
314
  state.error = action.error.message;
282
315
  });
283
316
  }
@@ -63,6 +63,9 @@ export declare const updateLeadSuccess: import("@reduxjs/toolkit").AsyncThunk<{
63
63
  response: any;
64
64
  formData: void;
65
65
  } | undefined, void, {}>;
66
+ export declare const updateStepName: import("@reduxjs/toolkit").AsyncThunk<{
67
+ response: any;
68
+ }, string, {}>;
66
69
  declare type VerifyData = {
67
70
  token: string;
68
71
  };
@@ -79,10 +79,10 @@ export var getCountries = createAsyncThunk('getCountries', function (_, thunkApi
79
79
  });
80
80
  }); });
81
81
  export var verifyLeadToken = createAsyncThunk('verifyLeadToken', function (token, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
82
- var payload, data, leadResponse;
83
- var _a, _b, _c;
84
- return __generator(this, function (_d) {
85
- switch (_d.label) {
82
+ var payload, data, leadResponse, number;
83
+ var _a;
84
+ return __generator(this, function (_b) {
85
+ switch (_b.label) {
86
86
  case 0:
87
87
  payload = {
88
88
  service_name: 'tap_email',
@@ -90,28 +90,29 @@ export var verifyLeadToken = createAsyncThunk('verifyLeadToken', function (token
90
90
  };
91
91
  return [4, API.leadService.verifyLeadToken(payload)];
92
92
  case 1:
93
- data = (_d.sent()).data;
93
+ data = (_b.sent()).data;
94
94
  leadResponse = undefined;
95
95
  if (!(!(data === null || data === void 0 ? void 0 : data.errors) && !(data === null || data === void 0 ? void 0 : data.mw_error))) return [3, 4];
96
96
  return [4, API.leadService.retrieveLead(data === null || data === void 0 ? void 0 : data.id)];
97
97
  case 2:
98
- leadResponse = _d.sent();
99
- return [4, thunkApi.dispatch(retrieveEntityList({ leadId: data === null || data === void 0 ? void 0 : data.id, licenseNumber: (_c = (_b = (_a = leadResponse === null || leadResponse === void 0 ? void 0 : leadResponse.data) === null || _a === void 0 ? void 0 : _a.entity) === null || _b === void 0 ? void 0 : _b.license) === null || _c === void 0 ? void 0 : _c.number }))];
98
+ leadResponse = _b.sent();
99
+ number = (((_a = leadResponse.data.entity) === null || _a === void 0 ? void 0 : _a.license) || {}).number;
100
+ return [4, thunkApi.dispatch(retrieveEntityList({ leadId: data === null || data === void 0 ? void 0 : data.id, licenseNumber: number }))];
100
101
  case 3:
101
- _d.sent();
102
+ _b.sent();
102
103
  if (data.step_name === BUSINESS_STEP_NAMES.IDENTITY_AUTH) {
103
104
  thunkApi.dispatch(handleNextScreenStep('BUSINESS_IDBOD_STEP'));
104
105
  }
105
106
  if (data.step_name === 'business_info') {
106
107
  thunkApi.dispatch(handleNextScreenStep('BUSINESS_BUSINESS_TYPE_STEP'));
107
108
  }
108
- _d.label = 4;
109
+ _b.label = 4;
109
110
  case 4: return [2, { data: data, leadData: leadResponse === null || leadResponse === void 0 ? void 0 : leadResponse.data, token: token }];
110
111
  }
111
112
  });
112
113
  }); });
113
114
  export var verifyLeadOTP = createAsyncThunk('verifyLeadOTP', function (params, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
114
- var _a, business, settings, isNID, responseBody, payload, data, steps, hasBusinessCompleted;
115
+ var _a, business, settings, isNID, responseBody, stepName, payload, data, steps, hasBusinessCompleted;
115
116
  var _b, _c, _d;
116
117
  return __generator(this, function (_e) {
117
118
  switch (_e.label) {
@@ -119,17 +120,19 @@ export var verifyLeadOTP = createAsyncThunk('verifyLeadOTP', function (params, t
119
120
  _a = thunkApi.getState(), business = _a.business, settings = _a.settings;
120
121
  isNID = business.data.otpData.isNID;
121
122
  responseBody = (isNID ? business.data.nidData : business.data.verify).responseBody;
123
+ stepName = isNID ? BUSINESS_STEP_NAMES.IDENTITY_VERIFY_AUTH : BUSINESS_STEP_NAMES.PHONE_AUTH;
122
124
  payload = {
123
125
  data: params.otp,
124
126
  service_name: (_b = responseBody === null || responseBody === void 0 ? void 0 : responseBody.verification_by) === null || _b === void 0 ? void 0 : _b.service_name,
125
127
  verify_token: responseBody === null || responseBody === void 0 ? void 0 : responseBody.verify_token,
126
- step_name: isNID ? BUSINESS_STEP_NAMES.IDENTITY_VERIFY_AUTH : BUSINESS_STEP_NAMES.PHONE_AUTH,
128
+ step_name: stepName,
127
129
  encryption_contract: ['data']
128
130
  };
129
131
  return [4, API.leadService.verifyLeadOTP(payload)];
130
132
  case 1:
131
133
  data = (_e.sent()).data;
132
134
  if (!data.errors) {
135
+ thunkApi.dispatch(updateStepName(stepName));
133
136
  (_d = (_c = settings.data.appConfig).onStepCompleted) === null || _d === void 0 ? void 0 : _d.call(_c, settings.data.activeScreen.name, { otp: params.otp });
134
137
  steps = (responseBody === null || responseBody === void 0 ? void 0 : responseBody.steps) || [];
135
138
  hasBusinessCompleted = Object.keys(steps).find(function (key) { return key === BUSINESS_STEP_NAMES.BUSINESS_SUCCESS; });
@@ -153,13 +156,14 @@ export var verifyLeadOTP = createAsyncThunk('verifyLeadOTP', function (params, t
153
156
  });
154
157
  }); });
155
158
  export var updateLeadIdentity = createAsyncThunk('updateLeadIdentity', function (params, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
156
- var _a, settings, business, identification_id_type, headers, requestBody, data;
159
+ var _a, settings, business, identification_id_type, stepName, headers, requestBody, data;
157
160
  var _b, _c, _d, _e, _f;
158
161
  return __generator(this, function (_g) {
159
162
  switch (_g.label) {
160
163
  case 0:
161
164
  _a = thunkApi.getState(), settings = _a.settings, business = _a.business;
162
165
  identification_id_type = params.nid.startsWith('1') ? IDENTIFICATION_TYPE.NID : IDENTIFICATION_TYPE.IQAMA;
166
+ stepName = BUSINESS_STEP_NAMES.IDENTITY_AUTH;
163
167
  headers = {
164
168
  lead_id: ((_b = business.data.verify.responseBody) === null || _b === void 0 ? void 0 : _b.id) || '',
165
169
  device_identifier: (_d = (_c = settings.data.deviceInfo) === null || _c === void 0 ? void 0 : _c.browser) === null || _d === void 0 ? void 0 : _d.browser_id
@@ -169,13 +173,14 @@ export var updateLeadIdentity = createAsyncThunk('updateLeadIdentity', function
169
173
  identification_id_type: identification_id_type,
170
174
  date_of_birth: params.dob,
171
175
  country_code: business.data.businessCountry.iso2,
172
- step_name: BUSINESS_STEP_NAMES.IDENTITY_AUTH,
176
+ step_name: stepName,
173
177
  encryption_contract: ['country_code', 'identification_id', 'identification_id_type', 'date_of_birth']
174
178
  };
175
179
  return [4, API.leadService.updateLeadIdentity(requestBody, { headers: headers })];
176
180
  case 1:
177
181
  data = (_g.sent()).data;
178
182
  if (!data.errors && !params.isResend) {
183
+ thunkApi.dispatch(updateStepName(stepName));
179
184
  thunkApi.dispatch(handleNextScreenStep());
180
185
  (_f = (_e = settings.data.appConfig).onStepCompleted) === null || _f === void 0 ? void 0 : _f.call(_e, settings.data.activeScreen.name, requestBody);
181
186
  }
@@ -255,7 +260,7 @@ export var createAccount = createAsyncThunk('createAccount', function (params, t
255
260
  });
256
261
  }); });
257
262
  export var updateActivitiesInfo = createAsyncThunk('updateActivitiesInfo', function (params, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
258
- var _a, settings, business, channel, activities, requestBody, headers, data;
263
+ var _a, settings, business, channel, activities, stepName, id, requestBody, headers, data;
259
264
  var _b, _c, _d, _e;
260
265
  return __generator(this, function (_f) {
261
266
  switch (_f.label) {
@@ -269,17 +274,20 @@ export var updateActivitiesInfo = createAsyncThunk('updateActivitiesInfo', funct
269
274
  var en = _a.en;
270
275
  return en;
271
276
  });
277
+ stepName = BUSINESS_STEP_NAMES.BUSINESS_CR_ACTIVITIES;
278
+ id = (_c = business.data.businessTypeData.responseBody) === null || _c === void 0 ? void 0 : _c.entity_id;
272
279
  requestBody = {
273
280
  activities: activities,
274
281
  channel_services: channel,
275
282
  business_operation_start_at: params.operationStartDate,
276
- step_name: BUSINESS_STEP_NAMES.BUSINESS_CR_ACTIVITIES
283
+ step_name: stepName
277
284
  };
278
- headers = { entity_id: (_c = business.data.businessTypeData.responseBody) === null || _c === void 0 ? void 0 : _c.entity_id };
285
+ headers = { entity_id: id };
279
286
  return [4, API.entityService.createEntityInfo(requestBody, { headers: headers })];
280
287
  case 1:
281
288
  data = (_f.sent()).data;
282
289
  if (!!data.errors) return [3, 3];
290
+ thunkApi.dispatch(updateStepName(stepName));
283
291
  return [4, thunkApi.dispatch(retrieveDataList())];
284
292
  case 2:
285
293
  _f.sent();
@@ -310,7 +318,7 @@ export var retrieveDataList = createAsyncThunk('retrieveDataList', function () {
310
318
  });
311
319
  }); });
312
320
  export var updateCustomersInfo = createAsyncThunk('updateCustomersInfo', function (params, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
313
- var _a, settings, business, customerBase, requestBody, data;
321
+ var _a, settings, business, customerBase, stepName, requestBody, data;
314
322
  var _b, _c, _d, _e, _f;
315
323
  return __generator(this, function (_g) {
316
324
  switch (_g.label) {
@@ -320,6 +328,7 @@ export var updateCustomersInfo = createAsyncThunk('updateCustomersInfo', functio
320
328
  var title = _a.title;
321
329
  return title;
322
330
  });
331
+ stepName = BUSINESS_STEP_NAMES.BUSINESS_CUSTOMERS;
323
332
  requestBody = {
324
333
  customers_base: customerBase,
325
334
  id: (_b = business.data.businessTypeData.responseBody) === null || _b === void 0 ? void 0 : _b.entity_id,
@@ -327,12 +336,13 @@ export var updateCustomersInfo = createAsyncThunk('updateCustomersInfo', functio
327
336
  yearly_sales_range: ((_d = params.expectedSalesRange) === null || _d === void 0 ? void 0 : _d.title) || '',
328
337
  agree_refund: params.refundPolicy,
329
338
  agree_chargeback: params.transactionPolicy,
330
- step_name: BUSINESS_STEP_NAMES.BUSINESS_CUSTOMERS
339
+ step_name: stepName
331
340
  };
332
341
  return [4, API.entityService.updateEntityInfo(requestBody)];
333
342
  case 1:
334
343
  data = (_g.sent()).data;
335
344
  if (!data.errors) {
345
+ thunkApi.dispatch(updateStepName(stepName));
336
346
  thunkApi.dispatch(handleNextScreenStep());
337
347
  (_f = (_e = settings.data.appConfig).onStepCompleted) === null || _f === void 0 ? void 0 : _f.call(_e, settings.data.activeScreen.name, requestBody);
338
348
  }
@@ -341,14 +351,15 @@ export var updateCustomersInfo = createAsyncThunk('updateCustomersInfo', functio
341
351
  });
342
352
  }); });
343
353
  export var updateLeadSuccess = createAsyncThunk('updateLeadSuccess', function (params, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
344
- var _a, settings, business, id, payload, data;
345
- var _b, _c, _d, _e;
346
- return __generator(this, function (_f) {
347
- switch (_f.label) {
354
+ var _a, settings, business, _b, steps, id, flowCompleted, payload, data;
355
+ var _c, _d, _e, _f;
356
+ return __generator(this, function (_g) {
357
+ switch (_g.label) {
348
358
  case 0:
349
359
  _a = thunkApi.getState(), settings = _a.settings, business = _a.business;
350
- id = (business.data.otpData.responseBody || {}).id;
351
- if (!id)
360
+ _b = business.data.verify.responseBody || {}, steps = _b.steps, id = _b.id;
361
+ flowCompleted = Object.keys(steps).find(function (key) { return key === BUSINESS_STEP_NAMES.BUSINESS_SUCCESS; });
362
+ if (flowCompleted)
352
363
  return [2];
353
364
  payload = {
354
365
  step_name: BUSINESS_STEP_NAMES.BUSINESS_SUCCESS,
@@ -375,13 +386,32 @@ export var updateLeadSuccess = createAsyncThunk('updateLeadSuccess', function (p
375
386
  };
376
387
  return [4, API.leadService.updateLead(payload)];
377
388
  case 1:
378
- data = (_f.sent()).data;
379
- (_c = (_b = settings.data.appConfig).onStepCompleted) === null || _c === void 0 ? void 0 : _c.call(_b, settings.data.activeScreen.name, params);
380
- (_e = (_d = settings.data.appConfig).onFlowCompleted) === null || _e === void 0 ? void 0 : _e.call(_d, { data: data });
389
+ data = (_g.sent()).data;
390
+ (_d = (_c = settings.data.appConfig).onStepCompleted) === null || _d === void 0 ? void 0 : _d.call(_c, settings.data.activeScreen.name, params);
391
+ (_f = (_e = settings.data.appConfig).onFlowCompleted) === null || _f === void 0 ? void 0 : _f.call(_e, { data: data });
381
392
  return [2, { response: data, formData: params }];
382
393
  }
383
394
  });
384
395
  }); });
396
+ export var updateStepName = createAsyncThunk('updateStepName', function (stepName, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
397
+ var business, payload, data;
398
+ var _a;
399
+ return __generator(this, function (_b) {
400
+ switch (_b.label) {
401
+ case 0:
402
+ business = thunkApi.getState().business;
403
+ payload = {
404
+ step_name: stepName,
405
+ id: ((_a = business.data.verify.responseBody) === null || _a === void 0 ? void 0 : _a.id) || '',
406
+ encryption_contract: []
407
+ };
408
+ return [4, API.leadService.updateLead(payload)];
409
+ case 1:
410
+ data = (_b.sent()).data;
411
+ return [2, { response: data }];
412
+ }
413
+ });
414
+ }); });
385
415
  var initialState = {
386
416
  error: null,
387
417
  loading: false,
@@ -526,10 +556,10 @@ export var businessSlice = createSlice({
526
556
  state.customLoading = true;
527
557
  })
528
558
  .addCase(retrieveEntityList.fulfilled, function (state, action) {
529
- var _a, _b, _c;
559
+ var _a, _b, _c, _d, _e;
530
560
  state.error = null;
531
561
  state.customLoading = false;
532
- var _d = action.payload, data = _d.data, licenseNumber = _d.licenseNumber;
562
+ var _f = action.payload, data = _f.data, licenseNumber = _f.licenseNumber;
533
563
  var description = (((_a = data === null || data === void 0 ? void 0 : data.errors) === null || _a === void 0 ? void 0 : _a[0]) || {}).description;
534
564
  var licenseList = [];
535
565
  if (!description) {
@@ -550,7 +580,9 @@ export var businessSlice = createSlice({
550
580
  state.data.businessTypeData.responseBody = { licenseList: licenseList };
551
581
  var selectedLicense = ((_b = licenseList === null || licenseList === void 0 ? void 0 : licenseList.find) === null || _b === void 0 ? void 0 : _b.call(licenseList, function (item) { var _a; return ((_a = item.license) === null || _a === void 0 ? void 0 : _a.number) === licenseNumber; })) || (licenseList === null || licenseList === void 0 ? void 0 : licenseList[0]);
552
582
  state.data.businessTypeData.selectedLicense = selectedLicense;
553
- state.data.businessTypeData.licenseNumber = (_c = selectedLicense === null || selectedLicense === void 0 ? void 0 : selectedLicense.license) === null || _c === void 0 ? void 0 : _c.number;
583
+ var isOtherLicense = ((_c = selectedLicense === null || selectedLicense === void 0 ? void 0 : selectedLicense.license) === null || _c === void 0 ? void 0 : _c.number) === 'other_fl' || ((_d = selectedLicense === null || selectedLicense === void 0 ? void 0 : selectedLicense.license) === null || _d === void 0 ? void 0 : _d.number) === 'other_cr';
584
+ if (!isOtherLicense)
585
+ state.data.businessTypeData.licenseNumber = (_e = selectedLicense === null || selectedLicense === void 0 ? void 0 : selectedLicense.license) === null || _e === void 0 ? void 0 : _e.number;
554
586
  })
555
587
  .addCase(retrieveEntityList.rejected, function (state, action) {
556
588
  state.error = action.error.message;
@@ -603,9 +635,9 @@ export var businessSlice = createSlice({
603
635
  state.error = 'signup_user_exists_error';
604
636
  return;
605
637
  }
606
- var licenseList = (state.data.businessTypeData.responseBody || { licenseList: [] }).licenseList;
607
- state.data.businessTypeData.responseBody = __assign(__assign({ licenseList: licenseList }, data), { channelList: channelsData || [] });
608
- var selectedChannel = channelsData === null || channelsData === void 0 ? void 0 : channelsData[0];
638
+ var channels = channelsData || [];
639
+ state.data.businessTypeData.responseBody = __assign(__assign(__assign({}, data), state.data.businessTypeData.responseBody), { channelList: channels });
640
+ var selectedChannel = channels === null || channels === void 0 ? void 0 : channels[0];
609
641
  if (!!selectedChannel)
610
642
  state.data.activitiesData.salesChannels = [selectedChannel];
611
643
  })
@@ -689,6 +721,7 @@ export var businessSlice = createSlice({
689
721
  state.error = description;
690
722
  return;
691
723
  }
724
+ state.data.verify.responseBody = __assign(__assign({}, state.data.verify.responseBody), { flows: response.flows });
692
725
  removeRequestHeaders();
693
726
  })
694
727
  .addCase(updateLeadSuccess.pending, function (state) {
@@ -284,7 +284,7 @@ export var updateLeadBrand = createAsyncThunk('updateLeadBrand', function (param
284
284
  id: (isExistingUser ? (_h = brandData.responseBody) === null || _h === void 0 ? void 0 : _h.lead_id : (_j = otpData.responseBody) === null || _j === void 0 ? void 0 : _j.lead_id) || '',
285
285
  terms_conditions_accepted: params.termAndConditionChecked,
286
286
  step_name: CONNECT_STEP_NAMES.UPDATE_LEAD_MERCHANT,
287
- encryption_contract: ['brand.name.en', 'brand.name.ar', 'brand.name.zh', 'social[0]', 'social[1]']
287
+ encryption_contract: ['brand.name.en', 'brand.name.ar', 'brand.name.zh']
288
288
  };
289
289
  return [4, API.leadService.updateLead(payload)];
290
290
  case 1:
@@ -10,12 +10,13 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import * as React from 'react';
13
14
  import { ScreenContainer } from '../../../shared/Containers';
14
15
  import Beneficiary from './Beneficiary';
15
16
  import IBAN from './IBAN';
16
17
  import BankName from './BankName';
17
18
  import Button from '../../../shared/Button';
18
- import { useAppDispatch } from '../../../../hooks';
19
+ import { useAppDispatch, useAppSelector } from '../../../../hooks';
19
20
  import { BankValidation } from './validation';
20
21
  import { useTranslation } from 'react-i18next';
21
22
  import { useForm, FormProvider } from 'react-hook-form';
@@ -24,7 +25,6 @@ import { useLanguage } from '../../../../hooks';
24
25
  import { styled } from '@mui/material/styles';
25
26
  import { bankSelector, createBankAccount } from '../../../app/bank/bankStore';
26
27
  import Form from '../../../../components/Form';
27
- import { useSelector } from 'react-redux';
28
28
  var FormStyled = styled(Form)(function () { return ({
29
29
  display: 'flex',
30
30
  flexDirection: 'column',
@@ -37,8 +37,9 @@ var ButtonStyled = styled(Button)(function (_a) {
37
37
  });
38
38
  });
39
39
  var BankDetails = function () {
40
+ var _a = React.useState(false), ibanChecking = _a[0], setIbanChecking = _a[1];
40
41
  var dispatch = useAppDispatch();
41
- var _a = useSelector(bankSelector), data = _a.data, loading = _a.loading, error = _a.error;
42
+ var _b = useAppSelector(bankSelector), data = _b.data, loading = _b.loading, error = _b.error;
42
43
  var methods = useForm({
43
44
  resolver: yupResolver(BankValidation),
44
45
  defaultValues: data.bankData,
@@ -49,6 +50,7 @@ var BankDetails = function () {
49
50
  };
50
51
  var t = useTranslation().t;
51
52
  var isAr = useLanguage().isAr;
52
- return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(IBAN, {}), _jsx(Beneficiary, {}), _jsx(BankName, {}), _jsx(ButtonStyled, __assign({ disableBack: true, disabled: !methods.formState.isValid, isAr: isAr, loading: loading, error: t(error || '') }, { children: t('confirm') }))] })) })) }));
53
+ var disabled = ibanChecking || !methods.formState.isValid;
54
+ return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(Beneficiary, {}), _jsx(IBAN, { fetchingIban: function (value) { return setIbanChecking(value); }, ibanChecking: ibanChecking }), _jsx(BankName, {}), _jsx(ButtonStyled, __assign({ disableBack: true, disabled: disabled, isAr: isAr, loading: loading, error: t(error || '') }, { children: t('confirm') }))] })) })) }));
53
55
  };
54
56
  export default BankDetails;
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
2
3
  import { ScreenContainer } from '../../../shared/Containers';
3
4
  import Input from '../../../shared/Input';
4
5
  import { useTranslation } from 'react-i18next';
@@ -6,6 +7,9 @@ import { useController, useFormContext } from 'react-hook-form';
6
7
  import { styled } from '@mui/material/styles';
7
8
  import ClearIcon from '../../../shared/ClearIcon';
8
9
  import CheckIcon from '../../../shared/CheckIcon';
10
+ import { bankSelector } from '../../../app/bank/bankStore';
11
+ import { useAppSelector } from '../../../../hooks';
12
+ import { removeAllOtherThanAlphabetAndSpace } from '../../../../utils';
9
13
  var FeatureStyled = styled(ScreenContainer)(function (_a) {
10
14
  var theme = _a.theme;
11
15
  return ({
@@ -18,15 +22,25 @@ var InputStyled = styled(Input)(function () { return ({
18
22
  }
19
23
  }); });
20
24
  var BankName = function () {
21
- var _a;
25
+ var _a, _b;
22
26
  var t = useTranslation().t;
23
- var control = useFormContext().control;
27
+ var _c = useFormContext(), setValue = _c.setValue, control = _c.control;
28
+ var _d = useAppSelector(bankSelector), data = _d.data, loading = _d.loading;
24
29
  var bankNameControl = useController({ name: 'bankName', control: control });
25
30
  var bankNameValue = bankNameControl.field.value;
26
31
  var hasError = !!((_a = bankNameControl.fieldState.error) === null || _a === void 0 ? void 0 : _a.message);
32
+ var bankName = (_b = data.bankData.responseBody) === null || _b === void 0 ? void 0 : _b.bank_name;
27
33
  var clearValue = function () {
28
34
  bankNameControl.field.onChange('');
29
35
  };
30
- return (_jsx(FeatureStyled, { children: _jsx(InputStyled, { label: t('enter_bank_name'), placeholder: t('enter_bank_name_placeholder'), value: bankNameValue, required: true, readOnly: true, endAdornment: !hasError && bankNameValue ? _jsx(CheckIcon, {}) : bankNameValue && _jsx(ClearIcon, { onClick: clearValue }) }) }));
36
+ React.useEffect(function () {
37
+ setValue('bankName', bankName);
38
+ }, []);
39
+ var handleBankChange = function (_a) {
40
+ var target = _a.target;
41
+ var value = removeAllOtherThanAlphabetAndSpace(target.value);
42
+ bankNameControl.field.onChange(value);
43
+ };
44
+ return (_jsx(FeatureStyled, { children: _jsx(InputStyled, { label: t('enter_bank_name'), placeholder: t('enter_bank_name_placeholder'), onChange: handleBankChange, value: bankNameValue, required: true, disabled: !!bankName, endAdornment: !hasError && bankNameValue ? _jsx(CheckIcon, {}) : bankNameValue && _jsx(ClearIcon, { onClick: clearValue }) }) }));
31
45
  };
32
46
  export default BankName;