@tap-payments/auth-jsconnect 2.0.2 → 2.0.5

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 (124) hide show
  1. package/build/@types/app.d.ts +5 -0
  2. package/build/@types/form.d.ts +4 -1
  3. package/build/api/auth.d.ts +20 -3
  4. package/build/api/axios.js +8 -9
  5. package/build/api/data.d.ts +1 -0
  6. package/build/api/data.js +9 -2
  7. package/build/api/entity.d.ts +13 -1
  8. package/build/api/entity.js +20 -2
  9. package/build/api/index.d.ts +7 -4
  10. package/build/api/lead.d.ts +3 -1
  11. package/build/api/lead.js +14 -2
  12. package/build/assets/locales/ar.json +4 -1
  13. package/build/assets/locales/en.json +4 -1
  14. package/build/components/AnimationFlow/AnimationFlow.d.ts +2 -1
  15. package/build/components/AnimationFlow/AnimationFlow.js +2 -2
  16. package/build/components/AnimationFlow/BottomSheet.d.ts +2 -1
  17. package/build/components/AnimationFlow/BottomSheet.js +16 -4
  18. package/build/components/FileInput/DragAndDrop.d.ts +7 -0
  19. package/build/components/FileInput/DragAndDrop.js +39 -0
  20. package/build/components/FileInput/UploadInput.d.ts +7 -0
  21. package/build/components/FileInput/UploadInput.js +38 -0
  22. package/build/components/FileInput/index.d.ts +3 -0
  23. package/build/components/FileInput/index.js +3 -0
  24. package/build/constants/api.d.ts +3 -1
  25. package/build/constants/api.js +7 -3
  26. package/build/constants/app.d.ts +5 -0
  27. package/build/constants/app.js +55 -9
  28. package/build/constants/assets.d.ts +1 -0
  29. package/build/constants/assets.js +1 -0
  30. package/build/constants/validation.d.ts +2 -0
  31. package/build/constants/validation.js +2 -0
  32. package/build/features/app/bank/bankStore.d.ts +1 -0
  33. package/build/features/app/bank/bankStore.js +59 -18
  34. package/build/features/app/business/businessStore.d.ts +3 -5
  35. package/build/features/app/business/businessStore.js +149 -50
  36. package/build/features/app/connect/connectStore.d.ts +5 -10
  37. package/build/features/app/connect/connectStore.js +135 -41
  38. package/build/features/app/individual/individualStore.d.ts +3 -2
  39. package/build/features/app/individual/individualStore.js +50 -37
  40. package/build/features/app/password/passwordStore.d.ts +32 -1
  41. package/build/features/app/password/passwordStore.js +197 -14
  42. package/build/features/app/tax/taxStore.js +19 -12
  43. package/build/features/bank/Bank.js +3 -4
  44. package/build/features/bank/screens/BankDetails/BankDetails.js +2 -1
  45. package/build/features/bank/screens/BankDetails/BankStatement.d.ts +3 -0
  46. package/build/features/bank/screens/BankDetails/BankStatement.js +38 -0
  47. package/build/features/bank/screens/BankDetails/validation.d.ts +3 -0
  48. package/build/features/bank/screens/BankDetails/validation.js +1 -0
  49. package/build/features/bank/screens/ResetPasswordSuccess/ResetPasswordSuccess.d.ts +5 -0
  50. package/build/features/bank/screens/ResetPasswordSuccess/ResetPasswordSuccess.js +9 -0
  51. package/build/features/bank/screens/ResetPasswordSuccess/index.d.ts +3 -0
  52. package/build/features/bank/screens/ResetPasswordSuccess/index.js +2 -0
  53. package/build/features/bank/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +23 -15
  54. package/build/features/business/Business.js +3 -4
  55. package/build/features/business/screens/Activities/Activities.js +2 -1
  56. package/build/features/business/screens/Activities/LicenseName.d.ts +5 -0
  57. package/build/features/business/screens/Activities/LicenseName.js +30 -0
  58. package/build/features/business/screens/IDBOD/IDBOD.js +1 -1
  59. package/build/features/business/screens/OTP/OTPInput.js +3 -9
  60. package/build/features/business/screens/ResetPasswordSuccess/ResetPasswordSuccess.d.ts +5 -0
  61. package/build/features/business/screens/ResetPasswordSuccess/ResetPasswordSuccess.js +9 -0
  62. package/build/features/business/screens/ResetPasswordSuccess/index.d.ts +3 -0
  63. package/build/features/business/screens/ResetPasswordSuccess/index.js +2 -0
  64. package/build/features/business/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +24 -17
  65. package/build/features/connect/Connect.js +1 -1
  66. package/build/features/connect/screens/Merchant/BrandList.js +1 -5
  67. package/build/features/connect/screens/Merchant/Merchant.js +10 -8
  68. package/build/features/connect/screens/Merchant/validation.js +4 -2
  69. package/build/features/connect/screens/Mobile/Mobile.js +2 -2
  70. package/build/features/connect/screens/Mobile/MobileNumber.js +1 -1
  71. package/build/features/connect/screens/NID/IDNumber.js +1 -1
  72. package/build/features/connect/screens/NID/NID.js +2 -2
  73. package/build/features/connect/screens/OTP/OTPInput.js +3 -13
  74. package/build/features/featuresScreens.js +20 -5
  75. package/build/features/individual/Individual.js +3 -4
  76. package/build/features/individual/screens/AdditionalIndividualInfo/AdditionalIndividualInfo.js +7 -1
  77. package/build/features/individual/screens/AdditionalIndividualInfo/Occupation.d.ts +10 -0
  78. package/build/features/individual/screens/AdditionalIndividualInfo/Occupation.js +89 -0
  79. package/build/features/individual/screens/AdditionalIndividualInfo/validation.d.ts +3 -0
  80. package/build/features/individual/screens/AdditionalIndividualInfo/validation.js +1 -0
  81. package/build/features/individual/screens/ResetPasswordSuccess/ResetPasswordSuccess.d.ts +5 -0
  82. package/build/features/individual/screens/ResetPasswordSuccess/ResetPasswordSuccess.js +9 -0
  83. package/build/features/individual/screens/ResetPasswordSuccess/index.d.ts +3 -0
  84. package/build/features/individual/screens/ResetPasswordSuccess/index.js +2 -0
  85. package/build/features/individual/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +23 -15
  86. package/build/features/password/Password.js +11 -6
  87. package/build/features/password/screens/CreatePassword/CreatePassword.js +9 -2
  88. package/build/features/password/screens/OTP/OTP.d.ts +8 -0
  89. package/build/features/password/screens/OTP/OTP.js +78 -0
  90. package/build/features/password/screens/OTP/OTPInput.d.ts +5 -0
  91. package/build/features/password/screens/OTP/OTPInput.js +46 -0
  92. package/build/features/password/screens/OTP/index.d.ts +3 -0
  93. package/build/features/password/screens/OTP/index.js +2 -0
  94. package/build/features/password/screens/OTP/validation.d.ts +8 -0
  95. package/build/features/password/screens/OTP/validation.js +4 -0
  96. package/build/features/password/screens/ResetPasswordSuccess/ResetPasswordSuccess.d.ts +5 -0
  97. package/build/features/password/screens/ResetPasswordSuccess/ResetPasswordSuccess.js +9 -0
  98. package/build/features/password/screens/ResetPasswordSuccess/index.d.ts +3 -0
  99. package/build/features/password/screens/ResetPasswordSuccess/index.js +2 -0
  100. package/build/features/password/screens/Success/Success.js +8 -2
  101. package/build/features/password/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +24 -16
  102. package/build/features/password/screens/Verify/OTPInput.d.ts +2 -2
  103. package/build/features/password/screens/Verify/OTPInput.js +1 -1
  104. package/build/features/shared/Button/Button.js +1 -1
  105. package/build/features/shared/Button/FlowsButtons.d.ts +8 -2
  106. package/build/features/shared/Button/FlowsButtons.js +90 -6
  107. package/build/features/shared/Button/SuccessButton.js +31 -13
  108. package/build/features/shared/UploadFile/UploadFile.d.ts +21 -0
  109. package/build/features/shared/UploadFile/UploadFile.js +77 -0
  110. package/build/features/shared/UploadFile/index.d.ts +2 -0
  111. package/build/features/shared/UploadFile/index.js +2 -0
  112. package/build/features/tax/Tax.js +3 -4
  113. package/build/features/tax/screens/ResetPasswordSuccess/ResetPasswordSuccess.d.ts +5 -0
  114. package/build/features/tax/screens/ResetPasswordSuccess/ResetPasswordSuccess.js +9 -0
  115. package/build/features/tax/screens/ResetPasswordSuccess/index.d.ts +3 -0
  116. package/build/features/tax/screens/ResetPasswordSuccess/index.js +2 -0
  117. package/build/features/tax/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +23 -15
  118. package/build/hooks/useAppTheme.js +3 -2
  119. package/build/index.css +4 -0
  120. package/build/theme/theme.d.ts +1 -1
  121. package/build/theme/theme.js +1 -2
  122. package/build/utils/string.d.ts +1 -0
  123. package/build/utils/string.js +6 -1
  124. package/package.json +2 -1
