Merge pull request #2623 from Safelite/feature/CASH-365

Pass data to SierraConfig
This commit is contained in:
chloeherdsafelite 2025-07-08 15:50:07 -04:00 committed by Scott Kiener
parent 45f6a53549
commit 39f0db4a5f
3 changed files with 56 additions and 2 deletions

View file

@ -4,6 +4,10 @@
<script>
import analyticsMixin from "@/mixins/analytics-mixin";
import store from "@/store";
import { routeData } from "@/router/constants/routes";
import { deepClone } from "@/helpers/object-helper";
export default {
name: "sierraWebchat",
mixins: [analyticsMixin],
@ -24,7 +28,10 @@ export default {
},
createSierraConfig() {
return {
variables: { application: "funnel" },
variables: {
application: "funnel",
...this.getSierraContext(),
},
display: "corner",
onLoad: () => this.openSierraChatModal(),
onOpen: () => {},
@ -35,6 +42,39 @@ export default {
),
};
},
getSierraContext() {
const glassDamage = store.getters?.order?.damage?.glassToReplace;
const glassType =
glassDamage && glassDamage.length > 0
? glassDamage.length > 1
? "Multiglass"
: glassDamage[0].glassType // todo: clarify?
: "";
const damageType = store.getters.order?.damage?.isRepair ? "repair" : "replace";
const paymentType = store.getters.oreder?.payment?.isInsurance ? "insurance" : "cash";
const glassParts = store.getters.order?.lineItems?.glassParts;
const partId = glassParts && glassParts.length > 0 ? glassParts[0].partId : "";
const packageData = deepClone(store.getters?.pageData(routeData.QUOTE.name));
return {
current_page: this.pageName,
vehicle_year: store.getters.order?.vehicle?.year ?? "",
vehicle_make: store.getters.order?.vehicle?.make ?? "",
vehicle_model: store.getters.order?.vehicle?.model ?? "",
vehicle_style: store.getters.order?.vehicle?.style ?? "",
service_zip: store.getters.order?.serviceLocation?.serviceZip ?? "",
glass_type: glassType ?? "",
damage_type: damageType ?? "",
payment_type: paymentType ?? "",
quote: packageData ?? [],
part_id: partId ?? "",
recalibration: store.getters?.isRecalibrationOnOrder ?? "",
};
},
launchSierraChat() {
window.sierraConfig = this.createSierraConfig();
// Preload CSS if not already present

View file

@ -561,8 +561,12 @@ export default {
skipToInsurance: null,
};
},
mounted() {
async mounted() {
this.attachCustomEventsForAnalytics();
await this.$nextTick();
this.$refs?.servicePackage?.savePackageInfoToPageData?.();
},
computed: {
lineItemsCloneForWatcher() {

View file

@ -44,6 +44,7 @@ import {
import { containsRecalParts, getItemsWithoutRecalParts } from "@/helpers/recal-helper";
import experimentMixin from "@/mixins/experiment-mixin.js";
import { experimentSettings } from "@/constants/experiments";
import { savePageData } from "@/router/methods/helpers/save-page-data";
export default {
name: "servicePackageQuestion",
@ -434,6 +435,15 @@ export default {
return null;
}
},
async savePackageInfoToPageData() {
const answers = this.servicePackageAnswers;
const toLog = answers.map((ans) => ({
packageName: ans.buttonLabel,
price: ans.buttonAuxillaryCopy,
}));
await savePageData(this.pageName, toLog);
},
},
components: {
buttonQuestion,