diff --git a/src/helpers/cms-content-helper.js b/src/helpers/cms-content-helper.js
index 0e6dc209..ae920746 100644
--- a/src/helpers/cms-content-helper.js
+++ b/src/helpers/cms-content-helper.js
@@ -158,14 +158,15 @@ function processWidgetItemForReplacement(widgetModel, key) {
}
function mapStringToModal(str) {
- const startIndex = str.indexOf('{' + dynamicStrings.MODAL_LINK);
+ const startIndex = str.indexOf(`{${dynamicStrings.MODAL_LINK}`);
let linkToReplace = str.substring(startIndex, str.length);
linkToReplace = linkToReplace.substring(0, linkToReplace.indexOf('}') + 1);
const params = linkToReplace.substring((dynamicStrings.MODAL_LINK).length + 2, linkToReplace.length - 1);
const splitParams = params.split(',');
- const bodyText = '';
+ const bodyText
+ = ``;
let returnVal = str.replace(linkToReplace, bodyText);
@@ -176,14 +177,14 @@ function mapStringToModal(str) {
}
function mapStringToLink(str) {
- const startIndex = str.indexOf('{' + dynamicStrings.EXTERNAL_LINK);
+ const startIndex = str.indexOf(`{${dynamicStrings.EXTERNAL_LINK}`);
let linkToReplace = str.substring(startIndex, str.length);
linkToReplace = linkToReplace.substring(0, linkToReplace.indexOf('}') + 1);
const params = linkToReplace.substring((dynamicStrings.EXTERNAL_LINK).length + 2, linkToReplace.length - 1);
const splitParams = params.split(',');
- const bodyText = '' + splitParams[1] + '';
+ const bodyText = `${splitParams[1]}`;
let returnVal = str.replace(linkToReplace, bodyText);
diff --git a/src/layouts/coverage-statement/coverage-statement.vue b/src/layouts/coverage-statement/coverage-statement.vue
index 9368ca9c..f5d16136 100644
--- a/src/layouts/coverage-statement/coverage-statement.vue
+++ b/src/layouts/coverage-statement/coverage-statement.vue
@@ -117,8 +117,6 @@ import globalRules from '@/constants/global-rules.js';
import baseFormMixin from '@/mixins/base-form-mixin.js';
import navigationScenarios from '@/router/router-constants/navigation-scenarios.js';
-const store = useMainStore();
-
export default {
name: 'coverage-statement',
components: {
@@ -137,7 +135,7 @@ export default {
// Call APIs
const cmsContentPromise = fetchCmsContentForPage(to.query.issPage);
- const supportingItemsPromise = await store.getSupportingItems();
+ const supportingItemsPromise = await useMainStore().getSupportingItems();
// Settle promises and get results
const promiseResultMap = [
@@ -152,15 +150,15 @@ export default {
];
const resultMap = await settleAllPromises(promiseResultMap);
- const clonedGlassParts = store.order.lineItems.glassParts
- ? JSON.parse(JSON.stringify(store.order.lineItems.glassParts))
+ const clonedGlassParts = useMainStore().order.lineItems.glassParts
+ ? JSON.parse(JSON.stringify(useMainStore().order.lineItems.glassParts))
: [];
const availableLineItems = [
...resultMap.supportingItems,
...clonedGlassParts
];
- const pricingResults = await store.getPriceOrderItems(availableLineItems);
+ const pricingResults = await useMainStore().getPriceOrderItems(availableLineItems);
// Call the "next" function to complete the transition to this page.
next((vm) => {
@@ -194,24 +192,19 @@ export default {
'BodyText').replaceAll('{custom:costSavings}', this.costSavings);
},
coverageStatementSubHeader() {
- const subheader = this.getSubheaderTextFromCms('SiteSubHeaderWidget');
- return subheader;
+ return this.getSubheaderTextFromCms('SiteSubHeaderWidget');
},
secondaryText() {
- const secondaryText = this.getSecondaryTextFromCms('SiteSubHeaderWidget');
- return secondaryText;
+ return this.getSecondaryTextFromCms('SiteSubHeaderWidget');
},
explanatoryText() {
- const explanatoryText = this.getExplantoryTextFromCms('ExplanatoryTextWidget');
- return explanatoryText;
+ return this.getExplantoryTextFromCms('ExplanatoryTextWidget');
},
nextStepsHeader() {
- const header = this.getHeaderTextFromCms('NextStepsWidget');
- return header;
+ return this.getHeaderTextFromCms('NextStepsWidget');
},
nextStepsBody() {
- const body = this.getBodyTextFromCms('NextStepsWidget').replaceAll('{custom:damage}', this.damageText);
- return body;
+ return this.getBodyTextFromCms('NextStepsWidget').replaceAll('{custom:damage}', this.damageText);
},
continueWithSchedulingBodyText() {
return this.getCmsContent('continueWithSchedulingCopy', 'BodyText');
@@ -230,12 +223,12 @@ export default {
return damageString === 'match' ? '' : damageString;
},
vehicleDeductible() {
- if (store.order.damage.isRepair) {
- const repairDeductible = store.order.policy.deductible.repair;
+ if (useMainStore().order.damage.isRepair) {
+ const repairDeductible = useMainStore().order.policy.deductible.repair;
return repairDeductible;
}
- const replaceDeductible = store.order.policy.deductible.replace;
+ const replaceDeductible = useMainStore().order.policy.deductible.replace;
return replaceDeductible;
},
formattedDeductible() {
@@ -251,7 +244,7 @@ export default {
return useMainStore().payment.insuranceCoverage.isVerified;
},
verifiedNoComp() {
- return this.policyLookupSuccessful ? store.order.policy.noCoverage : false;
+ return this.policyLookupSuccessful ? useMainStore().order.policy.noCoverage : false;
},
verifiedITAC() {
return this.policyLookupSuccessful
@@ -262,7 +255,7 @@ export default {
return !this.verifiedNoComp && this.totalServicePrice >= this.vehicleDeductible;
},
verifiedDeductible() {
- return this.isClaimRegistrationRequired
+ return useMainStore().isClaimRegistrationRequired
? this.registerClaimSuccessful && this.coveredAndServicePriceAboveOrEqualDeductible
: this.policyLookupSuccessful && this.coveredAndServicePriceAboveOrEqualDeductible;
},
@@ -270,11 +263,11 @@ export default {
return !this.verifiedDeductible && !this.verifiedITAC && !this.verifiedNoComp;
},
isADAS() {
- const parts = store.order.lineItems.glassParts;
- return parts != null && parts.find((part) => part.requiresRecalibration);
+ const parts = useMainStore().order.lineItems.glassParts;
+ return parts !== null && !!parts.find((part) => part.requiresRecalibration);
},
isRepair() {
- return store.order.damage.isRepair;
+ return useMainStore().order.damage.isRepair;
},
totalServicePrice() {
let total = 0;
@@ -310,30 +303,22 @@ export default {
}
}
},
- mounted() {
+ async mounted() {
this.$refs.loadingModal.showModal();
setupModalLinks(this);
const vm = this;
if (this.policyLookupSuccessful
&& useMainStore().isClaimRegistrationRequired
&& this.coveredAndServicePriceAboveOrEqualDeductible) {
- useMainStore().registerClaim().then((r) => {
- vm.$refs.loadingModal.hideModal();
- return r;
- }, (r) => {
- vm.$refs.loadingModal.hideModal();
- return r;
+ await useMainStore().registerClaim().catch((e) => {
+ console.log(e);
});
- } else {
- vm.$refs.loadingModal.hideModal();
}
+ vm.$refs.loadingModal.hideModal();
},
methods: {
arePagePrerequisitesValid() {
- if (useMainStore().vehicle.vin) {
- return true;
- }
- return false;
+ return !!useMainStore().vehicle.vin;
},
async forwardButtonAction() {
return this.navigateForward();
@@ -346,13 +331,16 @@ export default {
if (this.selectedProvider === 'Safelite') {
this.$router.navigate(navigationScenarios.CLICKED_FORWARD_WITH_SAFELITE,
this.$route);
- } else if (store.issConfig.enableTPAFlow) {
- this.$router.navigate(navigationScenarios.CLICKED_FORWARD_WITH_THIRD_PARTY,
+ } else if (useMainStore().issConfig.enableTPAFlow) {
+ this.$router.navigate(navigationScenarios.CLICKED_FORWARD_WITH_TPA_ENABLED,
this.$route);
} else {
- this.$router.navigate(navigationScenarios.CLICKED_FORWARD_WITH_BAILOUT,
+ this.$router.navigate(navigationScenarios.CLICKED_FORWARD_WITH_TPA_DISABLED,
this.$route);
}
+ } else {
+ this.$router.navigate(navigationScenarios.CLICKED_FORWARD_WITH_INVALID_STATE,
+ this.$route);
}
},
openModalAction(modalName) {
@@ -415,8 +403,7 @@ export default {
return `$${formattedPriceFloat}`;
},
getITACCostSavings(vehicleDeductible, totalServicePrice) {
- const savings = vehicleDeductible - totalServicePrice;
- return savings;
+ return vehicleDeductible - totalServicePrice;
}
}
};
diff --git a/src/router/router-constants/routing-table.js b/src/router/router-constants/routing-table.js
index 09e34b01..daf2c0a5 100644
--- a/src/router/router-constants/routing-table.js
+++ b/src/router/router-constants/routing-table.js
@@ -429,6 +429,22 @@ const routingTable = function (store) {
{
scenario: navigationScenarios.CLICKED_FORWARD,
destinationIssPageValue: issPageValues.PROVIDER_PREFERENCE
+ },
+ {
+ scenario: navigationScenarios.CLICKED_FORWARD_WITH_SAFELITE,
+ destinationIssPageValue: issPageValues.SERVICE_LOCATION
+ },
+ {
+ scenario: navigationScenarios.CLICKED_FORWARD_WITH_TPA_ENABLED,
+ destinationIssPageValue: issPageValues.TPA_SEARCH
+ },
+ {
+ scenario: navigationScenarios.CLICKED_FORWARD_WITH_TPA_DISABLED,
+ destinationIssPageValue: issPageValues.BAILOUT_PAGE
+ },
+ {
+ scenario: navigationScenarios.CLICKED_FORWARD_WITH_INVALID_STATE,
+ destinationIssPageValue: issPageValues.BAILOUT_PAGE
}
]
},
diff --git a/src/store/index.js b/src/store/index.js
index 5c8eee36..5b0f9f15 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -13,162 +13,146 @@ import { coverageStatuses } from '@/constants/coverage-statuses';
const storeId = 'main';
-const getDefaultState = () =>
- ({
- order: {
- vehicle: {
- year: null,
- make: null,
- model: null,
- style: null,
- carId: null,
- category: null,
- vin: null,
- imageUrl: null,
- imageVifNumber: null,
- imageColor: null,
- registration: {
- licensePlate: null,
- address: null,
- city: null,
- state: null,
- zipCode: null,
- firstName: null,
- lastName: null
- }
- },
- damage: {
- isRepair: null,
- numberOfChips: null,
- glassToReplace: null,
- partQuestionAnswers: null,
- moldingQuestionAnswers: null,
- capabilityQuestionAnswers: null
- },
- policy: {
- policyNumber: null,
- policyZipCode: null,
- dateOfLoss: null,
- damageCause: null,
- damageState: null,
- damageCity: null,
- isDamageGlassOnly: null,
- policyLookupSuccessful: null,
- noCoverage: null,
- deductible: {
- repair: null, // numerical value; how much customer owes on deductible in repair case
- replace: null // numerical value; how much customer owes on deductible in replace case,
- }
- },
- customer: {
- address: {
- streetAddress: null,
- streetAddress2: null,
- city: null,
- state: null,
- zipCode: null
- },
- firstName: null,
- lastName: null,
- emailAddress: null,
- phoneNumber: null
- },
- serviceLocation: {
+const getDefaultState = () => ({
+ order: {
+ vehicle: {
+ year: null,
+ make: null,
+ model: null,
+ style: null,
+ carId: null,
+ category: null,
+ vin: null,
+ imageUrl: null,
+ imageVifNumber: null,
+ imageColor: null,
+ registration: {
+ licensePlate: null,
address: null,
city: null,
state: null,
zipCode: null,
- zipCodeCtu: null
- },
- lineItems: {
- glassParts: null,
- otherParts: null,
- supportingItems: null,
- vaps: null
- },
- payment: {
- isInsurance: true,
- insuranceCoverage: {
- isVerified: false,
- coverageStatus: coverageStatuses.PENDING
- }
- },
- referralNumber: null,
- referralDate: null,
- contactInfo: {
firstName: null,
- lastName: null,
- emailAddress: null,
- phoneNumber: null,
- requestTextUpdates: false,
- notesForTechnician: ''
+ lastName: null
}
},
- applicationUser: {
- experiments: [],
- eventBus: [],
- pageData: {},
- savedSessionTimeout: getDateForSavedSessionTimeout(),
- saveSessionPromise: null,
- savedSessionId: null,
- crmCustomerId: null,
- lastPageVisited: null,
- triggeredSiteEntry: false
+ damage: {
+ isRepair: null,
+ numberOfChips: null,
+ glassToReplace: null,
+ partQuestionAnswers: null,
+ moldingQuestionAnswers: null,
+ capabilityQuestionAnswers: null
},
- issConfig: {
- clientName: 'Generic Insurance', // this is the default and will be overriden by the client's name
- clientDisplayName: 'Generic Insurance', // this is the default and will be overridden by the client's name or client display name.
- styleSheet: '', // Stylesheet used by the client.
- accountNumber: 0, // Account number used by the client.
- isCoverageEnabled: false, // Indicates if we should be calling coverage on this flow.
- isClaimRegistrationRequired: false, // Indicates if the claim registration call needs to be made for a client to complete coverage verification.
- isAuthenticated: false, // Indicates if user is authenticated or not.
- enableTPAFlow: false, // Indicates if the TPA flow is supported for this client.
- successReturnURL: null, // Client URL to return the user to upon a successfull flow completetion (order submission).
- failureReturnURL: null, // Client URL to return the user to when they encounter an error or bailout and are unable to complete the flow.
- disabledFields: { // Fields that are disabled and read only if sent over from a client.
- policyNumber: null,
- policyZipCode: null
+ policy: {
+ policyNumber: null,
+ policyZipCode: null,
+ dateOfLoss: null,
+ damageCause: null,
+ damageState: null,
+ damageCity: null,
+ isDamageGlassOnly: null,
+ policyLookupSuccessful: null,
+ noCoverage: null,
+ deductible: {
+ repair: null, // numerical value; how much customer owes on deductible in repair case
+ replace: null // numerical value; how much customer owes on deductible in replace case,
}
+ },
+ customer: {
+ address: {
+ streetAddress: null,
+ streetAddress2: null,
+ city: null,
+ state: null,
+ zipCode: null
+ },
+ firstName: null,
+ lastName: null,
+ emailAddress: null,
+ phoneNumber: null
+ },
+ serviceLocation: {
+ address: null,
+ city: null,
+ state: null,
+ zipCode: null,
+ zipCodeCtu: null
+ },
+ lineItems: {
+ glassParts: null,
+ otherParts: null,
+ supportingItems: null,
+ vaps: null
+ },
+ payment: {
+ isInsurance: true,
+ insuranceCoverage: {
+ isVerified: false,
+ coverageStatus: coverageStatuses.PENDING
+ }
+ },
+ referralNumber: null,
+ referralDate: null,
+ contactInfo: {
+ firstName: null,
+ lastName: null,
+ emailAddress: null,
+ phoneNumber: null,
+ requestTextUpdates: false,
+ notesForTechnician: ''
}
- });
+ },
+ applicationUser: {
+ experiments: [],
+ eventBus: [],
+ pageData: {},
+ savedSessionTimeout: getDateForSavedSessionTimeout(),
+ saveSessionPromise: null,
+ savedSessionId: null,
+ crmCustomerId: null,
+ lastPageVisited: null,
+ triggeredSiteEntry: false
+ },
+ issConfig: {
+ clientName: 'Generic Insurance', // this is the default and will be overriden by the client's name
+ clientDisplayName: 'Generic Insurance', // this is the default and will be overridden by the client's name or client display name.
+ styleSheet: '', // Stylesheet used by the client.
+ accountNumber: 0, // Account number used by the client.
+ isCoverageEnabled: false, // Indicates if we should be calling coverage on this flow.
+ isClaimRegistrationRequired: false, // Indicates if the claim registration call needs to be made for a client to complete coverage verification.
+ isAuthenticated: false, // Indicates if user is authenticated or not.
+ enableTPAFlow: false, // Indicates if the TPA flow is supported for this client.
+ successReturnURL: null, // Client URL to return the user to upon a successfull flow completetion (order submission).
+ failureReturnURL: null, // Client URL to return the user to when they encounter an error or bailout and are unable to complete the flow.
+ disabledFields: { // Fields that are disabled and read only if sent over from a client.
+ policyNumber: null,
+ policyZipCode: null
+ }
+ }
+});
export const state = getDefaultState();
export const useMainStore = defineStore({
id: storeId,
- state: () =>
- state,
+ state: () => state,
getters: {
- hasRecalibrationPart: (state) =>
- getHasRecalibrationPart(state),
- vehicle: (state) =>
- state.order.vehicle,
- damage: (state) =>
- state.order.damage,
- lineItems: (state) =>
- state.order.lineItems,
- payment: (state) =>
- state.order.payment,
- policy: (state) =>
- state.order.policy,
- hasAnyNonWindshieldGlassParts: (state) =>
- !state.order.policy.isDamageGlassOnly,
- isClaimRegistrationRequired: (state) =>
- state.issConfig.isClaimRegistrationRequired,
- eventBusItem: (state) =>
- (eventCategory, eventSubCategory) => {
- const matchedEvent = state.applicationUser.eventBus.find(({ category, subCategory }) =>
- category === eventCategory && subCategory === eventSubCategory);
- return matchedEvent?.eventValue;
- },
- eventBus: (state) =>
- state.applicationUser.eventBus,
- applicationUserObj: (state) =>
- state.applicationUser,
- pageData: (state) =>
- (page) =>
- state.applicationUser.pageData[page],
+ hasRecalibrationPart: (state) => getHasRecalibrationPart(state),
+ vehicle: (state) => state.order.vehicle,
+ damage: (state) => state.order.damage,
+ lineItems: (state) => state.order.lineItems,
+ payment: (state) => state.order.payment,
+ policy: (state) => state.order.policy,
+ hasAnyNonWindshieldGlassParts: (state) => !state.order.policy.isDamageGlassOnly,
+ isClaimRegistrationRequired: (state) => state.issConfig.isClaimRegistrationRequired,
+ eventBusItem: (state) => (eventCategory, eventSubCategory) => {
+ const matchedEvent = state.applicationUser.eventBus.find(({ category, subCategory }) => category === eventCategory && subCategory === eventSubCategory);
+ return matchedEvent?.eventValue;
+ },
+ eventBus: (state) => state.applicationUser.eventBus,
+ applicationUserObj: (state) => state.applicationUser,
+ pageData: (state) => (page) => state.applicationUser.pageData[page],
customerData: (state) => {
if (state.order.vehicle.registration.address) {
const { registration } = state.order.vehicle;
@@ -196,59 +180,54 @@ export const useMainStore = defineStore({
lastName: state.order.customer.lastName
};
},
- contactInfo: (s) =>
- ({
- firstName: s.order.contactInfo.firstName ?? s.order.customer.firstName,
- lastName: s.order.contactInfo.lastName ?? s.order.customer.lastName,
- emailAddress: s.order.contactInfo.emailAddress ?? s.order.customer.emailAddress,
- phoneNumber: s.order.contactInfo.phoneNumber ?? s.order.customer.phoneNumber,
- requestTextUpdates: s.order.contactInfo.requestTextUpdates ?? false,
- notesForTechnician: s.order.contactInfo.notesForTechnician
- }),
- experimentOrder: (state) =>
- ({
- issVehicleYear: state.order.vehicle.year,
- issVehicleMake: state.order.vehicle.make,
- issVehicleModel: state.order.vehicle.model,
- issVehicleStyle: state.order.vehicle.style,
- issIsRepair: state.order.damage.isRepair,
- issNumberOfChips: state.order.damage.numberOfChips,
- issCarId: state.order.vehicle.carId,
- issServiceCity: state.order.serviceLocation.city,
- issServiceState: state.order.serviceLocation.state,
- issServiceZipCode: state.order.serviceLocation.zipCode,
- issParentAccountNumber: state.order.accountNumber,
- issIsCoverageVerified: state.order.payment.insuranceCoverage.isVerified,
- issHasRecalibrationPart: getHasRecalibrationPart(state),
- issSelectedMultiGlass: state.order.damage.glassToReplace?.length > 1,
- issSelectedWindshieldGlass: getNonFalseValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace,
- 'glassLocation').includes(damageLocationsSelected.WINDSHIELD),
- issSelectedBackGlass: getNonFalseValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace,
- 'glassLocation').includes(damageLocationsSelected.REAR),
- issSelectedDriverSideGlass: getNonFalseValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace,
- 'glassLocation').includes(damageLocationsSelected.DRIVER),
- issSelectedPassengerSideGlass: getNonFalseValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace,
- 'glassLocation').includes(damageLocationsSelected.PASSENGER),
- issOrderPartNumbers: [
- ...getNonFalseValuesOfPropertyInArrayOfObjects(state.order.lineItems.glassParts,
- 'partNumber'),
- ...getNonFalseValuesOfPropertyInArrayOfObjects(state.order.lineItems.otherParts,
- 'partNumber')
- ],
+ contactInfo: (s) => ({
+ firstName: s.order.contactInfo.firstName ?? s.order.customer.firstName,
+ lastName: s.order.contactInfo.lastName ?? s.order.customer.lastName,
+ emailAddress: s.order.contactInfo.emailAddress ?? s.order.customer.emailAddress,
+ phoneNumber: s.order.contactInfo.phoneNumber ?? s.order.customer.phoneNumber,
+ requestTextUpdates: s.order.contactInfo.requestTextUpdates ?? false,
+ notesForTechnician: s.order.contactInfo.notesForTechnician
+ }),
+ experimentOrder: (state) => ({
+ issVehicleYear: state.order.vehicle.year,
+ issVehicleMake: state.order.vehicle.make,
+ issVehicleModel: state.order.vehicle.model,
+ issVehicleStyle: state.order.vehicle.style,
+ issIsRepair: state.order.damage.isRepair,
+ issNumberOfChips: state.order.damage.numberOfChips,
+ issCarId: state.order.vehicle.carId,
+ issServiceCity: state.order.serviceLocation.city,
+ issServiceState: state.order.serviceLocation.state,
+ issServiceZipCode: state.order.serviceLocation.zipCode,
+ issParentAccountNumber: state.order.accountNumber,
+ issIsCoverageVerified: state.order.payment.insuranceCoverage.isVerified,
+ issHasRecalibrationPart: getHasRecalibrationPart(state),
+ issSelectedMultiGlass: state.order.damage.glassToReplace?.length > 1,
+ issSelectedWindshieldGlass: getNonFalseValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace,
+ 'glassLocation').includes(damageLocationsSelected.WINDSHIELD),
+ issSelectedBackGlass: getNonFalseValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace,
+ 'glassLocation').includes(damageLocationsSelected.REAR),
+ issSelectedDriverSideGlass: getNonFalseValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace,
+ 'glassLocation').includes(damageLocationsSelected.DRIVER),
+ issSelectedPassengerSideGlass: getNonFalseValuesOfPropertyInArrayOfObjects(state.order.damage.glassToReplace,
+ 'glassLocation').includes(damageLocationsSelected.PASSENGER),
+ issOrderPartNumbers: [
+ ...getNonFalseValuesOfPropertyInArrayOfObjects(state.order.lineItems.glassParts,
+ 'partNumber'),
+ ...getNonFalseValuesOfPropertyInArrayOfObjects(state.order.lineItems.otherParts,
+ 'partNumber')
+ ],
- issOrderPartTypes: [
- ...getNonFalseValuesOfPropertyInArrayOfObjects(state.order.lineItems.glassParts,
- 'recalibrationType'),
- ...getNonFalseValuesOfPropertyInArrayOfObjects(state.order.lineItems.otherParts,
- 'recalibrationType')
- ]
- }),
- experimentSettings: (state) =>
- state.applicationUser.experiments
- .map((x) =>
- x.settings)
- .reduce((r, c) =>
- Object.assign(r, c), {}) ?? {}
+ issOrderPartTypes: [
+ ...getNonFalseValuesOfPropertyInArrayOfObjects(state.order.lineItems.glassParts,
+ 'recalibrationType'),
+ ...getNonFalseValuesOfPropertyInArrayOfObjects(state.order.lineItems.otherParts,
+ 'recalibrationType')
+ ]
+ }),
+ experimentSettings: (state) => state.applicationUser.experiments
+ .map((x) => x.settings)
+ .reduce((r, c) => Object.assign(r, c), {}) ?? {}
},
actions:
{
@@ -448,7 +427,7 @@ export const useMainStore = defineStore({
}, (error) => {
this.order.payment.insuranceCoverage.isVerified = false;
this.order.payment.insuranceCoverage.coverageStatus = coverageStatuses.PENDING;
- return reject(error.response);
+ return reject(error);
});
});
},
@@ -549,12 +528,10 @@ export const useMainStore = defineStore({
getPartFromCapabilityQuestionAnswer(glassLocation) {
const pageData = this.pageData(issPageValues.CAPABILITY_QUESTIONS);
- const part = pageData.partsOrQuestions.find((x) =>
- x.glassLocation === glassLocation)
+ const part = pageData.partsOrQuestions.find((x) => x.glassLocation === glassLocation)
.parts[0];
const { capabilityQuestionAnswers } = this.order.damage;
- const capabilityQuestionAnswersForPart = capabilityQuestionAnswers.find((x) =>
- x.glassLocation === glassLocation);
+ const capabilityQuestionAnswersForPart = capabilityQuestionAnswers.find((x) => x.glassLocation === glassLocation);
return globalMethods.callHttpClient({
method: endpoints.GetPartFromCapabilityAnswer.method,
@@ -654,10 +631,9 @@ export const useMainStore = defineStore({
},
getServiceabilityDetails({ serviceZipCode }) {
- const lineItemsWithOnlyPartNumbers = this.order.lineItems.glassParts.map((glassPart) =>
- ({
- partNumber: glassPart.partNumber
- }));
+ const lineItemsWithOnlyPartNumbers = this.order.lineItems.glassParts.map((glassPart) => ({
+ partNumber: glassPart.partNumber
+ }));
const lineItems = buildQueryStringParameterFromArrayOfComplexObjects(lineItemsWithOnlyPartNumbers,
'lineItems');
@@ -705,8 +681,7 @@ export const useMainStore = defineStore({
&& this.order.damage.glassToReplace
.slice()
.sort()
- .every((obj, index) =>
- obj.glassLocation === selectedGlassPassedInSorted[index].glassLocation
+ .every((obj, index) => obj.glassLocation === selectedGlassPassedInSorted[index].glassLocation
&& obj.glassName === selectedGlassPassedInSorted[index].glassName);
const isWindshieldRepairTheSame
= isWindshieldRepair === this.order.damage.isRepair;
@@ -955,8 +930,7 @@ export const useMainStore = defineStore({
'result');
const havePartQuestionAnswersChanged
= sortedPreviousResultsArray?.length !== sortedPartQuestionAnswersArray.length
- || !sortedPreviousResultsArray?.every((x, i) =>
- x.result === sortedPartQuestionAnswersArray[i].result);
+ || !sortedPreviousResultsArray?.every((x, i) => x.result === sortedPartQuestionAnswersArray[i].result);
if (havePartQuestionAnswersChanged) {
this.updateGlassParts(null);
@@ -980,8 +954,7 @@ export const useMainStore = defineStore({
'result');
const haveMoldingQuestionAnswersChanged
= sortedPreviousResultsArray?.length !== sortedMoldingQuestionAnswersArray.length
- || !sortedPreviousResultsArray?.every((x, i) =>
- x.result === sortedMoldingQuestionAnswersArray[i].result);
+ || !sortedPreviousResultsArray?.every((x, i) => x.result === sortedMoldingQuestionAnswersArray[i].result);
if (haveMoldingQuestionAnswersChanged) {
this.updateGlassParts(null);
@@ -1001,8 +974,7 @@ export const useMainStore = defineStore({
'result');
const haveCapabilityQuestionAnswersChanged
= sortedPreviousResultsArray?.length !== sortedCapabilityQuestionAnswersArray.length
- || !sortedPreviousResultsArray?.every((x, i) =>
- x.result === sortedCapabilityQuestionAnswersArray[i].result);
+ || !sortedPreviousResultsArray?.every((x, i) => x.result === sortedCapabilityQuestionAnswersArray[i].result);
if (haveCapabilityQuestionAnswersChanged) {
this.updateGlassParts(null);
@@ -1028,8 +1000,7 @@ export const useMainStore = defineStore({
this.applicationUser.eventBus.push(event);
},
removeEventFromBus(eventData) {
- const matchedEvent = this.applicationUser.eventBus.find(({ category, subCategory }) =>
- category === eventData.category && subCategory === eventData.subCategory);
+ const matchedEvent = this.applicationUser.eventBus.find(({ category, subCategory }) => category === eventData.category && subCategory === eventData.subCategory);
const itemIndex = this.applicationUser.eventBus.indexOf(matchedEvent);
// If the item exists, remove it.
@@ -1087,11 +1058,10 @@ export const useMainStore = defineStore({
endpoint: endpoints.LogPageView.url,
payload,
logApiCall: false
- }).then((response) =>
- response,
- (error) => {
- console.log(`Analytics Service Error: ${error.data}`);
- });
+ }).then((response) => response,
+ (error) => {
+ console.log(`Analytics Service Error: ${error.data}`);
+ });
},
logCustomEvent({ userId, sessionKey, pageName, sessionId, category, action, label, value, shouldUseSessionId, experimentsForUser }) {
if (pageName == null || pageName.length === 0) { pageName = 'none'; }
@@ -1115,11 +1085,10 @@ export const useMainStore = defineStore({
endpoint: endpoints.LogCustomEvent.url,
payload,
logApiCall: false
- }).then((response) =>
- response,
- (error) => {
- console.log(`Analytics Service Error: ${error.data}`);
- });
+ }).then((response) => response,
+ (error) => {
+ console.log(`Analytics Service Error: ${error.data}`);
+ });
},
initializeSession({ userId, sessionId, userAgent, referrer }) {
const payload = {
@@ -1138,11 +1107,10 @@ export const useMainStore = defineStore({
endpoint: endpoints.InitializeSession.url,
payload,
logApiCall: false
- }).then((response) =>
- response,
- (error) => {
- console.log(`Analytics Service Error: ${error.data}`);
- });
+ }).then((response) => response,
+ (error) => {
+ console.log(`Analytics Service Error: ${error.data}`);
+ });
},
updateLastPageVisited(lastPageVisited) {
@@ -1339,9 +1307,7 @@ function getHasRecalibrationPart(state) {
}
function getNonFalseValuesOfPropertyInArrayOfObjects(array, propertyName) {
- return (array ?? []).map((x) =>
- x[propertyName]).filter((x) =>
- x);
+ return (array ?? []).map((x) => x[propertyName]).filter((x) => x);
}
function sortArrayOfObjectsByPropertyValue(arrayOfObjects, propertyName) {
@@ -1401,8 +1367,7 @@ function addPricesToLineItems(lineItems, pricingLineItems) {
addPricesToLineItems(lineItem.childParts, pricingLineItems);
}
- const lineItemIndex = pricingLineItems.findIndex((pricingLineItem) =>
- pricingLineItem.partNumber === lineItem.partNumber);
+ const lineItemIndex = pricingLineItems.findIndex((pricingLineItem) => pricingLineItem.partNumber === lineItem.partNumber);
if (lineItemIndex > -1) {
const pricedLineItem = pricingLineItems[lineItemIndex];
diff --git a/src/store/store.spec.js b/src/store/store.spec.js
index aa4a6b5d..369d387e 100644
--- a/src/store/store.spec.js
+++ b/src/store/store.spec.js
@@ -405,10 +405,14 @@ describe('Store', () => {
it('Call to client returns exception, resulting in object with error property being returned', async () => {
// Arrange
- globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.reject());
+ expect.assertions(4);
+ const error = 'this is the error';
+ globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.reject(error));
// Act
- await store.registerClaim();
+ await store.registerClaim().catch((e) => {
+ expect(e).toEqual(error);
+ });
// Asserts
expect(globalMethods.callHttpClient).toHaveBeenCalled();
diff --git a/src/styles/common-styles.scss b/src/styles/common-styles.scss
index b9f8bafe..af6db312 100644
--- a/src/styles/common-styles.scss
+++ b/src/styles/common-styles.scss
@@ -71,7 +71,6 @@ body {
border: none;
background-color: inherit;
padding: 0;
- text-underline-offset: 5px;
font-size: 14px;
line-height: 24px;
font-weight: 500;