@@ -0,0 +1,78 @@
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 * as React from 'react';
14
+ import { useAppDispatch, useAppSelector } from '../../../../hooks';
15
+ import { useTranslation } from 'react-i18next';
16
+ import { useForm, FormProvider } from 'react-hook-form';
17
+ import { yupResolver } from '@hookform/resolvers/yup';
18
+ import Box from '@mui/material/Box/Box';
19
+ import { styled } from '@mui/material/styles';
20
+ import { handlePrevScreenStep } from '../../../../app/settings';
21
+ import { useLanguage } from '../../../../hooks';
22
+ import Form from '../../../../components/Form';
23
+ import Text from '../../../../components/Text';
24
+ import { ScreenContainer } from '../../../shared/Containers';
25
+ import { passwordSelector, clearError, resetOTPScreen, resetPassword } from '../../../app/password/passwordStore';
26
+ import Button from '../../../shared/Button';
27
+ import { maskPhone } from '../../../../utils';
28
+ import { OTPValidation } from './validation';
29
+ import OTPInput from './OTPInput';
30
+ var OTPTitleContainerStyled = styled(Box)(function (_a) {
31
+ var theme = _a.theme;
32
+ return ({
33
+ background: theme.palette.common.white,
34
+ border: '1px solid',
35
+ borderColor: theme.palette.divider,
36
+ direction: theme.direction,
37
+ borderRadius: theme.spacing(0, 0, 1.25, 1.25),
38
+ marginBottom: theme.spacing(5.75)
39
+ });
40
+ });
41
+ var OTPTitleStyled = styled(Text)(function (_a) {
42
+ var theme = _a.theme;
43
+ return (__assign(__assign({}, theme.typography.body1), { fontWeight: theme.typography.fontWeightLight, color: theme.palette.text.primary, marginBlock: theme.spacing(1.75), marginInline: theme.spacing(2.5), lineHeight: 1.75, whiteSpace: 'pre-line' }));
44
+ });
45
+ var FormStyled = styled(Form)(function () { return ({
46
+ display: 'flex',
47
+ flexDirection: 'column'
48
+ }); });
49
+ var OTP = function (_a) {
50
+ var _b, _c;
51
+ var _d = useAppSelector(passwordSelector), data = _d.data, loading = _d.loading, error = _d.error;
52
+ var dispatch = useAppDispatch();
53
+ var methods = useForm({
54
+ resolver: yupResolver(OTPValidation),
55
+ defaultValues: data.otpData,
56
+ mode: 'onChange'
57
+ });
58
+ var t = useTranslation().t;
59
+ var isAr = useLanguage().isAr;
60
+ React.useEffect(function () {
61
+ if (error)
62
+ dispatch(clearError());
63
+ return function () {
64
+ dispatch(resetOTPScreen());
65
+ };
66
+ }, [methods.formState.isValid]);
67
+ var onSubmit = function (formData) {
68
+ dispatch(resetPassword(formData));
69
+ };
70
+ var onBack = function () {
71
+ dispatch(handlePrevScreenStep());
72
+ };
73
+ var disabled = !methods.formState.isValid || !!error;
74
+ var phone = (_c = (_b = data.verify.responseBody) === null || _b === void 0 ? void 0 : _b.auth_info) === null || _c === void 0 ? void 0 : _c.phone;
75
+ return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(OTPTitleContainerStyled, { children: _jsxs(OTPTitleStyled, { children: [loading ? t('ide_otp_waiting_title') : t('opt_nid_sent_title', { provider: 'ABSHER' }), ' ', !loading && _jsx("span", __assign({ dir: 'ltr' }, { children: "".concat(maskPhone(phone || '')) }))] }) }), _jsx(OTPInput, {}), _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, disabled: disabled, isAr: isAr, loading: loading, error: t(error || '') }, { children: t('next') }))] })) })) }));
76
+ };
77
+ OTP.defaultProps = {};
78
+ export default React.memo(OTP);
@@ -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,46 @@
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 { useAppDispatch } from '../../../../hooks';
21
+ import { resendOperationOTP } from '../../../../features/app/password/passwordStore';
22
+ var BoxStyled = styled(Box)(function (_a) {
23
+ var theme = _a.theme;
24
+ return ({
25
+ display: 'flex',
26
+ flexDirection: 'column',
27
+ fontFamily: theme.typography.fontFamily
28
+ });
29
+ });
30
+ var OTPInput = function (_a) {
31
+ var _b = useFormContext(), control = _b.control, setValue = _b.setValue;
32
+ var t = useTranslation().t;
33
+ var dispatch = useAppDispatch();
34
+ var otpControl = useController({ name: 'otp', control: control });
35
+ var handleOnOTPChange = function (otp) {
36
+ otpControl.field.onChange(otp);
37
+ };
38
+ var handleOnResendOTP = function () {
39
+ if (otpControl.field.value)
40
+ setValue('otp', '', { shouldValidate: true });
41
+ dispatch(resendOperationOTP());
42
+ };
43
+ var otpValue = otpControl.field.value;
44
+ 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()); } }) })));
45
+ };
46
+ export default React.memo(OTPInput);
@@ -0,0 +1,3 @@
1
+ import OTP, { OTPProps } from './OTP';
2
+ export type { OTPProps };
3
+ export default OTP;
@@ -0,0 +1,2 @@
1
+ import OTP from './OTP';
2
+ export default OTP;
@@ -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
+ });
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ export interface ResetPasswordSuccessProps {
3
+ }
4
+ declare const _default: React.MemoExoticComponent<({}: ResetPasswordSuccessProps) => JSX.Element>;
5
+ export default _default;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { useTranslation } from 'react-i18next';
4
+ import SuccessScreen from '../../../shared/SuccessScreen';
5
+ var ResetPasswordSuccess = function (_a) {
6
+ var t = useTranslation().t;
7
+ return (_jsx(SuccessScreen, { title: t("reset_password_success_title"), description: t("reset_password_success_description"), showEmailProviders: true }));
8
+ };
9
+ export default React.memo(ResetPasswordSuccess);
@@ -0,0 +1,3 @@
1
+ import ResetPasswordSuccess, { ResetPasswordSuccessProps } from './ResetPasswordSuccess';
2
+ export type { ResetPasswordSuccessProps };
3
+ export default ResetPasswordSuccess;
@@ -0,0 +1,2 @@
1
+ import ResetPasswordSuccess from './ResetPasswordSuccess';
2
+ export default ResetPasswordSuccess;
@@ -2,13 +2,19 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
3
  import { useTranslation } from 'react-i18next';
