Skip to content

Commit

Permalink
feat(SFI-958): create analytics event for all adyen routes
Browse files Browse the repository at this point in the history
  • Loading branch information
shanikantsingh committed Oct 28, 2024
1 parent 9360b8a commit 8692c00
Show file tree
Hide file tree
Showing 7 changed files with 112 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -192,9 +192,8 @@ function getGiftCardConfig() {
async: false,
success: (data) => {
giftcardBalance = data.balance;
document.querySelector(
'button[value="submit-payment"]',
).disabled = false;
document.querySelector('button[value="submit-payment"]').disabled =
false;
if (data.resultCode === constants.SUCCESS) {
const {
giftCardsInfoMessageContainer,
Expand All @@ -220,9 +219,8 @@ function getGiftCardConfig() {
initialPartialObject.totalDiscountedAmount;
});

document.querySelector(
'button[value="submit-payment"]',
).disabled = true;
document.querySelector('button[value="submit-payment"]').disabled =
true;
giftCardsInfoMessageContainer.innerHTML = '';
giftCardsInfoMessageContainer.classList.remove(
'gift-cards-info-message-container',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,8 @@ function removeGiftCards() {
giftCardsInfoMessageContainer.classList.remove(
'gift-cards-info-message-container',
);
document.querySelector(
'button[value="submit-payment"]',
).disabled = false;
document.querySelector('button[value="submit-payment"]').disabled =
false;

if (res.resultCode === constants.RECEIVED) {
document
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
const URLRedirectMgr = require('dw/web/URLRedirectMgr');
const analyticsEvent = require('*/cartridge/adyen/analytics/analyticsEvents');
const analyticsConstants = require('*/cartridge/adyen/analytics/constants');
const constants = require('*/cartridge/adyen/config/constants');
const {
isAdyenAnalyticsEnabled,
} = require('*/cartridge/adyen/utils/adyenConfigs');

function getPath(req) {
return req.path.split('/').pop().split('-');
}

function redirectUrlStartRule() {
const origin = URLRedirectMgr.redirectOrigin;
return origin.match(constants.APPLE_DOMAIN_URL);
}

function isUsedByAdyen(req) {
const path = getPath(req);
const allControllers = [
{ name: 'account', routes: [{ name: 'Show' }] },
{ name: 'adyen' },
{ name: 'cart', routes: [{ name: 'MiniCartShow' }] },
{ name: 'checkout', routes: [{ name: 'Begin' }] },
{ name: 'checkoutServices', routes: [{ name: 'PlaceOrder' }] },
{ name: 'order', routes: [{ name: 'Confirm' }] },
{
name: 'paymentInstruments',
routes: [
{ name: 'AddPayment' },
{ name: 'SavePayment' },
{ name: 'DeletePayment' },
],
},
{
name: 'redirectUrl',
routes: [{ name: 'Start', rule: redirectUrlStartRule }],
},
];
return allControllers.some((controller) => {
if (path[0].toLowerCase() === controller.name.toLowerCase()) {
if (!controller.routes) {
return true;
}
const route = controller.routes.find(
(eachRoute) => path[1].toLowerCase() === eachRoute.name.toLowerCase(),
);
if (typeof route?.rule === 'function') {
return !!route.rule();
}
return !!route;
}
return false;
});
}

function registerRoute(route) {
route.on('route:Start', (req) => {
const path = getPath(req);
if (isUsedByAdyen(req) && isAdyenAnalyticsEnabled()) {
analyticsEvent.createAnalyticsEvent(
session.sessionID,
path.join('-'),
analyticsConstants.eventType.START,
analyticsConstants.eventStatus.EXPECTED,
analyticsConstants.eventCode.INFO,
);
}
});

route.on('route:Complete', (req, res) => {
const path = getPath(req);
if (isUsedByAdyen(req) && isAdyenAnalyticsEnabled()) {
if (res.viewData.error) {
analyticsEvent.createAnalyticsEvent(
session.sessionID,
path.join('-'),
analyticsConstants.eventType.END,
analyticsConstants.eventStatus.UNEXPECTED,
analyticsConstants.eventCode.INFO,
);
} else {
analyticsEvent.createAnalyticsEvent(
session.sessionID,
path.join('-'),
analyticsConstants.eventType.END,
analyticsConstants.eventStatus.EXPECTED,
analyticsConstants.eventCode.INFO,
);
}
}
});
}

/* Module Exports */
module.exports = {
registerRoute,
getPath,
redirectUrlStartRule,
isUsedByAdyen,
};
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@
{
"name": "app.payment.form.processor.adyen_component",
"script": "./hooks/payment/processor/adyen_component_form_processor"
},
{
"name": "app.server.registerRoute",
"script": "../analytics/analyticsHook"
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,21 +25,12 @@ const AdyenConfigs = require('*/cartridge/adyen/utils/adyenConfigs');
const constants = require('*/cartridge/adyen/config/constants');
const blockedPayments = require('*/cartridge/adyen/config/blockedPaymentMethods.json');
const AdyenLogs = require('*/cartridge/adyen/logs/adyenCustomLogs');
const analyticsEvent = require('*/cartridge/adyen/analytics/analyticsEvents');
const analyticsConstants = require('*/cartridge/adyen/analytics/constants');

// eslint-disable-next-line complexity
function getMethods(basket, customer, countryCode) {
try {
let paymentAmount;
let currencyCode;
analyticsEvent.createAnalyticsEvent(
session.sessionID,
constants.SERVICE.CHECKOUTPAYMENTMETHODS,
analyticsConstants.eventType.START,
analyticsConstants.eventStatus.EXPECTED,
analyticsConstants.eventCode.INFO,
);
// paymentMethods call from checkout
if (basket) {
currencyCode = basket.currencyCode;
Expand Down Expand Up @@ -89,13 +80,6 @@ function getMethods(basket, customer, countryCode) {
paymentMethodsRequest,
);
} catch (error) {
analyticsEvent.createAnalyticsEvent(
session.sessionID,
constants.SERVICE.CHECKOUTPAYMENTMETHODS,
analyticsConstants.eventType.END,
analyticsConstants.eventStatus.UNEXPECTED,
analyticsConstants.eventCode.INFO,
);
AdyenLogs.fatal_log('/paymentMethods call failed', error);
return { error: true };
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ const adyenConfigsObj = {
return getCustomPreference('AdyenGiving_logoUrl')?.getAbsURL();
},

getAdyenAnalyticsEnabled() {
isAdyenAnalyticsEnabled() {
return getCustomPreference('AdyenAnalytics_Enabled');
},
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@ const collections = require('*/cartridge/scripts/util/collections');
const constants = require('*/cartridge/adyen/config/constants');
const AdyenConfigs = require('*/cartridge/adyen/utils/adyenConfigs');
const AdyenLogs = require('*/cartridge/adyen/logs/adyenCustomLogs');
const analyticsEvent = require('*/cartridge/adyen/analytics/analyticsEvents');
const analyticsConstants = require('*/cartridge/adyen/analytics/constants');

/* eslint no-var: off */
let adyenHelperObj = {
Expand Down Expand Up @@ -975,7 +973,6 @@ let adyenHelperObj = {
if (!resultObject || !resultObject.getText()) {
throw new Error(`No correct response from ${serviceType} service call`);
}
analyticsEvent.createAnalyticsEvent(session.sessionID, serviceType, analyticsConstants.eventType.END, analyticsConstants.eventStatus.EXPECTED, analyticsConstants.eventCode.INFO);
return JSON.parse(resultObject.getText());
},
};
Expand Down

0 comments on commit 8692c00

Please sign in to comment.