connect-transfer-react-native-sdk
Version:
Connect Transfer React Native SDK for Mastercard Open Banking Connect
136 lines (135 loc) • 6.6 kB
JavaScript
;
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