4
4
  import { useAppDispatch, useAppSelector } from '../../../../hooks';
5
- import { updateLeadSuccess, passwordSelector } from '../../../app/password/passwordStore';
5
+ import { updateLeadSuccess, passwordSelector, retrieveLeadPassword } from '../../../app/password/passwordStore';
6
6
  import SuccessScreen from '../../../shared/SuccessScreen';
7
+ import { PASSWORD_OPERATION_TYPE } from '../../../../constants';
7
8
  var Success = function (_a) {
8
9
  var t = useTranslation().t;
9
10
  var dispatch = useAppDispatch();
10
- var _b = useAppSelector(passwordSelector), loading = _b.loading, error = _b.error;
11
+ var _b = useAppSelector(passwordSelector), loading = _b.loading, error = _b.error, data = _b.data;
12
+ var operationType = data.verify.operationType;
11
13
  var onSuccess = function () {
14
+ if (operationType === PASSWORD_OPERATION_TYPE.RESET_PASSWORD) {
15
+ dispatch(retrieveLeadPassword());
16
+ return;
17
+ }
12
18
  dispatch(updateLeadSuccess());
13
19
  };
14
20
  return (_jsx(SuccessScreen, { title: t('password_success_title'), onSuccess: onSuccess, successTitle: t('continue'), loading: loading, error: error || '' }));
@@ -10,18 +10,19 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
13
- import React, { memo, useEffect, useState } from 'react';
13
+ import { memo, useEffect, useState } from 'react';
14
14
  import { useTranslation } from 'react-i18next';
15
15
  import { styled } from '@mui/material/styles';
16
16
  import { FlowsButtons } from '../../../shared/Button';
17
- import { ICONS_NAMES } from '../../../../constants';
17
+ import { ICONS_NAMES, PASSWORD_OPERATION_TYPE } from '../../../../constants';
18
18
  import { useAppSelector, useLanguage } from '../../../../hooks';
19
- import { allAreTruthy, showLastFour } from '../../../../utils';
19
+ import { getResetFlowUrl, showLastFour } from '../../../../utils';
20
20
  import { passwordSelector } from '../../../app/password/passwordStore';
21
21
  import Box from '@mui/material/Box';
22
22
  import Text from '../../../../components/Text';
23
23
  import Container from '../../../shared/Containers/ScreenContainer';
24
- import AcceptancePayouts from '../../../../features/shared/AcceptancePayouts';
24
+ import AcceptancePayouts from '../../../shared/AcceptancePayouts';
25
+ import { settingsSelector } from '../../../../app/settings';
25
26
  var TitleStyled = styled(Text)(function (_a) {
26
27
  var _b;
27
28
  var theme = _a.theme;
@@ -46,39 +47,45 @@ var SuccessWithFlowButtons = function () {
46
47
  var _a, _b, _c;
47
48
  var t = useTranslation().t;
48
49
  var isAr = useLanguage().isAr;
49
- var _d = React.useState(false), isAcceptance = _d[0], setIsAcceptance = _d[1];
50
- var _e = React.useState(false), isPayout = _e[0], setIsPayout = _e[1];
51
50
  var data = useAppSelector(passwordSelector).data;
52
- var _f = data.verify.responseBody || {}, flows = _f.flows, nameObj = _f.name, entity = _f.entity, brand = _f.brand, bank = _f.bank_account;
53
- var _g = useState([]), buttons = _g[0], setButtons = _g[1];
51
+ var _d = data.verify.responseBody || {}, flows = _d.flows, nameObj = _d.name, entity = _d.entity, brand = _d.brand, bank = _d.bank_account, merchant = _d.merchant, identification_id = _d.identification_id;
52
+ var _e = useState([]), buttons = _e[0], setButtons = _e[1];
54
53
  var username = ((nameObj === null || nameObj === void 0 ? void 0 : nameObj.first) || '') + ' ' + ((nameObj === null || nameObj === void 0 ? void 0 : nameObj.last) || '');
55
54
  var licenseNumber = ((_a = entity === null || entity === void 0 ? void 0 : entity.license) === null || _a === void 0 ? void 0 : _a.number) || '';
56
55
  var bankName = (bank === null || bank === void 0 ? void 0 : bank.bank_name) || t('bank');
57
56
  var iban = showLastFour((bank === null || bank === void 0 ? void 0 : bank.iban) || '');
58
57
  var taxID = (entity === null || entity === void 0 ? void 0 : entity.tax_number) || '';
59
58
  var brandName = (isAr ? (_b = brand === null || brand === void 0 ? void 0 : brand.name) === null || _b === void 0 ? void 0 : _b.ar : (_c = brand === null || brand === void 0 ? void 0 : brand.name) === null || _c === void 0 ? void 0 : _c.en) || '';
59
+ var isAcceptance = merchant === null || merchant === void 0 ? void 0 : merchant.is_acceptance_allowed;
60
+ var isPayout = merchant === null || merchant === void 0 ? void 0 : merchant.is_payout_allowed;
61
+ var maskedId = !!identification_id ? " ".concat(t('masking_symbols')).concat(identification_id) : '';
62
+ var settings = useAppSelector(settingsSelector);
63
+ var _f = data.verify.responseBody || { contact: {}, id: '' }, contact = _f.contact, id = _f.id;
64
+ var email = (contact || { email: '' }).email;
65
+ var url = getResetFlowUrl('/password', settings.data.language, PASSWORD_OPERATION_TYPE.RESET_PASSWORD, id);
60
66
  var reMapFlowData = function (flows) {
61
67
  if (flows === void 0) { flows = []; }
62
68
  var images = ICONS_NAMES;
63
- var mappedFlows = flows.map(function (_a) {
69
+ var mappedFlows = flows
70
+ .filter(function (item) { return item.name; })
71
+ .map(function (_a) {
64
72
  var name = _a.name, url = _a.url, status = _a.status;
65
73
  var type = status === 'initiated' ? 'pending' : 'completed';
66
74
  var title = t("".concat(name, "_flow_").concat(type), {
67
- individual_name: username.toLowerCase(),
75
+ individual_name: username.toLowerCase() + maskedId,
68
76
  business_type: brandName,
69
77
  license_number: t('masking_symbols') + showLastFour(licenseNumber),
70
78
  bank_name: bankName,
71
79
  iban: t('masking_symbols') + iban,
72
80
  tax_id: t('masking_symbols') + showLastFour(taxID)
73
81
  });
74
- if ("business_flow_completed" === "".concat(name, "_flow_").concat(type))
75
- setIsAcceptance(true);
76
82
  var isCompleted = status === 'completed' && name !== 'password';
77
83
  var isIndividual = name === 'individual';
78
84
  var src = isCompleted ? "".concat(name, "_green_icon") : "".concat(name, "_filled_icon");
79
85
  var hoverSrc = "".concat(name, "_white_icon");
80
86
  return {
81
87
  name: name,
88
+ status: status,
82
89
  title: title,
83
90
  href: url,
84
91
  src: images[src],
@@ -88,14 +95,15 @@ var SuccessWithFlowButtons = function () {
88
95
  };
89
96
  });
90
97
  setButtons(mappedFlows);
91
- var isAllCompleted = allAreTruthy(flows, 'completed', 'status', 'password');
92
- if (isAllCompleted)
93
- setIsPayout(true);
94
98
  };
95
99
  useEffect(function () {
96
100
  if ((flows === null || flows === void 0 ? void 0 : flows.length) > 0)
97
101
  reMapFlowData(flows);
98
102
  }, [flows, isAr]);
99
- return (_jsxs(ContainerStyled, { children: [_jsxs(TitleStyled, { children: [t('account_details'), " "] }), _jsx(AcceptancePayouts, { showAcceptance: isAcceptance, showPayout: isPayout }), _jsx(ButtonGroupStyled, { children: _jsx(FlowsButtons, { buttons: buttons, flowName: data.flowName }) })] }));
103
+ return (_jsxs(ContainerStyled, { children: [_jsxs(TitleStyled, { children: [t('account_details'), " "] }), _jsx(AcceptancePayouts, { showAcceptance: isAcceptance, showPayout: isPayout }), _jsx(ButtonGroupStyled, { children: _jsx(FlowsButtons, { buttons: buttons, data: {
104
+ flowName: data.flowName,
105
+ email: email,
106
+ emailUrl: url
107
+ } }) })] }));
100
108
  };
101
109
  export default memo(SuccessWithFlowButtons);
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  export interface OTPProps {
3
3
  loading: boolean;
4
- setLoading: (flag: boolean) => void;
4
+ setLoading?: (flag: boolean) => void;
5
5
  }
6
- declare const _default: React.MemoExoticComponent<({ loading, setLoading }: OTPProps) => JSX.Element>;
6
+ declare const _default: React.MemoExoticComponent<({ loading }: OTPProps) => JSX.Element>;
7
7
  export default _default;
@@ -28,7 +28,7 @@ var BoxStyled = styled(Box)(function (_a) {
28
28
  });
29
29
  });
30
30
  var OTPInput = function (_a) {
31
- var loading = _a.loading, setLoading = _a.setLoading;
31
+ var loading = _a.loading;
32
32
  var _b = useFormContext(), control = _b.control, setValue = _b.setValue;
33
33
  var t = useTranslation().t;
34
34
  var otpControl = useController({ name: 'otp', control: control });
@@ -37,7 +37,7 @@ var IconStyled = styled(Icon, { shouldForwardProp: function (prop) { return prop
37
37
  width: theme.spacing(3),
38
38
  height: theme.spacing(3),
39
39
  transform: isAr ? 'scaleX(-1)' : 'scaleX(1)',
40
- marginInlineEnd: theme.spacing(0.5)
40
+ marginInlineEnd: theme.spacing(-0.375)
41
41
  });
42
42
  });
43
43
  var BackIconStyled = styled(Icon, { shouldForwardProp: function (prop) { return prop !== 'isAr'; } })(function (_a) {
@@ -4,6 +4,7 @@ import { SxProps, Theme } from '@mui/material/styles';
4
4
  import { FlowsTypes } from '../../../@types';
5
5
  export declare type ButtonItemProps = {
6
6
  name: string;
7
+ status: string;
7
8
  title: string;
8
9
  href: string;
9
10
  src: string;
@@ -11,8 +12,13 @@ export declare type ButtonItemProps = {
11
12
  isCompleted: boolean;
12
13
  sx?: SxProps<Theme> | undefined;
13
14
  };
15
+ export interface DataProps {
16
+ flowName: FlowsTypes;
17
+ email: string;
18
+ emailUrl: string;
19
+ }
14
20
  export interface EmailProvidersButtonsProps extends ButtonProps {
15
21
  buttons: ButtonItemProps[];
16
- flowName: FlowsTypes;
22
+ data: DataProps;
17
23
  }
18
- export default function FlowsButtons({ buttons, flowName }: EmailProvidersButtonsProps): JSX.Element;
24
+ export default function FlowsButtons({ buttons, data }: EmailProvidersButtonsProps): JSX.Element;
@@ -9,7 +9,44 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
- import { jsx as _jsx } from "react/jsx-runtime";
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (_) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
49
+ import { useState } from 'react';
13
50
  import Button from '../../../components/Button';
14
51
  import { alpha, styled } from '@mui/material/styles';
15
52
  import Box from '@mui/material/Box';
@@ -17,8 +54,9 @@ import Link from '@mui/material/Link';
17
54
  import { ICONS_NAMES } from '../../../constants';
18
55
  import CheckIcon from '@mui/icons-material/Check';
19
56
  import { useAppDispatch, useLanguage } from '../../../hooks';
20
- import { handleOpen, handleCurrentActiveScreen } from '../../../app/settings';
57
+ import { handleOpen, handleCurrentActiveScreen, handleNextScreenStep } from '../../../app/settings';
21
58
  import { getScreenNameBasedOnFlow } from '../../../utils';
59
+ import API from '../../../api';
22
60
  var Image = styled('img')(function (_a) {
23
61
  var theme = _a.theme;
24
62
  return ({
@@ -85,8 +123,11 @@ var CheckIconStyled = styled(CheckIcon)(function (_a) {
85
123
  });
86
124
  });
87
125
  export default function FlowsButtons(_a) {
88
- var buttons = _a.buttons, flowName = _a.flowName;
126
+ var _this = this;
127
+ var buttons = _a.buttons, data = _a.data;
89
128
  var dispatch = useAppDispatch();
129
+ var flowName = data.flowName, email = data.email, emailUrl = data.emailUrl;
130
+ var _b = useState(false), loading = _b[0], setLoading = _b[1];
90
131
  var isAr = useLanguage().isAr;
91
132
  var onRedirect = function (item) {
92
133
  if (item.isCompleted)
@@ -100,11 +141,54 @@ export default function FlowsButtons(_a) {
100
141
  window.location.href = item.href;
101
142
  }, 500);
102
143
  };
144
+ var isResetPassword = function (name, status) {
145
+ return name === 'password' && status === 'completed';
146
+ };
147
+ var onResetPassword = function () { return __awaiter(_this, void 0, void 0, function () {
148
+ var payload;
149
+ return __generator(this, function (_a) {
150
+ switch (_a.label) {
151
+ case 0:
152
+ setLoading(true);
153
+ payload = {
154
+ user_credentail: {
155
+ email: email
156
+ },
157
+ auth_type: 7,
158
+ email_url: emailUrl,
159
+ step_name: 'reset_password_auth',
160
+ encryption_contract: ['user_credentail.email']
161
+ };
162
+ dispatch(handleNextScreenStep());
163
+ return [4, API.authService
164
+ .createAuth(payload)
165
+ .then(function (response) {
166
+ var _a;
167
+ var data = response.data;
168
+ var description = (((_a = data === null || data === void 0 ? void 0 : data.errors) === null || _a === void 0 ? void 0 : _a[0]) || {}).description;
169
+ if (description) {
170
+ alert(description);
171
+ return;
172
+ }
173
+ })
174
+ .catch(function (error) {
175
+ alert(error);
176
+ })
177
+ .finally(function () { })];
178
+ case 1:
179
+ _a.sent();
180
+ return [2];
181
+ }
182
+ });
183
+ }); };
103
184
  return (_jsx(ButtonBoxStyled, { children: buttons.map(function (_a, idx) {
104
- var title = _a.title, href = _a.href, src = _a.src, hoverSrc = _a.hoverSrc, isCompleted = _a.isCompleted, sx = _a.sx, name = _a.name;
185
+ var title = _a.title, href = _a.href, src = _a.src, hoverSrc = _a.hoverSrc, isCompleted = _a.isCompleted, sx = _a.sx, name = _a.name, status = _a.status;
105
186
  var isLast = idx === buttons.length - 1;
106
187
  return (_jsx(Link, __assign({ underline: 'none', onClick: function () {
107
- onRedirect({ title: title, href: href, src: src, hoverSrc: hoverSrc, isCompleted: isCompleted, name: name });
108
- } }, { children: _jsx(ButtonStyled, __assign({ variant: 'outlined', isCompleted: isCompleted, sx: __assign({ mb: isLast ? 2.5 : 1.8 }, sx), endIcon: isCompleted ? (_jsx(CheckIconStyled, {})) : (_jsx(Image, { sx: { height: 15, transform: isAr ? 'scale(-1)' : 'scale(1)' }, src: ICONS_NAMES.Arrow_filled_right_icon })), startIcon: _jsx(Image, { src: src, alt: title }), type: 'button' }, { children: title })) }), idx));
188
+ if (isResetPassword(name, status))
189
+ onResetPassword();
190
+ else
191
+ onRedirect({ title: title, href: href, src: src, hoverSrc: hoverSrc, isCompleted: isCompleted, name: name, status: status });
192
+ } }, { children: _jsx(ButtonStyled, __assign({ variant: 'outlined', disabled: isResetPassword(name, status) && loading, isCompleted: isCompleted, sx: __assign({ mb: isLast ? 2.5 : 1.8 }, sx), endIcon: isResetPassword(name, status) && loading ? (_jsx(_Fragment, {})) : isCompleted ? (_jsx(CheckIconStyled, {})) : (_jsx(Image, { sx: { height: 15, transform: isAr ? 'scale(-1)' : 'scale(1)' }, src: ICONS_NAMES.Arrow_filled_right_icon })), startIcon: isResetPassword(name, status) && loading ? _jsx(_Fragment, {}) : _jsx(Image, { src: src, alt: title }), type: 'button' }, { children: title })) }), idx));
109
193
  }) }));
110
194
  }
@@ -25,25 +25,43 @@ import React from 'react';
25
25
  import Button from './Button';
26
26
  import { styled } from '@mui/material/styles';
27
27
  import Box from '@mui/material/Box';
28
- var ButtonStyled = styled(Button, {
29
- shouldForwardProp: function (prop) { return !['isLoading', 'isAr'].includes(prop); }
30
- })(function (_a) {
31
- var theme = _a.theme, isLoading = _a.isLoading;
28
+ var ButtonStyled = styled(Button)(function (_a) {
29
+ var theme = _a.theme;
32
30
  return ({
33
- '&.MuiButton-outlined': __assign({ width: '100%', textTransform: 'none', paddingInlineStart: theme.spacing(0.75), backgroundColor: theme.palette.common.white, color: theme.palette.primary.main, border: "1px solid ".concat(theme.palette.primary.main), '&:hover': {
31
+ '&.MuiButton-outlined': {
32
+ width: '100%',
33
+ textTransform: 'none',
34
+ paddingInlineStart: theme.spacing(0.75),
35
+ backgroundColor: theme.palette.common.white,
36
+ color: theme.palette.primary.main,
37
+ border: "1px solid ".concat(theme.palette.primary.main),
38
+ '&:hover': {
34
39
  backgroundColor: theme.palette.common.white,
35
40
  color: theme.palette.primary.main
36
- }, '&:disabled': {
41
+ },
42
+ '&:disabled': {
37
43
  backgroundColor: theme.palette.primary.main,
38
44
  color: theme.palette.common.white
39
- }, transition: theme.transitions.create(['width', 'padding'], {
45
+ },
46
+ transition: theme.transitions.create(['width', 'padding'], {
40
47
  easing: theme.transitions.easing.easeInOut,
41
48
  duration: theme.transitions.duration.complex * 2
42
- }) }, (isLoading && {
43
- minWidth: 0,
44
- width: theme.spacing(6),
45
- borderRadius: 30
46
- }))
49
+ })
50
+ },
51
+ '&.MuiButton-contained': {
52
+ color: theme.palette.common.white,
53
+ backgroundColor: theme.palette.primary.main,
54
+ '&:hover': {
55
+ backgroundColor: theme.palette.primary.main
56
+ },
57
+ '&:active': {
58
+ backgroundColor: theme.palette.primary.main
59
+ },
60
+ ':disabled': {
61
+ backgroundColor: theme.palette.primary.main,
62
+ color: theme.palette.common.white
63
+ }
64
+ }
47
65
  });
48
66
  });
49
67
  var ButtonBoxStyled = styled(Box)(function (_a) {
@@ -64,5 +82,5 @@ export default function SuccessButton(_a) {
64
82
  React.useEffect(function () {
65
83
  setBtnLoading(false);
66
84
  }, []);
67
- return (_jsx(ButtonBoxStyled, { children: _jsx(ButtonStyled, __assign({ isAr: isAr, isLoading: btnLoading, loading: btnLoading, disabled: disabled, type: 'button', variant: 'outlined' }, props, { children: children })) }));
85
+ return (_jsx(ButtonBoxStyled, { children: _jsx(ButtonStyled, __assign({ isAr: isAr, loading: btnLoading, disabled: disabled, type: 'button', variant: btnLoading ? 'contained' : 'outlined' }, props, { children: children })) }));
68
86
  }
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ export declare const InputContainerStyled: import("@emotion/styled").StyledComponent<import("@mui/system").SystemProps<import("@mui/material/styles").Theme> & {
3
+ children?: React.ReactNode;
4
+ component?: React.ElementType<any> | undefined;
5
+ ref?: React.Ref<unknown> | undefined;
6
+ sx?: import("@mui/material/styles").SxProps<import("@mui/material/styles").Theme> | undefined;
7
+ } & import("@mui/material/OverridableComponent").CommonProps & Omit<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
8
+ ref?: ((instance: HTMLDivElement | null) => void) | React.RefObject<HTMLDivElement> | null | undefined;
9
+ }, keyof import("@mui/material/OverridableComponent").CommonProps | ("border" | "borderTop" | "borderRight" | "borderBottom" | "borderLeft" | "borderColor" | "borderRadius" | "display" | "displayPrint" | "overflow" | "textOverflow" | "visibility" | "whiteSpace" | "flexBasis" | "flexDirection" | "flexWrap" | "justifyContent" | "alignItems" | "alignContent" | "order" | "flex" | "flexGrow" | "flexShrink" | "alignSelf" | "justifyItems" | "justifySelf" | "gap" | "columnGap" | "rowGap" | "gridColumn" | "gridRow" | "gridAutoFlow" | "gridAutoColumns" | "gridAutoRows" | "gridTemplateColumns" | "gridTemplateRows" | "gridTemplateAreas" | "gridArea" | "bgcolor" | "color" | "zIndex" | "position" | "top" | "right" | "bottom" | "left" | "boxShadow" | "width" | "maxWidth" | "minWidth" | "height" | "maxHeight" | "minHeight" | "boxSizing" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "my" | "p" | "pt" | "pr" | "pb" | "pl" | "px" | "py" | "margin" | "marginTop" | "marginRight" | "marginBottom" | "marginLeft" | "marginX" | "marginY" | "padding" | "paddingTop" | "paddingRight" | "paddingBottom" | "paddingLeft" | "paddingX" | "paddingY" | "typography" | "fontFamily" | "fontSize" | "fontStyle" | "fontWeight" | "letterSpacing" | "lineHeight" | "textAlign" | "textTransform") | "ref" | "children" | "component" | "sx"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
10
+ interface UploadFileProps {
11
+ label: string;
12
+ required?: boolean;
13
+ dragTitle: string;
14
+ uploadTitle: string;
15
+ error?: string;
16
+ loading?: boolean;
17
+ onFileUploaded: (file: File) => void;
18
+ onReset: () => void;
19
+ }
20
+ declare const UploadFile: ({ label, required, dragTitle, uploadTitle, loading, error, onFileUploaded, onReset }: UploadFileProps) => JSX.Element;
21
+ export default UploadFile;