-
+
@@ -21,12 +34,27 @@
@@ -109,10 +137,22 @@ import { navigateAfterSaveToHeritageFunnel } from "@/helpers/heritage-integratio
// DEFINE VALIDATION RULES
defineRule("zip-required", required(errorMessages.ZIP_REQUIRED));
-defineRule("email-address-required", required(errorMessages.EMAIL_ADDRESS_REQUIRED));
-defineRule("email-address-format", regex(/^([a-zA-Z0-9_\-.+]+)@([a-zA-Z0-9_\-.]+).([a-zA-Z]{2,})$/, errorMessages.EMAIL_ADDRESS_FORMAT));
+defineRule(
+ "email-address-required",
+ required(errorMessages.EMAIL_ADDRESS_REQUIRED)
+);
+defineRule(
+ "email-address-format",
+ regex(
+ /^([a-zA-Z0-9_\-.+]+)@([a-zA-Z0-9_\-.]+).([a-zA-Z]{2,})$/,
+ errorMessages.EMAIL_ADDRESS_FORMAT
+ )
+);
defineRule("vin-required", required(errorMessages.VIN_REQUIRED));
-defineRule("vin-format", regex(/^[A-HJ-NPR-Z0-9]{17}$/, errorMessages.VIN_FORMAT));
+defineRule(
+ "vin-format",
+ regex(/^[A-HJ-NPR-Z0-9]{17}$/, errorMessages.VIN_FORMAT)
+);
export default {
name: "vin-lookup",
@@ -120,7 +160,6 @@ export default {
// Call APIs
const cmsContentPromise = fetchCmsContentForPage(to.query.fmgPage);
-
// Settle promises and get results
const promiseResultMap = [
{
@@ -211,12 +250,20 @@ export default {
getZipFromStore(){
return store.getters.vehicle.registration.zipCode
},
+ attachCustomEvents() {
+ this.prependActionToMethod(this, this.forwardButtonAction, () => {
+ this.pushEventToGA(
+ this.$route.query[this.queryStrings.FMG_PAGE],
+ this.GaActions.SUBMITTED,
+ this.GaLabels.VINLOOKUP,
+ true
+ );
+ });
+ },
backButtonAction() {
this.$router.navigate(this.navigationScenarios.CLICKED_BACK, this.$route);
},
async forwardButtonAction() {
- this.pushEventToGA(this.$route.query[this.queryStrings.FMG_PAGE], this.GaActions.SUBMITTED, this.GaLabels.VINLOOKUP , true);
-
const zipValidation = await this.validateZip(this.zip);
if (!zipValidation.data.isServiceable) {
this.customAlertData.zip = this.zip;
@@ -257,10 +304,9 @@ export default {
}
},
validateZip(zip) {
- return baseMixin.methods.dispatchStoreAction(
- storeActions.VALIDATE_ZIP,
- { zip }
- );
+ return baseMixin.methods.dispatchStoreAction(storeActions.VALIDATE_ZIP, {
+ zip,
+ });
},
lookupVehicle(vin) {
return baseMixin.methods.dispatchStoreAction(
diff --git a/src/mixins/analytics-mixin.js b/src/mixins/analytics-mixin.js
index c2c86c2dd..85402c8cb 100644
--- a/src/mixins/analytics-mixin.js
+++ b/src/mixins/analytics-mixin.js
@@ -81,7 +81,15 @@ export default {
// Push to the data layer with the Google Custom Dimension Index.
pushToDataLayerIfDefined(experimentWithDimension);
});
- }
+ },
+
+ prependActionToMethod(object, method, actionToPrepend) {
+ const baseMethod = object[method.name];
+ object[method.name] = function () {
+ actionToPrepend.apply(this, arguments);
+ return baseMethod.apply(object, arguments);
+ };
+ },
},
computed: {
analyticsPageEvents() {
@@ -96,7 +104,7 @@ export default {
GaLabels() {
return GaLabels;
}
- }
+ },
};
function pushToDataLayerIfDefined(data) {
diff --git a/src/mixins/analytics-mixin.spec.js b/src/mixins/analytics-mixin.spec.js
index b4ec2a5b5..ae1ba00a7 100644
--- a/src/mixins/analytics-mixin.spec.js
+++ b/src/mixins/analytics-mixin.spec.js
@@ -79,5 +79,4 @@ describe("analyticsMixin.js", () => {
expect(window.dataLayer).toEqual([ { settings_5: {"Google Custom Dimension Index": "5"}, variationName_5: 'test', universeName_5: 'testUniverse' } ]);
});
-
});
\ No newline at end of file
diff --git a/src/router/index.js b/src/router/index.js
index 9ffd28522..1af18ec1b 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -126,6 +126,7 @@ const router = createRouter({
router.afterEach(async (to, from) => {
// Push page view to GA
analyticsMixin.methods.pushPageViewToGA(to.query[queryStrings.FMG_PAGE]);
+
const assignedExperiments = await baseMixin.methods.dispatchStoreAction(storeActions.GET_EXPERIMENTS_BY_USER_FOR_GA, { userId: getDeviceIdValue() });
analyticsMixin.methods.pushExperimentsToDataLayer(assignedExperiments);
});