@tap-payments/auth-jsconnect 1.0.91-test → 1.0.95-test

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 (134) hide show
  1. package/README.md +58 -52
  2. package/build/@types/app.d.ts +11 -2
  3. package/build/@types/app.js +9 -0
  4. package/build/@types/form.d.ts +2 -0
  5. package/build/api/auth.d.ts +22 -3
  6. package/build/api/axios.d.ts +2 -0
  7. package/build/api/axios.js +64 -0
  8. package/build/api/country.d.ts +1 -2
  9. package/build/api/country.js +7 -8
  10. package/build/api/firebase.d.ts +1 -1
  11. package/build/api/firebase.js +5 -2
  12. package/build/api/index.d.ts +7 -8
  13. package/build/api/ip.d.ts +1 -1
  14. package/build/api/ip.js +5 -2
  15. package/build/api/lead.d.ts +2 -0
  16. package/build/api/operator.d.ts +1 -1
  17. package/build/api/operator.js +60 -4
  18. package/build/app/rootReducer.d.ts +0 -1
  19. package/build/app/rootReducer.js +1 -3
  20. package/build/app/settings.d.ts +9 -12
  21. package/build/app/settings.js +87 -111
  22. package/build/app/store.d.ts +0 -2
  23. package/build/components/AnimationFlow/AnimationFlow.d.ts +2 -1
  24. package/build/components/AnimationFlow/AnimationFlow.js +2 -2
  25. package/build/components/AnimationFlow/BottomSheet.d.ts +2 -1
  26. package/build/components/AnimationFlow/BottomSheet.js +16 -4
  27. package/build/components/AnimationFlow/Loader.js +1 -1
  28. package/build/constants/app.d.ts +6 -1
  29. package/build/constants/app.js +16 -12
  30. package/build/features/app/bank/bankStore.d.ts +5 -1
  31. package/build/features/app/bank/bankStore.js +41 -4
  32. package/build/features/app/business/businessStore.d.ts +5 -7
  33. package/build/features/app/business/businessStore.js +44 -46
  34. package/build/features/app/connect/connectStore.d.ts +2 -7
  35. package/build/features/app/connect/connectStore.js +23 -55
  36. package/build/features/app/individual/individualStore.d.ts +6 -7
  37. package/build/features/app/individual/individualStore.js +55 -50
  38. package/build/features/app/password/passwordStore.d.ts +34 -2
  39. package/build/features/app/password/passwordStore.js +218 -8
  40. package/build/features/app/tax/taxStore.d.ts +5 -1
  41. package/build/features/app/tax/taxStore.js +43 -6
  42. package/build/features/bank/Bank.js +8 -7
  43. package/build/features/bank/screens/BankDetails/BankDetails.js +2 -1
  44. package/build/features/bank/screens/BankDetails/ConfirmPolicy.d.ts +3 -0
  45. package/build/features/bank/screens/BankDetails/ConfirmPolicy.js +67 -0
  46. package/build/features/bank/screens/BankDetails/validation.d.ts +3 -0
  47. package/build/features/bank/screens/BankDetails/validation.js +2 -1
  48. package/build/features/bank/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +14 -4
  49. package/build/features/bank/screens/Verify/OTPInput.d.ts +3 -1
  50. package/build/features/bank/screens/Verify/OTPInput.js +6 -1
  51. package/build/features/bank/screens/Verify/Verify.js +3 -2
  52. package/build/features/business/Business.js +9 -11
  53. package/build/features/business/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +15 -5
  54. package/build/features/business/screens/Verify/OTPInput.d.ts +3 -1
  55. package/build/features/business/screens/Verify/OTPInput.js +6 -1
  56. package/build/features/business/screens/Verify/Verify.js +3 -2
  57. package/build/features/connect/Connect.js +7 -9
  58. package/build/features/connect/screens/Merchant/BrandName.js +3 -2
  59. package/build/features/connect/screens/Mobile/Mobile.js +1 -1
  60. package/build/features/featuresScreens.d.ts +0 -1
  61. package/build/features/featuresScreens.js +5 -7
  62. package/build/features/individual/Individual.js +9 -11
  63. package/build/features/individual/screens/AdditionalIndividualInfo/AdditionalIndividualInfo.js +4 -2
  64. package/build/features/individual/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +14 -4
  65. package/build/features/individual/screens/Verify/OTPInput.d.ts +3 -1
  66. package/build/features/individual/screens/Verify/OTPInput.js +6 -1
  67. package/build/features/individual/screens/Verify/Verify.js +3 -2
  68. package/build/features/password/Password.js +16 -9
  69. package/build/features/password/screens/CreatePassword/CreatePassword.js +9 -2
  70. package/build/features/password/screens/OTP/OTP.d.ts +8 -0
  71. package/build/features/password/screens/OTP/OTP.js +78 -0
  72. package/build/features/password/screens/OTP/OTPInput.d.ts +5 -0
  73. package/build/features/password/screens/OTP/OTPInput.js +46 -0
  74. package/build/features/password/screens/OTP/index.d.ts +3 -0
  75. package/build/features/password/screens/OTP/index.js +2 -0
  76. package/build/features/password/screens/OTP/validation.d.ts +8 -0
  77. package/build/features/password/screens/OTP/validation.js +4 -0
  78. package/build/features/password/screens/Success/Success.js +8 -2
  79. package/build/features/password/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +15 -5
  80. package/build/features/password/screens/Verify/OTPInput.d.ts +3 -1
  81. package/build/features/password/screens/Verify/OTPInput.js +6 -1
  82. package/build/features/password/screens/Verify/Verify.js +3 -2
  83. package/build/features/shared/Background/Background.js +3 -2
  84. package/build/features/shared/Background/LogoBackground.d.ts +1 -4
  85. package/build/features/shared/Background/LogoBackground.js +4 -32
  86. package/build/features/shared/Button/AbsherButton.js +3 -8
  87. package/build/features/shared/Button/EmailProvidersButtons.js +2 -1
  88. package/build/features/shared/Button/FlowsButtons.d.ts +10 -1
  89. package/build/features/shared/Button/FlowsButtons.js +100 -7
  90. package/build/features/shared/Button/MobileButton.js +3 -8
  91. package/build/features/shared/Button/SuccessButton.js +17 -13
  92. package/build/features/shared/Footer/Footer.js +2 -3
  93. package/build/features/shared/OTP/OTP.d.ts +2 -1
  94. package/build/features/shared/OTP/OTP.js +10 -2
  95. package/build/features/tax/Tax.js +7 -6
  96. package/build/features/tax/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +14 -4
  97. package/build/features/tax/screens/TaxDetails/ConfirmPolicy.d.ts +3 -0
  98. package/build/features/tax/screens/TaxDetails/ConfirmPolicy.js +66 -0
  99. package/build/features/tax/screens/TaxDetails/TaxDetails.js +5 -2
  100. package/build/features/tax/screens/TaxDetails/VATId.js +13 -2
  101. package/build/features/tax/screens/TaxDetails/validation.d.ts +3 -0
  102. package/build/features/tax/screens/TaxDetails/validation.js +2 -1
  103. package/build/features/tax/screens/Verify/OTPInput.d.ts +3 -1
  104. package/build/features/tax/screens/Verify/OTPInput.js +6 -1
  105. package/build/features/tax/screens/Verify/Verify.js +3 -2
  106. package/build/hooks/index.d.ts +1 -0
  107. package/build/hooks/index.js +1 -0
  108. package/build/hooks/useAppConfig.d.ts +1 -4
  109. package/build/hooks/useAppConfig.js +13 -110
  110. package/build/hooks/useAppDispatch.d.ts +0 -1
  111. package/build/hooks/useAppTheme.js +3 -2
  112. package/build/hooks/useErrorListener.d.ts +1 -1
  113. package/build/hooks/useErrorListener.js +4 -6
  114. package/build/hooks/useStepStartedListener.d.ts +1 -0
  115. package/build/hooks/useStepStartedListener.js +10 -0
  116. package/build/index.d.ts +2 -3
  117. package/build/index.js +2 -5
  118. package/build/theme/theme.d.ts +1 -1
  119. package/build/theme/theme.js +1 -2
  120. package/build/utils/array.d.ts +3 -0
  121. package/build/utils/array.js +10 -0
  122. package/build/utils/string.d.ts +2 -0
  123. package/build/utils/string.js +23 -0
  124. package/package.json +127 -127
  125. package/build/features/Landing/Landing.d.ts +0 -7
  126. package/build/features/Landing/Landing.js +0 -55
  127. package/build/features/Landing/index.d.ts +0 -1
  128. package/build/features/Landing/index.js +0 -1
  129. package/build/features/Landing/screens/VerifyAndRedirect/VerifyAndRedirect.d.ts +0 -5
  130. package/build/features/Landing/screens/VerifyAndRedirect/VerifyAndRedirect.js +0 -41
  131. package/build/features/Landing/screens/VerifyAndRedirect/index.d.ts +0 -2
  132. package/build/features/Landing/screens/VerifyAndRedirect/index.js +0 -2
  133. package/build/features/app/landing/landingStore.d.ts +0 -22
  134. package/build/features/app/landing/landingStore.js +0 -103
