From 53959916796ebb55d81982da7a7d1b64d181294e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Wytr=C4=99bowicz?= Date: Thu, 8 Feb 2024 23:03:50 +0100 Subject: [PATCH] Simplify tracker event handler API, Remove not used "event" object. Addresses https://github.com/woocommerce/woocommerce-google-analytics-integration/pull/328#discussion_r1483531223 --- assets/js/src/integrations/blocks.js | 12 ++++++------ assets/js/src/integrations/classic.js | 10 +++++----- assets/js/src/tracker/index.js | 24 +++++++++++------------- 3 files changed, 22 insertions(+), 24 deletions(-) diff --git a/assets/js/src/integrations/blocks.js b/assets/js/src/integrations/blocks.js index ff71cf56..8cd5b715 100644 --- a/assets/js/src/integrations/blocks.js +++ b/assets/js/src/integrations/blocks.js @@ -6,37 +6,37 @@ import { ACTION_PREFIX, NAMESPACE } from '../constants'; addUniqueAction( `${ ACTION_PREFIX }-product-list-render`, NAMESPACE, - tracker.event( 'view_item_list' ).handler + tracker.eventHandler( 'view_item_list' ) ); addUniqueAction( `${ ACTION_PREFIX }-product-render`, NAMESPACE, - tracker.event( 'view_item' ).handler + tracker.eventHandler( 'view_item' ) ); addUniqueAction( `${ ACTION_PREFIX }-cart-add-item`, NAMESPACE, - tracker.event( 'add_to_cart' ).handler + tracker.eventHandler( 'add_to_cart' ) ); addUniqueAction( `${ ACTION_PREFIX }-cart-remove-item`, NAMESPACE, - tracker.event( 'remove_from_cart' ).handler + tracker.eventHandler( 'remove_from_cart' ) ); addUniqueAction( `${ ACTION_PREFIX }-checkout-render-checkout-form`, NAMESPACE, - tracker.event( 'begin_checkout' ).handler + tracker.eventHandler( 'begin_checkout' ) ); addUniqueAction( `${ ACTION_PREFIX }-product-view-link`, NAMESPACE, - tracker.event( 'select_content' ).handler + tracker.eventHandler( 'select_content' ) ); /** diff --git a/assets/js/src/integrations/classic.js b/assets/js/src/integrations/classic.js index 29dfa3bf..04931ff9 100644 --- a/assets/js/src/integrations/classic.js +++ b/assets/js/src/integrations/classic.js @@ -28,9 +28,9 @@ export const trackClassicIntegration = () => { Object.values( events ?? {} ).forEach( ( eventName ) => { if ( eventName === 'add_to_cart' ) { - tracker.event( eventName ).handler( { product: addedToCart } ); + tracker.eventHandler( eventName )( { product: addedToCart } ); } else { - tracker.event( eventName ).handler( eventData ); + tracker.eventHandler( eventName )( eventData ); } } ); @@ -43,7 +43,7 @@ export const trackClassicIntegration = () => { * @param {HTMLElement[]} button - An array of HTML elements representing the add to cart button. */ document.body.onadded_to_cart = ( e, fragments, cartHash, button ) => { - tracker.event( 'add_to_cart' ).handler( { + tracker.eventHandler( 'add_to_cart' )( { product: getProductFromID( parseInt( button[ 0 ].dataset.product_id ) ), @@ -65,7 +65,7 @@ export const trackClassicIntegration = () => { return; } - tracker.event( 'remove_from_cart' ).handler( { + tracker.eventHandler( 'remove_from_cart' )( { product: getProductFromID( parseInt( item.dataset.product_id ), true @@ -98,7 +98,7 @@ export const trackClassicIntegration = () => { return; } - tracker.event( 'select_content' ).handler( { + tracker.eventHandler( 'select_content' )( { product: getProductFromID( parseInt( productId ) ), } ); } ); diff --git a/assets/js/src/tracker/index.js b/assets/js/src/tracker/index.js index cc7d31f9..031ac83b 100644 --- a/assets/js/src/tracker/index.js +++ b/assets/js/src/tracker/index.js @@ -52,28 +52,26 @@ class Tracker { } /** - * Creates and returns an event handler object for a specified event name. + * Creates and returns an event handler for a specified event name. * * @param {string} name The name of the event. - * @return {{handler: function(*): void}} An object with a `handler` method for processing and tracking the event. + * @return {function(*): void} Function for processing and tracking the event. * @throws {Error} If the event name is not supported. */ - event( name ) { + eventHandler( name ) { /* eslint import/namespace: [ 'error', { allowComputed: true } ] */ if ( ! formatters[ name ] ) { throw new Error( `Event ${ name } is not supported.` ); } - return { - handler: ( data ) => { - if ( config.events.includes( name ) ) { - window[ config.tracker_var ]( - 'event', - name, - formatters[ name ]( data ) - ); - } - }, + return function trackerEventHandler( data ) { + if ( config.events.includes( name ) ) { + window[ config.tracker_var ]( + 'event', + name, + formatters[ name ]( data ) + ); + } }; } }