Merge pull request #2623 from Safelite/feature/CASH-365
Pass data to SierraConfig
This commit is contained in:
commit
82f7c8f641
3 changed files with 56 additions and 2 deletions
|
|
@ -4,6 +4,10 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import analyticsMixin from "@/mixins/analytics-mixin";
|
import analyticsMixin from "@/mixins/analytics-mixin";
|
||||||
|
import store from "@/store";
|
||||||
|
import { routeData } from "@/router/constants/routes";
|
||||||
|
import { deepClone } from "@/helpers/object-helper";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "sierraWebchat",
|
name: "sierraWebchat",
|
||||||
mixins: [analyticsMixin],
|
mixins: [analyticsMixin],
|
||||||
|
|
@ -24,7 +28,10 @@ export default {
|
||||||
},
|
},
|
||||||
createSierraConfig() {
|
createSierraConfig() {
|
||||||
return {
|
return {
|
||||||
variables: { application: "funnel" },
|
variables: {
|
||||||
|
application: "funnel",
|
||||||
|
...this.getSierraContext(),
|
||||||
|
},
|
||||||
display: "corner",
|
display: "corner",
|
||||||
onLoad: () => this.openSierraChatModal(),
|
onLoad: () => this.openSierraChatModal(),
|
||||||
onOpen: () => {},
|
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() {
|
launchSierraChat() {
|
||||||
window.sierraConfig = this.createSierraConfig();
|
window.sierraConfig = this.createSierraConfig();
|
||||||
// Preload CSS if not already present
|
// Preload CSS if not already present
|
||||||
|
|
|
||||||
|
|
@ -561,8 +561,12 @@ export default {
|
||||||
skipToInsurance: null,
|
skipToInsurance: null,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
async mounted() {
|
||||||
this.attachCustomEventsForAnalytics();
|
this.attachCustomEventsForAnalytics();
|
||||||
|
|
||||||
|
await this.$nextTick();
|
||||||
|
|
||||||
|
this.$refs?.servicePackage?.savePackageInfoToPageData?.();
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
lineItemsCloneForWatcher() {
|
lineItemsCloneForWatcher() {
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ import {
|
||||||
import { containsRecalParts, getItemsWithoutRecalParts } from "@/helpers/recal-helper";
|
import { containsRecalParts, getItemsWithoutRecalParts } from "@/helpers/recal-helper";
|
||||||
import experimentMixin from "@/mixins/experiment-mixin.js";
|
import experimentMixin from "@/mixins/experiment-mixin.js";
|
||||||
import { experimentSettings } from "@/constants/experiments";
|
import { experimentSettings } from "@/constants/experiments";
|
||||||
|
import { savePageData } from "@/router/methods/helpers/save-page-data";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "servicePackageQuestion",
|
name: "servicePackageQuestion",
|
||||||
|
|
@ -434,6 +435,15 @@ export default {
|
||||||
return null;
|
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: {
|
components: {
|
||||||
buttonQuestion,
|
buttonQuestion,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue