UNPKG

connect-transfer-react-native-sdk

Version:

Connect Transfer React Native SDK for Mastercard Open Banking Connect

137 lines (136 loc) 5.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); var _reactNative = require("react-native"); var _reactI18next = require("react-i18next"); var _reactRedux = require("react-redux"); var _errorIcon = _interopRequireDefault(require("../assets/errorIcon.png")); var _MASecuredBy = _interopRequireDefault(require("../components/MASecuredBy")); var _MAButton = _interopRequireDefault(require("../components/MAButton")); var _ContainerStyles = require("./ContainerStyles"); var _constants = require("../constants"); var _transferEventHandlers = require("../events/transferEventHandlers"); var _utils = require("../utility/utils"); var _authenticationSlice = require("../redux/slices/authenticationSlice"); var _auditEventQueue = require("../events/auditEventQueue"); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const MAErrorView = ({ isExperienceError = false, isInvalidUrl = false }) => { const dispatch = (0, _reactRedux.useDispatch)(); const timeoutRef = (0, _react.useRef)(null); const { t } = (0, _reactI18next.useTranslation)(); const { eventHandler: transferEventHandler } = (0, _reactRedux.useSelector)(state => state.event || {}); const { data } = (0, _reactRedux.useSelector)(state => state.errorTranslation || {}); const errorData = (0, _reactRedux.useSelector)(state => state.user?.error?.response?.data ?? {}, _reactRedux.shallowEqual); const error = (0, _reactRedux.useSelector)(state => state.user?.error); const auditServiceToken = (0, _reactRedux.useSelector)(state => state.user?.data?.auditServiceDetails?.token); const { getResponseForClose, getResponseForError } = (0, _transferEventHandlers.useTransferEventResponse)(); const sendAuditData = (0, _auditEventQueue.useSendAuditData)(); const FIVE_MINUTES = 5 * 60 * 1000; const { code, user_message } = errorData; const errorText = data && (0, _utils.getTranslation)(user_message, data); const isApiTimeout = error?.code === _constants.TransferActionCodes.API_TIMEOUT; const finalCode = getFinalCode(); (0, _react.useEffect)(() => { transferEventHandler?.onErrorEvent(getResponseForError(finalCode)); auditServiceToken && sendAuditData(_constants.TransferActionEvents.ERROR, { code: finalCode }); timeoutRef.current = setTimeout(() => { onExitPressed(); }, FIVE_MINUTES); return () => { clearTimeoutRef(); }; }, []); function getFinalCode() { let errorCode = isExperienceError ? -1 : code; if (isInvalidUrl) { errorCode = _constants.TransferActionCodes.INVALID_URL; } else if (isApiTimeout) { errorCode = _constants.TransferActionCodes.API_TIMEOUT; } return errorCode; } const clearTimeoutRef = () => { if (timeoutRef?.current) { clearTimeout(timeoutRef.current); timeoutRef.current = null; } }; const onExitPressed = () => { transferEventHandler?.onTransferEnd(getResponseForClose(_constants.RedirectReason.ERROR, finalCode)); auditServiceToken && sendAuditData(_constants.TransferActionEvents.END, { code: finalCode, reason: _constants.RedirectReason.ERROR, listenerType: _constants.ListenerType.CLOSE }); _auditEventQueue.eventQueue.destroy(); dispatch((0, _authenticationSlice.resetData)()); clearTimeoutRef(); }; const errorScreenFooter = () => { return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, { style: _ContainerStyles.MAErrorViewStyles.footerView, children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_MAButton.default, { text: t('Exit'), onPress: onExitPressed }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_MASecuredBy.default, {})] }); }; const getErrorText = () => { let title = t('ErrorTitle'); let subTitle = `${t('ErrorSubtitle')} (${_constants.TransferActionCodes.API_OR_ATOMIC_ERROR})`; if (isInvalidUrl) { subTitle = `${t('InvalidUrlErrorSubtitle')} (${_constants.TransferActionCodes.INVALID_URL})`; } else if (isApiTimeout) { subTitle = `${t('ServerTimeoutErrorSubtitle')} (${_constants.TransferActionCodes.API_TIMEOUT})`; } else if (isExperienceError) { title = t('ExperienceErrorTitle'); subTitle = `${t('ExperienceErrorSubtitle')} (${_constants.TransferActionCodes.INVALID_EXPERIENCE})`; } else if (code && user_message) { subTitle = `${errorText} (${code})`; } return { title, subTitle }; }; return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.SafeAreaView, { style: _ContainerStyles.MAErrorViewStyles.safeAreaView, children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, { style: _ContainerStyles.MAErrorViewStyles.errorView, children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, { style: _ContainerStyles.MAErrorViewStyles.titleText, children: getErrorText().title }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, { style: _ContainerStyles.MAErrorViewStyles.descriptionText, children: getErrorText().subTitle }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Image, { source: _errorIcon.default, resizeMode: "contain", style: _ContainerStyles.MAErrorViewStyles.errorIcon }), errorScreenFooter()] }) }); }; var _default = exports.default = MAErrorView; //# sourceMappingURL=MAErrorView.js.map