connect-transfer-react-native-sdk
Version:
Connect Transfer React Native SDK for Mastercard Open Banking Connect
107 lines (106 loc) • 3.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = require("react");
var _reactRedux = require("react-redux");
var _transactReactNative = require("@atomicfi/transact-react-native");
var _constants = require("../../constants");
var _transferEventHandlers = require("../../events/transferEventHandlers");
var _complete = require("../../services/api/complete");
var _authenticationSlice = require("../../redux/slices/authenticationSlice");
var _auditEventQueue = require("../../events/auditEventQueue");
var _jsxRuntime = require("react/jsx-runtime");
const BRAND_COLOR = '#CF4500';
const SEARCH_COMPANY = 'search-company';
const MALaunchConnectTransfer = () => {
const dispatch = (0, _reactRedux.useDispatch)();
const {
data,
language
} = (0, _reactRedux.useSelector)(state => state.user || {});
const {
eventHandler: transferEventHandler
} = (0, _reactRedux.useSelector)(state => state.event || {});
const {
getResponseForInitializeDepositSwitch,
getResponseForFinish,
getResponseForClose
} = (0, _transferEventHandlers.useTransferEventResponse)();
const commonData = (0, _transferEventHandlers.useTransferEventCommonData)();
const sendAuditData = (0, _auditEventQueue.useSendAuditData)();
const {
userToken,
product,
metadata
} = data?.data || {};
(0, _react.useEffect)(() => {
_transactReactNative.Atomic.transact({
config: {
publicToken: userToken,
scope: _transactReactNative.Scope.USERLINK,
// @ts-ignore
tasks: [{
product: (0, _transferEventHandlers.getTransferProductType)(product)
}],
theme: {
brandColor: BRAND_COLOR,
dark: false
},
language: language,
deeplink: {
step: SEARCH_COMPANY
},
metadata: metadata,
customer: {
name: metadata?.applicationName || ''
}
},
onInteraction: interaction => handleInteractionEvents(interaction),
onFinish: response => handleFinishEvent(response),
onClose: response => handleCloseEvent(response)
});
}, [userToken, language]);
const handleInteractionEvents = interaction => {
if (interaction.name === _constants.AtomicEvents.INITIALIZED_TRANSACT) {
transferEventHandler?.onLaunchTransferSwitch(getResponseForInitializeDepositSwitch(interaction?.value?.product));
sendAuditData(_constants.UserEvents.INITIALIZE_DEPOSIT_SWITCH);
} else {
const userEventData = (0, _transferEventHandlers.getUserEventMappingForPDS)(interaction, commonData);
if (userEventData) {
transferEventHandler?.onUserEvent((0, _transferEventHandlers.getUserEventMappingForPDS)(interaction, commonData));
sendAuditData(userEventData.action, userEventData);
}
}
};
const handleCloseEvent = response => {
let reason = response?.reason;
const failReason = response?.failReason;
if (typeof failReason === 'string' && failReason?.length > 0) {
reason = failReason;
}
transferEventHandler?.onTransferEnd(getResponseForClose(reason));
sendAuditData(_constants.TransferActionEvents.END, {
reason,
listenerType: _constants.ListenerType.CLOSE
});
completeAndReset();
};
const handleFinishEvent = response => {
transferEventHandler?.onTransferEnd(getResponseForFinish(response));
sendAuditData(_constants.TransferActionEvents.END, {
...response,
listenerType: _constants.ListenerType.FINISH
});
completeAndReset();
};
function completeAndReset() {
dispatch((0, _complete.complete)(_constants.API_KEYS.complete));
_auditEventQueue.eventQueue.destroy();
dispatch((0, _authenticationSlice.resetData)());
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {});
};
var _default = exports.default = MALaunchConnectTransfer;
//# sourceMappingURL=MALaunchConnectTransfer.js.map