From 0ea4ef5e1d5c39958d0a7b7f2d100006099fc866 Mon Sep 17 00:00:00 2001 From: Chris Redelinghuys Date: Mon, 12 May 2025 15:24:03 -0400 Subject: [PATCH 1/8] CASH-633: Show afterpay banner for insurance tab if afterpay breakout --- .../quote/afterpay-modal-banner/afterpay-modal-banner.vue | 8 ++++++-- src/layouts/quote/quote.vue | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/layouts/quote/afterpay-modal-banner/afterpay-modal-banner.vue b/src/layouts/quote/afterpay-modal-banner/afterpay-modal-banner.vue index 3b682e52b..3081cdc7d 100644 --- a/src/layouts/quote/afterpay-modal-banner/afterpay-modal-banner.vue +++ b/src/layouts/quote/afterpay-modal-banner/afterpay-modal-banner.vue @@ -53,6 +53,7 @@ export default { cmsWidgetName: String, lineItems: Array, isAfterpayBreakoutDisplay: Boolean, + isInsuranceSelected: Boolean, }, data() { return {}; @@ -72,9 +73,12 @@ export default { afterpayCopyTokens() { if (this.isAfterpayBreakoutDisplay) { // Text for Afterpay Breakout experiment - return splitCopyOnCMSPlaceHolder( - this.getCmsContent(this.cmsWidgetName, "BodyText2") + var afterpayBannerCopy = this.getCmsContent(this.cmsWidgetName, "BodyText2"); + afterpayBannerCopy = afterpayBannerCopy && afterpayBannerCopy.replaceAll( + "{custom:paymentType}", + this.isInsuranceSelected ? "deductible" : "spending" ); + return splitCopyOnCMSPlaceHolder(afterpayBannerCopy); } else { return splitCopyOnCMSPlaceHolder( this.getCmsContent(this.cmsWidgetName, "HeaderText") diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index 4a20b4dbc..ea83d10b6 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -47,6 +47,7 @@ v-if="showAfterpayBanner" cmsWidgetName="AfterpayModalWidget" :isAfterpayBreakoutDisplay="isAfterpayBreakoutDisplay" + :isInsuranceSelected="isInsuranceSelected" :lineItems="lineItems" /> @@ -588,7 +589,7 @@ export default { }, showAfterpayBanner() { return ( - !this.isInsuranceSelected && + (this.isAfterpayBreakoutDisplay || !this.isInsuranceSelected) && (!this.isRecalibrationOnOrder || !this.shouldHideRecalibration) ); }, From 57c047a464c0fce221cc8cdeebb9134d0f3454d4 Mon Sep 17 00:00:00 2001 From: Chris Redelinghuys Date: Mon, 12 May 2025 15:35:31 -0400 Subject: [PATCH 2/8] CASH-633: Prettier --- .../afterpay-modal-banner/afterpay-modal-banner.vue | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/layouts/quote/afterpay-modal-banner/afterpay-modal-banner.vue b/src/layouts/quote/afterpay-modal-banner/afterpay-modal-banner.vue index 3081cdc7d..c40e518df 100644 --- a/src/layouts/quote/afterpay-modal-banner/afterpay-modal-banner.vue +++ b/src/layouts/quote/afterpay-modal-banner/afterpay-modal-banner.vue @@ -74,10 +74,12 @@ export default { if (this.isAfterpayBreakoutDisplay) { // Text for Afterpay Breakout experiment var afterpayBannerCopy = this.getCmsContent(this.cmsWidgetName, "BodyText2"); - afterpayBannerCopy = afterpayBannerCopy && afterpayBannerCopy.replaceAll( - "{custom:paymentType}", - this.isInsuranceSelected ? "deductible" : "spending" - ); + afterpayBannerCopy = + afterpayBannerCopy && + afterpayBannerCopy.replaceAll( + "{custom:paymentType}", + this.isInsuranceSelected ? "deductible" : "spending" + ); return splitCopyOnCMSPlaceHolder(afterpayBannerCopy); } else { return splitCopyOnCMSPlaceHolder( From 4d481bfd775677123ea52d499975dd3a1e73eb66 Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Tue, 13 May 2025 10:49:41 -0400 Subject: [PATCH 3/8] Only save session on nav if email or phone number is present --- src/router/methods/navigate.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/router/methods/navigate.js b/src/router/methods/navigate.js index 7df947560..b15c955e9 100644 --- a/src/router/methods/navigate.js +++ b/src/router/methods/navigate.js @@ -3,6 +3,7 @@ import { buildManualUrl } from "@/router/methods/helpers/build-manual-url"; import { getDestination } from "@/router/methods/helpers/get-destination"; import { savePageData } from "@/router/methods/helpers/save-page-data"; import router from "@/router"; +import store from "@/store"; import { bailout } from "@/router/methods/error"; @@ -34,7 +35,12 @@ async function navigate(scenario, currentPageName, withSaving = false, forceTopL } if (withSaving) { - await saveSession({ pageNameToLog: nextPage.name }); + if ( + store.getters?.applicationUser?.savedSessionId || + store.getters?.order?.customer?.emailAddress + ) { + await saveSession({ pageNameToLog: nextPage.name }); + } } // Some pages require manually setting the next url From 910fe50702e52855f61ef7894512a6e3e9062c06 Mon Sep 17 00:00:00 2001 From: CarlNation Date: Tue, 13 May 2025 10:55:53 -0400 Subject: [PATCH 4/8] debug return from heritage debug return from heritage --- src/router/methods/before-each.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/router/methods/before-each.js b/src/router/methods/before-each.js index aa4e3a9e4..734385700 100644 --- a/src/router/methods/before-each.js +++ b/src/router/methods/before-each.js @@ -14,11 +14,18 @@ import { runExperiments } from "@/router/methods/helpers/run-experiments"; import { bailout } from "@/router/methods/error"; import { checkPagePrerequisites } from "@/router/methods/page-prerequisites"; import { checkLogParam } from "@/helpers/debug-log-helper"; +import { debugLog } from "@/helpers/debug-log-helper"; export async function beforeEach(to, from) { try { await analyticsMixin.methods.validateSession(); + // prettier-ignore + { + debugLog(`--- before-each.js ${from?.name} start ---`); + debugLog(" funnel cookie init: ", getFunnelCookie()); + } + if (getFunnelCookie()?.SuppressConceptFunnel) { // Redirect to heritage. return { @@ -48,6 +55,12 @@ export async function beforeEach(to, from) { // Process funnel cookie. updateOrCreateFunnelCookie(); + // prettier-ignore + { + debugLog(`--- before-each.js ${from?.name} start ---`); + debugLog(" funnel cookie after: ", getFunnelCookie()); + } + // If sent from heritage, need to load session. const fromHeritageFlag = consumeQueryFromStash(queryStrings.FROM_HERITAGE); if (fromHeritageFlag) { @@ -72,6 +85,12 @@ export async function beforeEach(to, from) { } await runExperiments(to.name); + + // prettier-ignore + { + debugLog("--- before-each.js end ---"); + } + } catch (error) { const errorPayload = { cause: "Uncaught exception in `beforeEach`.", From 0b7e4f578b8b11499cf8b498432139c456a81879 Mon Sep 17 00:00:00 2001 From: CarlNation Date: Tue, 13 May 2025 10:57:55 -0400 Subject: [PATCH 5/8] prettier --- src/router/methods/before-each.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/router/methods/before-each.js b/src/router/methods/before-each.js index 734385700..84514f6c2 100644 --- a/src/router/methods/before-each.js +++ b/src/router/methods/before-each.js @@ -90,7 +90,6 @@ export async function beforeEach(to, from) { { debugLog("--- before-each.js end ---"); } - } catch (error) { const errorPayload = { cause: "Uncaught exception in `beforeEach`.", From 5f7840057a9c1ff8451ee31e47078ea298e4cae3 Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Tue, 13 May 2025 11:50:30 -0400 Subject: [PATCH 6/8] Progress bar cleanup --- .../funnel-header/progress-bar/progres-bar.spec.js | 8 ++++---- .../funnel-header/progress-bar/progress-bar.vue | 14 +++++--------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/fmg-components/funnel-header/progress-bar/progres-bar.spec.js b/src/fmg-components/funnel-header/progress-bar/progres-bar.spec.js index a8d22cc2c..9970b266c 100644 --- a/src/fmg-components/funnel-header/progress-bar/progres-bar.spec.js +++ b/src/fmg-components/funnel-header/progress-bar/progres-bar.spec.js @@ -15,7 +15,7 @@ describe("progressBar", () => { }); // Assert - expect(wrapper.vm.getProgress()).toBe(0); + expect(wrapper.vm.progress).toBe(0); wrapper.unmount(); }); }); @@ -33,7 +33,7 @@ describe("progressBar", () => { }); // Assert - expect(wrapper.vm.getProgress()).toBe(4); + expect(wrapper.vm.progress).toBe(4); wrapper.unmount(); }); }); @@ -51,7 +51,7 @@ describe("progressBar", () => { }); // Assert - expect(wrapper.vm.getProgress()).toBe(48); + expect(wrapper.vm.progress).toBe(48); wrapper.unmount(); }); }); @@ -69,7 +69,7 @@ describe("progressBar", () => { }); // Assert - expect(wrapper.vm.getProgress()).toBe(100); + expect(wrapper.vm.progress).toBe(100); wrapper.unmount(); }); }); diff --git a/src/fmg-components/funnel-header/progress-bar/progress-bar.vue b/src/fmg-components/funnel-header/progress-bar/progress-bar.vue index da370e415..c25476338 100644 --- a/src/fmg-components/funnel-header/progress-bar/progress-bar.vue +++ b/src/fmg-components/funnel-header/progress-bar/progress-bar.vue @@ -10,15 +10,11 @@ import { getProgressBarPercentage } from "@/constants/progress-bar-mapper"; export default { name: "progressBar", - data() { - return { - progress: this.getProgress(), - }; - }, - methods: { - getProgress() { - var pageName = this.pageName; - return getProgressBarPercentage(pageName); + data() {}, + computed: { + progress() { + console.log(`Progress: ${this.pageName} - ${getProgressBarPercentage(this.pageName)}`); + return getProgressBarPercentage(this.pageName); }, }, }; From c48f16bb992422bb82093d98379e86f1251cc386 Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Tue, 13 May 2025 11:53:57 -0400 Subject: [PATCH 7/8] Remove console log --- src/fmg-components/funnel-header/progress-bar/progress-bar.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/fmg-components/funnel-header/progress-bar/progress-bar.vue b/src/fmg-components/funnel-header/progress-bar/progress-bar.vue index c25476338..ebce6e0de 100644 --- a/src/fmg-components/funnel-header/progress-bar/progress-bar.vue +++ b/src/fmg-components/funnel-header/progress-bar/progress-bar.vue @@ -13,7 +13,6 @@ export default { data() {}, computed: { progress() { - console.log(`Progress: ${this.pageName} - ${getProgressBarPercentage(this.pageName)}`); return getProgressBarPercentage(this.pageName); }, }, From 73ec3ce9ee682b126e654cda79bb585a0dfea5d8 Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Tue, 13 May 2025 12:27:28 -0400 Subject: [PATCH 8/8] Load session before updating funnel cookie --- src/router/methods/before-each.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/router/methods/before-each.js b/src/router/methods/before-each.js index 84514f6c2..3a293f98b 100644 --- a/src/router/methods/before-each.js +++ b/src/router/methods/before-each.js @@ -52,6 +52,12 @@ export async function beforeEach(to, from) { } } + // If sent from heritage, need to load session. + const fromHeritageFlag = consumeQueryFromStash(queryStrings.FROM_HERITAGE); + if (fromHeritageFlag) { + await loadSessionIfPresent(true, routeData.SERVICE_LOCATION.name); + } + // Process funnel cookie. updateOrCreateFunnelCookie(); @@ -61,12 +67,6 @@ export async function beforeEach(to, from) { debugLog(" funnel cookie after: ", getFunnelCookie()); } - // If sent from heritage, need to load session. - const fromHeritageFlag = consumeQueryFromStash(queryStrings.FROM_HERITAGE); - if (fromHeritageFlag) { - await loadSessionIfPresent(true, routeData.SERVICE_LOCATION.name); - } - // Update if logging is enabled. checkLogParam();