@@ -17,14 +17,15 @@ import { yupResolver } from '@hookform/resolvers/yup';
17
17
  import Box from '@mui/material/Box';
18
18
  import { styled } from '@mui/material/styles';
19
19
  import { useAppDispatch } from '../../../../hooks';
20
- import { handleCurrentActiveScreen } from '../../../../app/settings';
20
+ import { handleCurrentActiveScreen, handleNextScreenStep } from '../../../../app/settings';
21
21
  import Form from '../../../../components/Form';
22
22
  import { useLanguage } from '../../../../hooks';
23
+ import { PASSWORD_OPERATION_TYPE } from '../../../../constants';
23
24
  import ScreenContainer from '../../../shared/Containers/ScreenContainer';
24
25
  import Button from '../../../shared/Button';
25
26
  import { PasswordValidation } from './validation';
26
27
  import Password from './Password';
27
- import { createPassword, passwordSelector } from '../../../app/password/passwordStore';
28
+ import { createPassword, passwordSelector, storePasswordScreen } from '../../../app/password/passwordStore';
28
29
  import { useSelector } from 'react-redux';
29
30
  var InputsContainerStyled = styled(Box)(function (_a) {
30
31
  var theme = _a.theme;
@@ -37,12 +38,18 @@ var CreatePassword = function (_a) {
37
38
  var isAr = useLanguage().isAr;
38
39
  var dispatch = useAppDispatch();
39
40
  var _b = useSelector(passwordSelector), data = _b.data, loading = _b.loading, error = _b.error;
41
+ var operationType = data.verify.operationType;
40
42
  var methods = useForm({
41
43
  resolver: yupResolver(PasswordValidation),
42
44
  defaultValues: data.passwordData,
43
45
  mode: 'onChange'
44
46
  });
45
47
  var onSubmit = function (data) {
48
+ if (operationType === PASSWORD_OPERATION_TYPE.RESET_PASSWORD) {
49
+ dispatch(storePasswordScreen(data));
50
+ dispatch(handleNextScreenStep('PASSWORD_RESET_PASSWORD_OTP_STEP'));
51
+ return;
52
+ }
46
53
  dispatch(createPassword(data));
47
54
  };
48
55
  var onBack = function () {
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ export interface OTPProps {
3
+ }
4
+ declare const _default: React.MemoExoticComponent<{
5
+ ({}: OTPProps): JSX.Element;
6
+ defaultProps: {};
7
+ }>;
8
+ export default _default;
@@ -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
+ });
@@ -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, retrieveLead } 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(retrieveLead());
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 || '' }));
@@ -14,14 +14,15 @@ import React, { 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 { allAreTruthy, 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;
@@ -57,10 +58,13 @@ var SuccessWithFlowButtons = function () {
57
58
  var iban = showLastFour((bank === null || bank === void 0 ? void 0 : bank.iban) || '');
58
59
  var taxID = (entity === null || entity === void 0 ? void 0 : entity.tax_number) || '';
59
60
  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) || '';
61
+ var settings = useAppSelector(settingsSelector);
62
+ var _h = data.verify.responseBody || { contact: {}, id: '' }, contact = _h.contact, id = _h.id;
63
+ var email = (contact || { email: '' }).email;
64
+ var url = getResetFlowUrl('/password', settings.data.language, PASSWORD_OPERATION_TYPE.RESET_PASSWORD, id);
60
65
  var reMapFlowData = function (flows) {
61
66
  if (flows === void 0) { flows = []; }
62
67
  var images = ICONS_NAMES;
63
- var statuses = [];
64
68
  var mappedFlows = flows.map(function (_a) {
65
69
  var name = _a.name, url = _a.url, status = _a.status;
66
70
  var type = status === 'initiated' ? 'pending' : 'completed';
@@ -79,6 +83,8 @@ var SuccessWithFlowButtons = function () {
79
83
  var src = isCompleted ? "".concat(name, "_green_icon") : "".concat(name, "_filled_icon");
80
84
  var hoverSrc = "".concat(name, "_white_icon");
81
85
  return {
86
+ name: name,
87
+ status: status,
82
88
  title: title,
83
89
  href: url,
84
90
  src: images[src],
@@ -96,6 +102,10 @@ var SuccessWithFlowButtons = function () {
96
102
  if ((flows === null || flows === void 0 ? void 0 : flows.length) > 0)
97
103
  reMapFlowData(flows);
98
104
  }, [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 }) })] }));
