Merge pull request #1128 from Safelite/feature/richardson/INSR-8504

Update for going to TPA first
This commit is contained in:
brich1212safe 2026-03-03 15:06:36 -05:00 committed by GitHub
commit 88b6eb6270
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 21 additions and 14 deletions

View file

@ -225,18 +225,24 @@ export default {
async beforeRouteEnter(to, from, next) { async beforeRouteEnter(to, from, next) {
// Call APIs // Call APIs
const cmsContentPromise = fetchCmsContentForPage(to.query.issPage); const cmsContentPromise = fetchCmsContentForPage(to.query.issPage);
const storeServiceLocation = useMainStore().order.serviceLocation; let storeServiceLocation = useMainStore().order.serviceLocation;
let storeSelectedProvider = storeServiceLocation?.provider;
const storeSelectedSchedule = useMainStore().order.schedule;
if (storeSelectedProvider?.providerNumber && !storeSelectedSchedule?.routeCode) {
useMainStore().resetServiceLocationProvider();
storeServiceLocation = useMainStore().order.serviceLocation;
storeSelectedProvider = storeServiceLocation?.provider;
}
const storeSelectedAppointmentType = storeServiceLocation?.appointmentType; const storeSelectedAppointmentType = storeServiceLocation?.appointmentType;
const isMobileAppointment = storeSelectedAppointmentType === AppointmentTypeStrings.MOBILE const isMobileAppointment = storeSelectedAppointmentType === AppointmentTypeStrings.MOBILE
|| storeSelectedAppointmentType === AppointmentTypeStrings.MOBILE_NOT_ITAC_AND_NOT_NOCOMP; || storeSelectedAppointmentType === AppointmentTypeStrings.MOBILE_NOT_ITAC_AND_NOT_NOCOMP;
const storeSelectedProvider = storeServiceLocation?.provider;
const serviceZipCode = storeServiceLocation?.zipCode || useMainStore().order.customer.address.zipCode; const serviceZipCode = storeServiceLocation?.zipCode || useMainStore().order.customer.address.zipCode;
const zipCodeData = getZipCodeData(serviceZipCode); const zipCodeData = getZipCodeData(serviceZipCode);
const mobileFeePartPromise = getPricedMobileFeePart(serviceZipCode); const mobileFeePartPromise = getPricedMobileFeePart(serviceZipCode);
const serviceabilityDetailsPromise = useMainStore().getServiceabilityDetails(serviceZipCode); const serviceabilityDetailsPromise = useMainStore().getServiceabilityDetails(serviceZipCode);
const getGlassFeesPromise = useMainStore().getGlassFees(); const getGlassFeesPromise = useMainStore().getGlassFees();
const providersPromise = useMainStore().getSafeliteProviders(serviceZipCode, 150); const providersPromise = useMainStore().getSafeliteProviders(serviceZipCode, 150);
const premiumFeePromise = useMainStore().getMobilePremiumFee(); const premiumFeePromise = useMainStore().getMobilePremiumFee();
const premiumFeeWithPricePromise = premiumFeePromise.then((result) => { const premiumFeeWithPricePromise = premiumFeePromise.then((result) => {
if (result.data) { if (result.data) {
@ -279,7 +285,7 @@ export default {
// use resultMap to populate layout content. // use resultMap to populate layout content.
const resultMap = await settleAllPromises(promiseResultMap); const resultMap = await settleAllPromises(promiseResultMap);
const providersUnderOneHundredMiles = resultMap.providers?.shopProviders?.filter((provider) => provider.distanceMiles <= 100); const providersUnderOneHundredMiles = resultMap.providers?.shopProviders?.filter((provider) => provider.distanceInMiles <= 100);
const serviceLocationData = { const serviceLocationData = {
defaultMobileZipCode: isMobileAppointment defaultMobileZipCode: isMobileAppointment
? storeServiceLocation?.zipCode ? storeServiceLocation?.zipCode
@ -296,9 +302,9 @@ export default {
useMainStore().updateIsSafeliteProvider(true); useMainStore().updateIsSafeliteProvider(true);
next(async (vm) => { next(async (vm) => {
const foundProviderInFullList = resultMap.providers?.shopProviders const foundProviderInFullList = resultMap.providers?.shopProviders
.find((provider) => provider.providerNumber === storeSelectedProvider?.providerNumber) || resultMap.providers?.shopProviders[0]; .find((provider) => provider.providerNumber === storeSelectedProvider?.providerNumber) || null;
const foundProviderInHundredMiles = providersUnderOneHundredMiles const foundProviderInHundredMiles = providersUnderOneHundredMiles
.find((provider) => provider.providerNumber === storeSelectedProvider?.providerNumber) || providersUnderOneHundredMiles[0]; .find((provider) => provider.providerNumber === storeSelectedProvider?.providerNumber) || null;
if (!foundProviderInHundredMiles && !foundProviderInFullList) { if (!foundProviderInHundredMiles && !foundProviderInFullList) {
if (storeSelectedProvider?.providerNumber && resultMap.providers?.shopProviders) { if (storeSelectedProvider?.providerNumber && resultMap.providers?.shopProviders) {
@ -307,6 +313,7 @@ export default {
} else if (!foundProviderInHundredMiles && foundProviderInFullList) { } else if (!foundProviderInHundredMiles && foundProviderInFullList) {
serviceLocationData.providers?.shopProviders.push(foundProviderInFullList); serviceLocationData.providers?.shopProviders.push(foundProviderInFullList);
} }
const initialServiceLocationObj = { const initialServiceLocationObj = {
mobileProviderNumber: isMobileAppointment mobileProviderNumber: isMobileAppointment
? storeSelectedProvider?.providerNumber ? storeSelectedProvider?.providerNumber

View file

@ -1,11 +1,5 @@
<template> <template>
<div class="service-location"> <div class="service-location">
<alert
v-if="displayRecalibrationWarning"
ref="alertRecalNoMobile"
cmsWidgetName="AlertRecalNoMobileWidget"
alertClass="alert-warning"
@textLinkClicked="openModalAction" />
<alert <alert
v-if="displayBigTruckNoShops" v-if="displayBigTruckNoShops"
ref="alertBigTruckNoShops" ref="alertBigTruckNoShops"
@ -19,6 +13,12 @@
<span <span
v-if="!requiresInshopRecalibration">{{ appointmentQuestionText }}</span> v-if="!requiresInshopRecalibration">{{ appointmentQuestionText }}</span>
</div> </div>
<alert
v-if="displayRecalibrationWarning"
ref="alertRecalNoMobile"
cmsWidgetName="AlertRecalNoMobileWidget"
alertClass="alert-warning"
@textLinkClicked="openModalAction" />
<alert <alert
v-if="displayServiceableInshopOnly" v-if="displayServiceableInshopOnly"
ref="alertInshopOnly" ref="alertInshopOnly"
@ -619,7 +619,7 @@ $page-side-padding: 1.5rem;
} }
} }
div.alert { div.alert {
margin-top: 0.625rem; margin-top: 1.25rem;
&.widget-name-AlertLowAvailabilityInshopWidget { &.widget-name-AlertLowAvailabilityInshopWidget {
@include media-breakpoint-up(xs) { @include media-breakpoint-up(xs) {

View file

@ -1253,7 +1253,7 @@ export const useMainStore = defineStore({
}, },
async getCombinedQuote(availableLineItems) { async getCombinedQuote(availableLineItems) {
if (!availableLineItems || availableLineItems.length === 0) { if (!availableLineItems || availableLineItems.length === 0 || !this.providerNumber) {
return []; return [];
} }