UNPKG

connect-transfer-react-native-sdk

Version:

Connect Transfer React Native SDK for Mastercard Open Banking Connect

173 lines (169 loc) 5.72 kB
"use strict"; 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