105
+ return (_jsxs(ContainerStyled, { children: [_jsxs(TitleStyled, { children: [t('account_details'), " "] }), _jsx(AcceptancePayouts, { showAcceptance: isAcceptance, showPayout: isPayout }), _jsx(ButtonGroupStyled, { children: _jsx(FlowsButtons, { buttons: buttons, data: {
106
+ flowName: data.flowName,
107
+ email: email,
108
+ emailUrl: url
109
+ } }) })] }));
100
110
  };
101
111
  export default memo(SuccessWithFlowButtons);
@@ -1,5 +1,7 @@
1
1
  import * as React from 'react';
2
2
  export interface OTPProps {
3
+ loading: boolean;
4
+ setLoading?: (flag: boolean) => void;
3
5
  }
4
- declare const _default: React.MemoExoticComponent<({}: OTPProps) => JSX.Element>;
6
+ declare const _default: React.MemoExoticComponent<({ loading }: OTPProps) => JSX.Element>;
5
7
  export default _default;
@@ -11,12 +11,14 @@ var __assign = (this && this.__assign) || function () {
11
11
  };
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
13
  import * as React from 'react';
14
+ import { useAppDispatch } from '../../../../hooks';
14
15
  import Box from '@mui/material/Box/Box';
15
16
  import { styled } from '@mui/material/styles';
