diff --git a/src/helpers/heritage-integration/navigation-helper.js b/src/helpers/heritage-integration/navigation-helper.js index 5b421b056..8fdfc40bb 100644 --- a/src/helpers/heritage-integration/navigation-helper.js +++ b/src/helpers/heritage-integration/navigation-helper.js @@ -45,10 +45,10 @@ export async function getPageToRouteExistingOrderTo(toRoute = {}) { Used to navigate to the heritage funnel with the correct query string and url. */ -export async function navigateToHeritageFunnel({ shouldSaveSession, loadingModal }) { +export async function navigateToHeritageFunnel({ shouldSaveSession, pageNameToLog, loadingModal }) { // Create the order (or save existing order) when navigating to Heritage Funnel. if (shouldSaveSession) { - await saveSession({ shouldAwaitSaveSessionQueue: true }); + await saveSession({ pageNameToLog: pageNameToLog, shouldAwaitSaveSessionQueue: true }); } if (loadingModal && loadingModal.showModal) { diff --git a/src/helpers/heritage-integration/order-helper.js b/src/helpers/heritage-integration/order-helper.js index 01f5a5d67..addca2d41 100644 --- a/src/helpers/heritage-integration/order-helper.js +++ b/src/helpers/heritage-integration/order-helper.js @@ -14,7 +14,7 @@ import { storeMutations } from "@/constants/store-mutations"; it will reset the state and go back to the start of the funnel. */ -export async function loadSessionIfPresent(isConceptInsurance) { +export async function loadSessionIfPresent(isConceptInsurance, pageNameToLog) { const funnelCookie = getFunnelCookie(); // Do nothing if there is no cookie or session to use for loading. @@ -42,7 +42,8 @@ export async function loadSessionIfPresent(isConceptInsurance) { funnelCookie.ReferralDate, funnelCookie.ReferralParentAccountNumber, funnelCookie.ReferralCorrelationId, - isConceptInsurance + isConceptInsurance, + pageNameToLog ) )?.data; } @@ -52,17 +53,17 @@ export async function loadSessionIfPresent(isConceptInsurance) { This will also set Referral information in the store after saving, and then update the cookie. To force synchronous behavior pass in 'true' for shouldAwaitSaveSessionQueue */ -export async function saveSession({ shouldAwaitSaveSessionQueue = false }) { +export async function saveSession({ pageNameToLog, shouldAwaitSaveSessionQueue = false }) { var saveSessionPromise; if (store.getters.applicationUser.saveSessionPromise) { // queue newest request after current saveSessionPromise resolves saveSessionPromise = store.getters.applicationUser.saveSessionPromise.then(() => { // get a new saveSessionPromise - return saveSessionHelper(); + return saveSessionHelper(pageNameToLog); }); } else { // create an initial saveSessionPromise - saveSessionPromise = saveSessionHelper(); + saveSessionPromise = saveSessionHelper(pageNameToLog); } store.commit(storeMutations.UPDATE_SAVE_SESSION_PROMISE, saveSessionPromise); // await here to allow for a caller to await and make the function synchronous @@ -83,12 +84,13 @@ async function loadSession( referralDate, parentAccountNumber, referralCorrelationId, - isConceptInsurance + isConceptInsurance, + pageNameToLog ) { // await the saveSessionPromise in the store to make sure we're loading up to date information await store.getters.applicationUser.saveSessionPromise; - const response = await baseMixin.methods.dispatchStoreAction( + const response = await baseMixin.methods.dispatchStoreActionWithLogging( storeActions.LOAD_SESSION, { savedSessionId: savedSessionId?.toString(), @@ -98,6 +100,7 @@ async function loadSession( parentAccountNumber, isConceptInsurance, }, + pageNameToLog, false ); @@ -107,8 +110,12 @@ async function loadSession( /* Encapsulates asynchronous Save Session logic inside a promise to allow for Save Session queuing */ -async function saveSessionHelper() { - const savedSessionInfo = await baseMixin.methods.dispatchStoreAction(storeActions.SAVE_SESSION); +async function saveSessionHelper(pageNameToLog) { + const savedSessionInfo = await baseMixin.methods.dispatchStoreActionWithLogging( + storeActions.SAVE_SESSION, + null, + pageNameToLog + ); // Update the store with information received from the saveSession response await baseMixin.methods.dispatchStoreAction( storeActions.UPDATE_STORE_WITH_SAVE_SESSION_RESPONSE, diff --git a/src/helpers/heritage-integration/order-helper.spec.js b/src/helpers/heritage-integration/order-helper.spec.js index fab4a1532..94e52b1dd 100644 --- a/src/helpers/heritage-integration/order-helper.spec.js +++ b/src/helpers/heritage-integration/order-helper.spec.js @@ -170,11 +170,13 @@ describe("saveSession", () => { const mocks = setupMocksForJsFiles(mockData); // Act - await saveSession({}); + await saveSession({ pageNameToLog: "test" }); // Assert - expect(mocks.baseMixin.methods.dispatchStoreAction).toHaveBeenCalledWith( - storeActions.SAVE_SESSION + expect(mocks.baseMixin.methods.dispatchStoreActionWithLogging).toHaveBeenCalledWith( + storeActions.SAVE_SESSION, + null, + "test" ); expect(mocks.baseMixin.methods.dispatchStoreAction).toHaveBeenCalledWith( storeActions.UPDATE_STORE_WITH_SAVE_SESSION_RESPONSE, @@ -231,7 +233,7 @@ describe("saveSession", () => { setupCookies({ funnelCookieValue: JSON.stringify(testCookieValue) }); // Act - await saveSession({}); + await saveSession({ pageNameToLog: "test" }); // Assert expect(cookieHelper.getFunnelCookie().DidHeritageFunnelUpdateLast).toEqual(false); diff --git a/src/layouts/estimate/estimate.vue b/src/layouts/estimate/estimate.vue index aaaa26fbf..cdd82b1ae 100644 --- a/src/layouts/estimate/estimate.vue +++ b/src/layouts/estimate/estimate.vue @@ -260,6 +260,7 @@ export default { if (vehicleChangedDuringPolicyLookupInHeritage) { navigateToHeritageFunnel({ shouldSaveSession: true, + pageNameToLog: "estimate", loadingModal: this.$refs.loadingModal, }); } else if (this.$store.getters.order.referralNumber?.length === 6) { @@ -287,7 +288,7 @@ export default { ); // call saveSession here - navigateWithSaving saves too late in the flow - await saveSession({}); + await saveSession({ pageNameToLog: "estimate" }); return this.$router.navigateWithSaving( this.navigationScenarios.CLICKED_FORWARD_WITH_NO_QUESTIONS, this.$route diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index 46f573144..8a95d36cd 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -236,6 +236,7 @@ export default { if (payment.isInsurance) { navigateToHeritageFunnel({ shouldSaveSession: true, + pageNameToLog: "quote", loadingModal: this.$refs.loadingModal, }); } else { diff --git a/src/mixins/vehicle-questions-mixin.js b/src/mixins/vehicle-questions-mixin.js index fb54c059f..a1d672cd7 100644 --- a/src/mixins/vehicle-questions-mixin.js +++ b/src/mixins/vehicle-questions-mixin.js @@ -449,11 +449,13 @@ export default { if (store.getters.order.referralNumber?.length === 6) { navigateToHeritageFunnel({ shouldSaveSession: true, + pageNameToLog: this.$options.name, loadingModal: self.$refs.loadingModal, }); } else if (payment.isInsurance && payment.insuranceCoverage.isVerified) { navigateToHeritageFunnel({ shouldSaveSession: true, + pageNameToLog: this.$options.name, loadingModal: self.$refs.loadingModal, }); } else { diff --git a/src/mixins/vin-pages-mixin.js b/src/mixins/vin-pages-mixin.js index dcf96a59c..a0a435000 100644 --- a/src/mixins/vin-pages-mixin.js +++ b/src/mixins/vin-pages-mixin.js @@ -6,13 +6,13 @@ import { saveSession } from "@/helpers/heritage-integration/order-helper.js"; export default { methods: { async navigateForwardWithSingleCarMatch() { + const pageName = this.$options?.name; + // If we have not already saved a session, we need to save one now before the lengthy call to getPartsOrQuestions if (!store.getters.applicationUser.savedSessionId) { - await saveSession({}); + await saveSession({ pageNameToLog: pageName }); } - const pageName = this.$options?.name; - const result = await this.dispatchStoreAction(storeActions.GET_PARTS_OR_QUESTIONS, { pageNameToLog: pageName, }); diff --git a/src/router/index.js b/src/router/index.js index 5ec48f14f..eadf3b9f6 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -72,7 +72,8 @@ const routes = [ ? to.query.isInsurance == "true" ? true : false - : null + : null, + to.query.fmgPage ); const pageToRedirectTo = await getPageToRouteExistingOrderTo(to); @@ -172,7 +173,7 @@ router.afterEach(async (to, from) => { store.getters.applicationUser.savedSessionId || store.getters.order.customer?.emailAddress ) { - await saveSession({}); + await saveSession({ pageNameToLog: to.query.fmgPage }); } } diff --git a/src/store/index.js b/src/store/index.js index 9fbf83399..0f7b06406 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1460,7 +1460,7 @@ export const actions = { }, // Session API Actions - saveSession(context) { + saveSession(context, { pageNameToLog }) { const vehicle = context.getters.vehicle; const damage = context.getters.damage; const order = context.state.order; @@ -1566,6 +1566,8 @@ export const actions = { eon: order.eon, }, }, + logApiCall: true, + pageNameToLog: pageNameToLog, additionalSuccessEventDataHandler: (response) => "Email provided: " + (order.customer.emailAddress ? "true" : "false"), }); @@ -1574,12 +1576,15 @@ export const actions = { loadSession( context, { - savedSessionId, - referralNumber, - referralDate, - parentAccountNumber, - referralCorrelationId, - isConceptInsurance, + payload: { + savedSessionId, + referralNumber, + referralDate, + parentAccountNumber, + referralCorrelationId, + isConceptInsurance, + }, + pageNameToLog, } ) { const order = context.state.order; @@ -1595,6 +1600,8 @@ export const actions = { parentAccountNumber: parentAccountNumber, referralCorrelationId: referralCorrelationId, }, + logApiCall: true, + pageNameToLog: pageNameToLog, }) .then( async (response) => { diff --git a/src/store/store.spec.js b/src/store/store.spec.js index 611341aa7..bdb81279d 100644 --- a/src/store/store.spec.js +++ b/src/store/store.spec.js @@ -763,7 +763,7 @@ describe("Actions", () => { }); // Act - const response = await actions.saveSession(context); + const response = await actions.saveSession(context, { pageNameToLog: "test" }); // Assert expect(response.data).toEqual({ referralNumber: 123 }); @@ -783,7 +783,10 @@ describe("Actions", () => { // Act const response = await actions.loadSession(context, { - savedSessionId: "", + payload: { + savedSessionId: "", + }, + pageNameToLog: "test", }); // Assert @@ -809,7 +812,10 @@ describe("Actions", () => { // Act const response = await actions.loadSession(context, { - savedSessionId: "", + payload: { + savedSessionId: "", + }, + pageNameToLog: "test", }); // Assert @@ -834,7 +840,10 @@ describe("Actions", () => { // Act const response = await actions.loadSession(context, { - savedSessionId: "", + payload: { + savedSessionId: "", + }, + pageNameToLog: "test", }); // Assert