UNPKG

connect-transfer-react-native-sdk

Version:

Connect Transfer React Native SDK for Mastercard Open Banking Connect

136 lines (135 loc) 6.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.isExperienceError = isExperienceError; exports.isSkipLandingPageEnabled = isSkipLandingPageEnabled; var _react = _interopRequireWildcard(require("react")); var _reactNative = require("react-native"); var _reactRedux = require("react-redux"); var _i18next = _interopRequireDefault(require("i18next")); var _authenticate = require("../services/api/authenticate"); var _errorTranslation = require("../services/api/errorTranslation"); var _authenticationSlice = require("../redux/slices/authenticationSlice"); var _utils = require("../utility/utils"); var _eventHandlerSlice = require("../redux/slices/eventHandlerSlice"); var _transferEventHandlers = require("../events/transferEventHandlers"); var _constants = require("../constants"); var _ContainerStyles = require("./ContainerStyles"); var _MALandingView = _interopRequireDefault(require("./LandingView/MALandingView")); var _MARedirectingView = _interopRequireDefault(require("./MARedirectingView")); var _MAErrorView = _interopRequireDefault(require("./MAErrorView")); var _MALoader = _interopRequireDefault(require("../components/MALoader")); var _auditEventQueue = require("../events/auditEventQueue"); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } const MARootContainer = ({ connectTransferUrl, eventHandlers }) => { const dispatch = (0, _reactRedux.useDispatch)(); const hasInitializedRef = (0, _react.useRef)(false); const { modalVisible, language, error, data, baseURL } = (0, _reactRedux.useSelector)(state => state.user || {}); const { eventHandler: transferEventHandler } = (0, _reactRedux.useSelector)(state => state.event || {}); const [showRedirecting, setShowRedirecting] = (0, _react.useState)(false); const { getResponseForInitializeTransfer, getResponseForClose } = (0, _transferEventHandlers.useTransferEventResponse)(); const sendAuditData = (0, _auditEventQueue.useSendAuditData)(); const skipLandingPage = isSkipLandingPageEnabled(data); const isRedirecting = skipLandingPage || showRedirecting; const isValidUrlData = (0, _utils.extractUrlData)(connectTransferUrl); const isError = error || !connectTransferUrl || isExperienceError(data) || !isValidUrlData; const auditServiceToken = data?.auditServiceDetails?.token; (0, _react.useEffect)(() => { dispatch((0, _authenticationSlice.setModalVisible)()); eventHandlers && dispatch((0, _eventHandlerSlice.setEventHandlers)(eventHandlers)); _auditEventQueue.eventQueue.reset(); if (isValidUrlData) { dispatch((0, _authenticationSlice.setUrl)(connectTransferUrl)); dispatch((0, _authenticationSlice.setUrlData)(isValidUrlData)); } }, [connectTransferUrl]); (0, _react.useEffect)(() => { if (baseURL) { dispatch((0, _authenticate.authenticateUser)(_constants.API_KEYS.authenticateUser)); dispatch((0, _errorTranslation.errorTranslation)(_constants.API_KEYS.errorTranslation)); _i18next.default.changeLanguage(language); } }, [baseURL]); (0, _react.useEffect)(() => { if (!isError && data && !hasInitializedRef.current) { transferEventHandler?.onInitializeConnectTransfer(getResponseForInitializeTransfer()); sendAuditData(_constants.TransferActionEvents.INITIALIZE_TRANSFER); hasInitializedRef.current = true; } }, [data, isError]); const closeModal = () => { transferEventHandler?.onTransferEnd(getResponseForClose(_constants.RedirectReason.EXIT)); auditServiceToken && sendAuditData(_constants.TransferActionEvents.END, { reason: _constants.RedirectReason.EXIT, listenerType: _constants.ListenerType.CLOSE }); setShowRedirecting(false); _auditEventQueue.eventQueue.destroy(); dispatch((0, _authenticationSlice.resetData)()); }; const renderConditionalViews = () => { if (isError) return /*#__PURE__*/(0, _jsxRuntime.jsx)(_MAErrorView.default, { isExperienceError: isExperienceError(data), isInvalidUrl: !isValidUrlData }); if (isRedirecting) return /*#__PURE__*/(0, _jsxRuntime.jsx)(_MARedirectingView.default, {}); if (!isError && data) return /*#__PURE__*/(0, _jsxRuntime.jsx)(_MALandingView.default, { onNextPress: () => setShowRedirecting(true) }); return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, { style: _ContainerStyles.MARootContainerStyle.loader, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_MALoader.default, { color: "gray", size: 70, strokeWidth: 7, borderRadius: 35 }) }); }; return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Modal, { visible: modalVisible, animationType: 'slide', transparent: false, testID: "test-modal", onRequestClose: closeModal, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.SafeAreaView, { style: _ContainerStyles.MARootContainerStyle.safeAreaView, children: renderConditionalViews() }) }); }; function isSkipLandingPageEnabled(data) { const { transferModule, customizations } = data?.data?.experience ?? {}; return transferModule?.moduleType?.toUpperCase?.() === _constants.TransferModuleType.PDS && transferModule?.enabled && customizations?.skipLandingPage; } function isExperienceError(data) { const { id, transferModule } = data?.data?.experience ?? {}; return !!id && (!transferModule || Object.keys(transferModule).length === 0 || transferModule.moduleType?.toUpperCase?.() !== _constants.TransferModuleType.PDS || transferModule.enabled !== true); } var _default = exports.default = MARootContainer; //# sourceMappingURL=MARootContainer.js.map