16
17
  import OTPField from '../../../shared/OTP';
17
18
  import { useController, useFormContext } from 'react-hook-form';
18
19
  import { useTranslation } from 'react-i18next';
19
20
  import { DEFAULT_TIMER_VALUE } from '../../../../constants';
21
+ import { resendOTP } from '../../../app/password/passwordStore';
20
22
  var BoxStyled = styled(Box)(function (_a) {
21
23
  var theme = _a.theme;
22
24
  return ({
@@ -26,17 +28,20 @@ var BoxStyled = styled(Box)(function (_a) {
26
28
  });
27
29
  });
28
30
  var OTPInput = function (_a) {
31
+ var loading = _a.loading;
29
32
  var _b = useFormContext(), control = _b.control, setValue = _b.setValue;
30
33
  var t = useTranslation().t;
31
34
  var otpControl = useController({ name: 'otp', control: control });
35
+ var dispatch = useAppDispatch();
32
36
  var handleOnOTPChange = function (otp) {
33
37
  otpControl.field.onChange(otp);
34
38
  };
35
39
  var handleOnResendOTP = function () {
36
40
  if (otpControl.field.value)
37
41
  setValue('otp', '', { shouldValidate: true });
42
+ dispatch(resendOTP());
38
43
  };
39
44
  var otpValue = otpControl.field.value;
40
- 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
+ return (_jsx(BoxStyled, __assign({ dir: 'ltr' }, { children: _jsx(OTPField, { loading: loading, timeEndLabel: t('ide_otp_resend_label'), timerInSeconds: DEFAULT_TIMER_VALUE, onResetClick: handleOnResendOTP, value: otpValue, onChange: function (number) { return handleOnOTPChange(number.toString()); } }) })));
41
46
  };
42
47
  export default React.memo(OTPInput);
@@ -57,6 +57,7 @@ var VerifyNumber = function (_a) {
57
57
  });
58
58
  var t = useTranslation().t;
59
59
  var isAr = useLanguage().isAr;
60
+ var _f = React.useState(false), resendLoading = _f[0], setResendLoading = _f[1];
60
61
  React.useEffect(function () {
61
62
  if (error)
62
63
  dispatch(clearError());
@@ -71,7 +72,7 @@ var VerifyNumber = function (_a) {
71
72
  dispatch(handlePrevScreenStep());
72
73
  };
73
74
  var phone = (_d = (_c = (_b = data.verify.responseBody) === null || _b === void 0 ? void 0 : _b.contact) === null || _c === void 0 ? void 0 : _c.phone) === null || _d === void 0 ? void 0 : _d.number;
74
- var disabled = !methods.formState.isValid || !!error || !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('ide_opt_sent_title'), !loading && phone && _jsx("span", __assign({ dir: 'ltr' }, { children: "".concat(maskPhone(phone || '')) }))] }) }), _jsx(OTPInput, {}), _jsx(Button, __assign({ disableBack: true, onBackClicked: function () { return onBack(); }, disabled: disabled, isAr: isAr, loading: loading, error: t(error || '') }, { children: t('next') }))] })) })) }));
75
+ var disabled = !methods.formState.isValid || !!error || !phone || resendLoading;
76
+ 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('ide_opt_sent_title'), !loading && phone && _jsx("span", __assign({ dir: 'ltr' }, { children: "".concat(maskPhone(phone || '')) }))] }) }), _jsx(OTPInput, { loading: resendLoading, setLoading: setResendLoading }), _jsx(Button, __assign({ disableBack: true, onBackClicked: function () { return onBack(); }, disabled: disabled || resendLoading, isAr: isAr, loading: loading, error: t(error || '') }, { children: t('next') }))] })) })) }));
76
77
  };
