diff --git a/src/helpers/heritage-integration/navigation-helper.js b/src/helpers/heritage-integration/navigation-helper.js index 127397d9f..a0d3bb92c 100644 --- a/src/helpers/heritage-integration/navigation-helper.js +++ b/src/helpers/heritage-integration/navigation-helper.js @@ -30,7 +30,7 @@ export async function getDirectNavigation(toRoute) { // vehicle -> vehicle-damage // quote -> vin-lookup/estimate // insurance-company -> vin-lookup/estimate - if (store.getters.payment.insuranceCoverage.isVerified) { + if (store.getters.requiresVerifiedRedirecting) { if (fmgPageValue === fmgPageValues.VEHICLE) { return fmgPageValues.VEHICLE_DAMAGE; } @@ -74,7 +74,7 @@ export async function getImplicitNavigation(toRoute) { if (quoteComponent.methods.arePagePrerequisitesValid()) { // Do not send to quote if verified insurance user. - if (store.getters.payment.insuranceCoverage.isVerified) { + if (store.getters.requiresVerifiedRedirecting) { return fmgPageValues.HERITAGE; } else { return fmgPageValues.QUOTE; diff --git a/src/helpers/heritage-integration/navigation-helper.spec.js b/src/helpers/heritage-integration/navigation-helper.spec.js index 1ec4ba233..671a1b46e 100644 --- a/src/helpers/heritage-integration/navigation-helper.spec.js +++ b/src/helpers/heritage-integration/navigation-helper.spec.js @@ -361,6 +361,7 @@ describe("getPageToRouteExistingOrderTo", () => { }; store.commit(storeMutations.UPDATE_IS_VERIFIED_INSURANCE, true); + store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, "666666"); // Act const result = await getPageToRouteExistingOrderTo(toRoute); @@ -379,6 +380,7 @@ describe("getPageToRouteExistingOrderTo", () => { }; store.commit(storeMutations.UPDATE_IS_VERIFIED_INSURANCE, true); + store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, "666666"); store.commit(storeMutations.UPDATE_IS_REPAIR, true); store.commit(storeMutations.UPDATE_MAKE, "acura"); @@ -398,6 +400,7 @@ describe("getPageToRouteExistingOrderTo", () => { }; store.commit(storeMutations.UPDATE_IS_VERIFIED_INSURANCE, true); + store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, "666666"); store.commit(storeMutations.UPDATE_IS_REPAIR, true); store.commit(storeMutations.UPDATE_MAKE, "acura"); @@ -419,6 +422,7 @@ describe("getPageToRouteExistingOrderTo", () => { }; store.commit(storeMutations.UPDATE_IS_VERIFIED_INSURANCE, true); + store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, "666666"); store.commit(storeMutations.UPDATE_IS_REPAIR, false); store.commit(storeMutations.UPDATE_MAKE, "acura"); store.commit(storeMutations.UPDATE_GLASS_TO_REPLACE, [ @@ -441,6 +445,7 @@ describe("getPageToRouteExistingOrderTo", () => { }; store.commit(storeMutations.UPDATE_IS_VERIFIED_INSURANCE, true); + store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, "666666"); store.commit(storeMutations.UPDATE_IS_REPAIR, false); store.commit(storeMutations.UPDATE_MAKE, "acura"); store.commit(storeMutations.UPDATE_GLASS_TO_REPLACE, [ @@ -466,6 +471,7 @@ describe("getPageToRouteExistingOrderTo", () => { }; store.commit(storeMutations.UPDATE_IS_VERIFIED_INSURANCE, false); + store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, "55555"); // Act const result = await getPageToRouteExistingOrderTo(toRoute); @@ -483,6 +489,7 @@ describe("getPageToRouteExistingOrderTo", () => { }; store.commit(storeMutations.UPDATE_IS_VERIFIED_INSURANCE, false); + store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, "55555"); // Act const result = await getPageToRouteExistingOrderTo(toRoute); @@ -500,6 +507,7 @@ describe("getPageToRouteExistingOrderTo", () => { }; store.commit(storeMutations.UPDATE_IS_VERIFIED_INSURANCE, false); + store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, "55555"); // Act const result = await getPageToRouteExistingOrderTo(toRoute); diff --git a/src/layouts/vehicle-damage/vehicle-damage.spec.js b/src/layouts/vehicle-damage/vehicle-damage.spec.js index 1a2939d3d..36f694d5e 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.spec.js +++ b/src/layouts/vehicle-damage/vehicle-damage.spec.js @@ -728,6 +728,7 @@ describe("vehicle-damage.vue", () => { getters: { vehicle: {}, payment: { insuranceCoverage: { isVerified: true } }, + requiresVerifiedRedirecting: true, }, }, }, diff --git a/src/layouts/vehicle-damage/vehicle-damage.vue b/src/layouts/vehicle-damage/vehicle-damage.vue index 3b613ad3a..ec19c3800 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.vue +++ b/src/layouts/vehicle-damage/vehicle-damage.vue @@ -541,7 +541,7 @@ export default { return this.$route.params[this.routerParams.DISPLAY_VEHICLE_CHANGE_ALERT]; }, shouldHideBackButton() { - return this.$store.getters.payment.insuranceCoverage.isVerified; + return this.$store.getters.requiresVerifiedRedirecting; }, }, diff --git a/src/layouts/vehicle/vehicle.vue b/src/layouts/vehicle/vehicle.vue index e4a19d335..82dc54f22 100644 --- a/src/layouts/vehicle/vehicle.vue +++ b/src/layouts/vehicle/vehicle.vue @@ -348,7 +348,7 @@ export default { isDisabled(options) { if ( !options.length || - store.getters.payment?.insuranceCoverage?.isVerified || + store.getters.requiresVerifiedRedirecting || getFunnelCookie()?.HasDelayedClaimRegistration ) { return true; diff --git a/src/layouts/vin-lookup/vin-lookup.spec.js b/src/layouts/vin-lookup/vin-lookup.spec.js index 1d7d3f493..39aa0f008 100644 --- a/src/layouts/vin-lookup/vin-lookup.spec.js +++ b/src/layouts/vin-lookup/vin-lookup.spec.js @@ -22,6 +22,7 @@ jest.mock("@/store", () => ({ customer: { emailAddress: "builddigitaltest@safelite.com", }, + referralNumber: "666666", }, payment: { insuranceCoverage: { diff --git a/src/router/index.js b/src/router/index.js index 90ac5881b..96ed259ef 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -116,6 +116,22 @@ const routes = [ } } + // Reroute around pages that should not be available. + + // Exception 1: Integrated Users should not see vehicle or quote pages. + if (store.getters.requiresVerifiedRedirecting) { + if (to.query.fmgPage === fmgPageValues.VEHICLE) { + to.query.fmgPage = fmgPageValues.VEHICLE_DAMAGE; + } else if ( + to.query.fmgPage === fmgPageValues.QUOTE || + to.query.fmgPage === fmgPageValues.INSURANCE_COMPANY + ) { + // Push to heritage if going to quote & integrated. + await navigateToHeritageFunnel({ shouldSaveSession: false }); + return next(false); + } + } + await runExperiments(to.query.fmgPage); // Process funnel cookie. @@ -228,7 +244,7 @@ router.beforeEach(async (to, from, next) => { // Refresh page if navigating to self to prevent locking. // For now only carved out for vehicle; all modals are opened through anchor tags at the moment, // which also self navigate, but relied on the page remaining the same on self-navigation. - } else if (toQueryPage === fromQueryPage && toQueryPage === funnelStartPageName) { + } else if (toQueryPage === fromQueryPage && toQueryPage === getRedirectedStartPage()) { router.go(0); } else { next(); @@ -477,7 +493,7 @@ async function DisplayPageError() { // we use the pageError querystring as a counter to how many times a user has experienced an error and been routed here. // once they receive more than 1 pageerrors, we'll reset their state to hopefully correct any issues they may be having. var navPage = fmgPageValues.VEHICLE; - if (store.getters.payment.insuranceCoverage.isVerified) { + if (store.getters.requiresVerifiedRedirecting) { navPage = fmgPageValues.VEHICLE_DAMAGE; } @@ -542,4 +558,12 @@ async function runExperiments(nextPage) { ); } +function getRedirectedStartPage() { + if (store.getters.requiresVerifiedRedirecting) { + return fmgPageValues.VEHICLE_DAMAGE; + } else { + return funnelStartPageName; + } +} + export default router; diff --git a/src/store/index.js b/src/store/index.js index 5ffcf5b41..5a153e731 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -776,6 +776,9 @@ export const getters = { } return false; }, + requiresVerifiedRedirecting: (state) => { + return state.order?.referralNumber?.length === 6; + }, }; function getNonFalseValuesOfPropertyInArrayOfObjects(array, propertyName) {