connect-transfer-react-native-sdk
Version:
Connect Transfer React Native SDK for Mastercard Open Banking Connect
173 lines (169 loc) • 5.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useAuditEventsMapper = void 0;
var _reactRedux = require("react-redux");
var _constants = require("../constants");
var _transferEventHandlers = require("./transferEventHandlers");
var _version = require("../utility/version");
/**
* Maps event names to structured payloads compatible with the Audit Service events API.
* Includes utility functions to transform event data and extract metadata from Redux state.
*
* Usage:
* const mapAuditEvent = useAuditEventsMapper();
* const payload = mapAuditEvent("SomeEventName", eventData);
*/
/**
* Maps event-specific parameters to structured audit event data.
*
* @param eventParams - Object containing eventName, eventData, queryParams, and product.
* @returns An object formatted according to the event name for the audit API.
*/
const mapEventData = eventParams => {
const {
eventName,
eventData,
queryParams,
product
} = eventParams;
const COMMON_FIELDS = {
[_constants.TransferEventDataName.TTL]: queryParams?.ttl
};
switch (eventName) {
case _constants.TransferActionEvents.INITIALIZE_TRANSFER:
case _constants.TransferActionEvents.TERMS_ACCEPTED:
case _constants.UserEvents.TASK_COMPLETED:
return COMMON_FIELDS;
case _constants.UserEvents.INITIALIZE_DEPOSIT_SWITCH:
return {
...COMMON_FIELDS,
product
};
case _constants.UserEvents.SEARCH_PAYROLL_PROVIDER:
return {
...COMMON_FIELDS,
searchTerms: eventData.searchTerm
};
case _constants.UserEvents.SELECT_PAYROLL_PROVIDER:
return {
...COMMON_FIELDS,
payrollProvider: eventData.payrollProvider
};
case _constants.UserEvents.SELECTED_COMPANY_THROUGH_FRANCHISE_PAGE:
case _constants.UserEvents.SELECTED_COMPANY_THROUGH_PAYROLL_PROVIDER:
return {
...COMMON_FIELDS,
company: eventData.company
};
case _constants.UserEvents.SUBMIT_CREDENTIALS:
return {
...COMMON_FIELDS,
inputType: eventData.inputType
};
case _constants.UserEvents.CHANGE_DEFAULT_ALLOCATION:
case _constants.UserEvents.SUBMIT_ALLOCATION:
const {
depositOption,
depositAllocation
} = eventData;
return {
...COMMON_FIELDS,
distributions: [{
type: depositOption,
...(depositAllocation !== undefined && {
allocatedValue: depositAllocation
})
}]
};
case _constants.TransferActionEvents.END:
const {
listenerType,
code,
reason,
distributionType,
distributionAmount,
taskId,
...restEventData
} = eventData;
if (listenerType === _constants.ListenerType.FINISH) {
return {
...COMMON_FIELDS,
...restEventData,
switchId: taskId,
distributions: [{
type: distributionType,
...(distributionAmount !== undefined && {
allocatedValue: distributionAmount
})
}],
code: _constants.TransferActionCodes.SUCCESS,
reason: _constants.RedirectReason.COMPLETE
};
}
if (listenerType === _constants.ListenerType.CLOSE) {
const isExitReason = reason === _constants.RedirectReason.UNKNOWN || reason === _constants.RedirectReason.EXIT;
return {
...COMMON_FIELDS,
code: isExitReason ? _constants.TransferActionCodes.USER_INITIATED_EXIT : code,
reason: isExitReason ? _constants.RedirectReason.EXIT : reason
};
}
return COMMON_FIELDS;
case _constants.TransferActionEvents.ERROR:
return {
...COMMON_FIELDS,
code: eventData.code || _constants.TransferActionCodes.API_OR_ATOMIC_ERROR,
reason: _constants.RedirectReason.ERROR
};
default:
return COMMON_FIELDS;
}
};
/**
* Extracts metadata fields from the query parameters.
*
* @param queryParams - Query parameters containing customer, partner, session, and experience data.
* @returns An object containing metadata fields for the audit payload.
*/
function getMetadata(queryParams) {
const metaData = {
origin: queryParams.origin,
platform: _constants.SDK_PLATFORM,
sdkVersion: _version.SDK_VERSION,
[_constants.TransferEventDataName.TIMESTAMP]: queryParams[_constants.TransferEventDataName.TIMESTAMP],
[_constants.TransferEventDataName.CUSTOMER_ID]: queryParams[_constants.TransferEventDataName.CUSTOMER_ID],
[_constants.TransferEventDataName.PARTNER_ID]: queryParams[_constants.TransferEventDataName.PARTNER_ID],
[_constants.TransferEventDataName.SESSION_ID]: queryParams.signature
};
if (queryParams?.experience?.id) {
metaData[_constants.TransferEventDataName.EXPERIENCE] = queryParams.experience.id;
}
return metaData;
}
/**
* Custom React hook to map Redux state and event input to a complete audit event payload.
*
* @returns A function that accepts eventName and eventData, and returns a structured event object.
*/
const useAuditEventsMapper = () => {
const {
queryParamsObject: queryParams = {},
data = {}
} = (0, _reactRedux.useSelector)(state => state.user || {});
const product = (0, _transferEventHandlers.getTransferProductType)(data?.data?.product);
return (eventName, eventData) => ({
eventType: queryParams?.type,
eventName,
eventData: mapEventData({
eventName,
eventData,
queryParams,
product
}),
metadata: getMetadata(queryParams)
});
};
exports.useAuditEventsMapper = useAuditEventsMapper;
//# sourceMappingURL=auditEventsMapper.js.map