77
78
  export default React.memo(VerifyNumber);
@@ -15,7 +15,7 @@ import { styled } from '@mui/material/styles';
15
15
  import Box from '@mui/material/Box';
16
16
  import LogoBackground from './LogoBackground';
17
17
  var BackgroundStyled = styled(Box, { shouldForwardProp: function (prop) { return prop !== 'isTapOrigin'; } })(function (_a) {
18
- var isTapOrigin = _a.isTapOrigin;
18
+ var isTapOrigin = _a.isTapOrigin, theme = _a.theme;
19
19
  return ({
20
20
  width: '100vw',
21
21
  height: '100vh',
@@ -24,6 +24,7 @@ var BackgroundStyled = styled(Box, { shouldForwardProp: function (prop) { return
24
24
  });
25
25
  var Background = function (_a) {
26
26
  var children = _a.children, isTapOrigin = _a.isTapOrigin, loading = _a.loading;
27
- return (_jsxs(BackgroundStyled, __assign({ id: 'background', isTapOrigin: isTapOrigin }, { children: [_jsx(LogoBackground, { hide: loading || !isTapOrigin }), children] })));
27
+ var showLogo = !loading && isTapOrigin;
28
+ return (_jsxs(BackgroundStyled, __assign({ id: 'background', isTapOrigin: isTapOrigin }, { children: [showLogo && _jsx(LogoBackground, {}), children] })));
28
29
  };
29
30
  export default memo(Background);
@@ -1,6 +1,3 @@
1
1
  import React from 'react';
2
- declare type LogoBackgroundProps = {
3
- hide?: boolean;
4
- };
5
- declare const _default: React.MemoExoticComponent<({ hide }: LogoBackgroundProps) => JSX.Element>;
2
+ declare const _default: React.MemoExoticComponent<() => JSX.Element>;
6
3
  export default _default;
@@ -1,18 +1,6 @@
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
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
2
  import { memo } from 'react';
14
3
  import { styled } from '@mui/material/styles';
15
- import Collapse from '@mui/material/Collapse';
16
4
  import Box from '@mui/material/Box';
17
5
  import Icon from '../../../components/Icon';
18
6
  import { ICONS_NAMES } from '../../../constants';
@@ -25,8 +13,7 @@ var BoxStyled = styled(Box)(function (_a) {
25
13
  flexDirection: 'column',
26
14
  justifyContent: 'center',
27
15
  alignItems: 'center',
28
- paddingTop: theme.spacing(5),
29
- paddingBottom: theme.spacing(2)
16
+ paddingTop: theme.spacing(5)
30
17
  },
31
18
  _b[theme.breakpoints.down('sm')] = {
32
19
  paddingTop: theme.spacing(11)
@@ -40,31 +27,16 @@ var LogoBadgeStyled = styled(Icon)(function (_a) {
40
27
  width: theme.spacing(8.875)
41
28
  });
42
29
  });
43
- var LogoIconBoxStyled = styled(Box)(function (_a) {
44
- var _b;
45
- var theme = _a.theme;
46
- return (_b = {
47
- paddingTop: theme.spacing(2.5),
48
- width: '100%',
49
- display: 'flex',
50
- justifyContent: 'center'
51
- },
52
- _b[theme.transitions.create(['top'])] = {
53
- duration: theme.transitions.duration.standard
54
- },
55
- _b);
56
- });
57
30
  var LogoIconStyled = styled(Icon)(function (_a) {
58
31
  var theme = _a.theme;
59
32
  return ({
60
33
  width: theme.spacing(5.875),
61
34
  height: theme.spacing(3.625),
62
- padding: theme.spacing(0)
35
+ marginTop: theme.spacing(2.5)
63
36
  });
64
37
  });
65
- var LogoBackground = function (_a) {
66
- var hide = _a.hide;
38
+ var LogoBackground = function () {
67
39
  var isAr = useLanguage().isAr;
68
- return (_jsx(Collapse, __assign({ in: !hide }, { children: _jsxs(BoxStyled, { children: [_jsx(LogoBadgeStyled, { src: ICONS_NAMES.TAP_LOGO_EN_ICON }), _jsx(LogoIconBoxStyled, { children: _jsx(LogoIconStyled, { src: isAr ? ICONS_NAMES.TAP_LOGO_TEXT_AR : ICONS_NAMES.TAP_LOGO_TEXT_EN, alt: 'tap logo' }) })] }) })));
40
+ return (_jsxs(BoxStyled, { children: [_jsx(LogoBadgeStyled, { src: ICONS_NAMES.TAP_LOGO_EN_ICON }), _jsx(LogoIconStyled, { src: isAr ? ICONS_NAMES.TAP_LOGO_TEXT_AR : ICONS_NAMES.TAP_LOGO_TEXT_EN, alt: 'tap logo' })] }));
69
41
  };
70
42
  export default memo(LogoBackground);
@@ -33,15 +33,10 @@ var IconStyled = styled(Icon, { shouldForwardProp: function (prop) { return prop
33
33
  })));
34
34
  });
35
35
  var ButtonBoxStyled = styled(Box)(function (_a) {
36
- var _b;
37
36
  var theme = _a.theme;
38
- return (_b = {
39
- margin: theme.spacing(0, 2.5, 2.5, 2.5)
40
- },
41
- _b[theme.breakpoints.down('sm')] = {
42
- margin: theme.spacing(0, 2.5, 0.25, 2.5)
43
- },
44
- _b);
37
+ return ({
38
+ margin: theme.spacing(0, 2.5, 2.5, 2.5)
39
+ });
45
40
  });
46
41
  export default function AbsherButton(_a) {
47
42
  var children = _a.children, hideIcon = _a.hideIcon, disabled = _a.disabled, props = __rest(_a, ["children", "hideIcon", "disabled"]);
@@ -45,7 +45,8 @@ var GMailButtonStyled = styled(Button)(function (_a) {
45
45
  var OutlookButtonStyled = styled(Button)(function (_a) {
46
46
  var theme = _a.theme;
47
47
  return ({
48
- width: '100%'
48
+ width: '100%',
49
+ marginBottom: theme.spacing(2.5)
49
50
  });
50
51
  });
51
52
  var AppleButtonStyled = styled(Button)(function (_a) {
@@ -1,7 +1,10 @@
1
1
  /// <reference types="react" />
2
2
  import { ButtonProps } from '../../../components/Button';
3
3
  import { SxProps, Theme } from '@mui/material/styles';
4
+ import { FlowsTypes } from '../../../@types';
4
5
  export declare type ButtonItemProps = {
6
+ name: string;
7
+ status: string;
5
8
  title: string;
6
9
  href: string;
7
10
  src: string;
@@ -9,7 +12,13 @@ export declare type ButtonItemProps = {
9
12
  isCompleted: boolean;
10
13
  sx?: SxProps<Theme> | undefined;
11
14
  };
15
+ export interface DataProps {
16
+ flowName: FlowsTypes;
17
+ email: string;
18
+ emailUrl: string;
19
+ }
12
20
  export interface EmailProvidersButtonsProps extends ButtonProps {
13
21
  buttons: ButtonItemProps[];
22
+ data: DataProps;
14
23
  }
15
- export default function FlowsButtons({ buttons }: EmailProvidersButtonsProps): JSX.Element;
24
+ export default function FlowsButtons({ buttons, data }: EmailProvidersButtonsProps): JSX.Element;
@@ -9,15 +9,54 @@ 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';
16
53
  import Link from '@mui/material/Link';
17
54
  import { ICONS_NAMES } from '../../../constants';
18
55
  import CheckIcon from '@mui/icons-material/Check';
19
- import { useAppDispatch } from '../../../hooks';
20
- import { handleOpen } from '../../../app/settings';
56
+ import { useAppDispatch, useLanguage } from '../../../hooks';
57
+ import { handleOpen, handleCurrentActiveScreen } from '../../../app/settings';
58
+ import { getScreenNameBasedOnFlow } from '../../../utils';
59
+ import API from '../../../api';
21
60
  var Image = styled('img')(function (_a) {
22
61
  var theme = _a.theme;
23
62
  return ({
@@ -84,21 +123,75 @@ var CheckIconStyled = styled(CheckIcon)(function (_a) {
84
123
  });
85
124
  });
86
125
  export default function FlowsButtons(_a) {
87
- var buttons = _a.buttons;
126
+ var _this = this;
127
+ var buttons = _a.buttons, data = _a.data;
88
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];
131
+ var isAr = useLanguage().isAr;
89
132
  var onRedirect = function (item) {
90
133
  if (item.isCompleted)
91
134
  return;
135
+ if (flowName === item.name && item.name !== 'password') {
136
+ dispatch(handleCurrentActiveScreen(getScreenNameBasedOnFlow(item.name)));
137
+ return;
138
+ }
92
139
  dispatch(handleOpen(false));
93
140
  setTimeout(function () {
94
141
  window.location.href = item.href;
95
142
  }, 500);
96
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
+ return [4, API.authService
163
+ .createAuth(payload)
164
+ .then(function (response) {
165
+ var _a;
166
+ setLoading(false);
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
+ setLoading(false);
177
+ })
178
+ .finally(function () {
179
+ setLoading(false);
180
+ })];
181
+ case 1:
182
+ _a.sent();
183
+ return [2];
184
+ }
185
+ });
186
+ }); };
97
187
  return (_jsx(ButtonBoxStyled, { children: buttons.map(function (_a, idx) {
98
- var title = _a.title, href = _a.href, src = _a.src, hoverSrc = _a.hoverSrc, isCompleted = _a.isCompleted, sx = _a.sx;
188
+ 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;
99
189
  var isLast = idx === buttons.length - 1;
100
190
  return (_jsx(Link, __assign({ underline: 'none', onClick: function () {
101
- onRedirect({ title: title, href: href, src: src, hoverSrc: hoverSrc, isCompleted: isCompleted });
102
- } }, { children: _jsx(ButtonStyled, __assign({ variant: 'outlined', isCompleted: isCompleted, sx: __assign({ mb: isLast ? 0 : 1.8 }, sx), endIcon: isCompleted ? (_jsx(CheckIconStyled, {})) : (_jsx(Image, { sx: { height: 15, transform: 'unset' }, src: ICONS_NAMES.Arrow_filled_right_icon })), startIcon: _jsx(Image, { src: src, alt: title }), type: 'button' }, { children: title })) }), idx));
191
+ if (isResetPassword(name, status))
192
+ onResetPassword();
193
+ else
194
+ onRedirect({ title: title, href: href, src: src, hoverSrc: hoverSrc, isCompleted: isCompleted, name: name, status: status });
195
+ } }, { 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));
103
196
  }) }));
104
197
  }