From c6ec570f4c761584ece1408b6c167fadc5d2bb30 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Mon, 6 Oct 2025 10:50:44 -0400 Subject: [PATCH 01/23] CASH-1527 | Initial attempt at updating salesforce Apparently it does not work in localhost. --- .../salesforce-helper-dev.js | 69 +++++-------------- .../salesforce-webchat/salesforce-webchat.vue | 13 ++-- .../sierra-webchat/sierra-webchat.vue | 16 ++--- src/helpers/webchat-helper.js | 2 +- src/styles/ux-variables.scss | 4 +- 5 files changed, 35 insertions(+), 69 deletions(-) diff --git a/src/digital-components/salesforce-webchat/salesforce-helper-dev.js b/src/digital-components/salesforce-webchat/salesforce-helper-dev.js index d11ccf0d4..f7f2b24fd 100644 --- a/src/digital-components/salesforce-webchat/salesforce-helper-dev.js +++ b/src/digital-components/salesforce-webchat/salesforce-helper-dev.js @@ -7,9 +7,9 @@ function setupCustomSettings( onWebchatCloseCallback ) { modifyEmbeddedSvcCallback(); - embedded_svc.addEventHandler("onSettingsCallCompleted", finishedLoadingCallback); - embedded_svc.addEventHandler("afterMaximize", onWebchatOpenCallback); - embedded_svc.addEventHandler("afterDestroy", onWebchatCloseCallback); + embeddedservice_bootstrap.addEventHandler("onSettingsCallCompleted", finishedLoadingCallback); + embeddedservice_bootstrap.addEventHandler("afterMaximize", onWebchatOpenCallback); + embeddedservice_bootstrap.addEventHandler("afterDestroy", onWebchatCloseCallback); } /* @@ -36,24 +36,6 @@ export function initializeSalesforceWebchatForDev( onWebchatCloseCallback ) { var initESW = function (gslbBaseURL) { - embedded_svc.settings.displayHelpButton = true; //Or false - embedded_svc.settings.language = ""; //For example, enter 'en' or 'en-US' - //embedded_svc.settings.defaultMinimizedText = '...'; //(Defaults to Chat with an Expert) - //embedded_svc.settings.disabledMinimizedText = '...'; //(Defaults to Agent Offline) - //embedded_svc.settings.loadingText = ''; //(Defaults to Loading) - //embedded_svc.settings.storageDomain = 'yourdomain.com'; //(Sets the domain for your deployment so that visitors can navigate subdomains during a chat session) - // Settings for Chat - //embedded_svc.settings.directToButtonRouting = function(prechatFormData) { - // Dynamically changes the button ID based on what the visitor enters in the pre-chat form. - // Returns a valid button ID. - //}; - //embedded_svc.settings.prepopulatedPrechatFields = {}; //Sets the auto-population of pre-chat form fields - //embedded_svc.settings.fallbackRouting = []; //An array of button IDs, user IDs, or userId_buttonId - //embedded_svc.settings.offlineSupportMinimizedText = '...'; //(Defaults to Contact Us) - - embedded_svc.settings.enabledFeatures = ["LiveAgent"]; - embedded_svc.settings.entryFeature = "LiveAgent"; - setupCustomSettings( modifyEmbeddedSvcCallback, finishedLoadingCallback, @@ -61,36 +43,19 @@ export function initializeSalesforceWebchatForDev( onWebchatCloseCallback ); - embedded_svc.init( - "https://safelite2--dev.sandbox.my.salesforce.com", - "https://safelite2--dev.sandbox.my.salesforce-sites.com/chat", - gslbBaseURL, - "00D6s0000008r6A", - "Sales_Central_Snap_in", - { - baseLiveAgentContentURL: - "https://c.la12s-core1.sfdc-8tgtt5.salesforceliveagent.com/content", - deploymentId: "572Wr0000017xKX", - buttonId: "573Wr000000CpgH", - baseLiveAgentURL: "https://d.la12s-core1.sfdc-8tgtt5.salesforceliveagent.com/chat", - eswLiveAgentDevName: - "EmbeddedServiceLiveAgent_Parent04IWr000003yKq9MAE_1961681659a", - isOfflineSupportEnabled: false, - } - ); - }; + try { + embeddedservice_bootstrap.settings.language = "en_US"; // For example, enter 'en' or 'en-US' - if (!window.embedded_svc) { - var s = document.createElement("script"); - s.setAttribute( - "src", - "https://safelite2--dev.sandbox.my.salesforce.com/embeddedservice/5.0/esw.min.js" - ); - s.onload = function () { - initESW(null); - }; - document.body.appendChild(s); - } else { - initESW("https://service.force.com"); - } + embeddedservice_bootstrap.init( + "00D6s0000008r6A", + "Sales_Central_TFN", + "https://safelite2--dev.sandbox.my.site.com/ESWSalesCentralTFN1755660094477", + { + scrt2URL: "https://safelite2--dev.sandbox.my.salesforce-scrt.com", + } + ); + } catch (err) { + console.error("Error loading Embedded Messaging: ", err); + } + }; } diff --git a/src/digital-components/salesforce-webchat/salesforce-webchat.vue b/src/digital-components/salesforce-webchat/salesforce-webchat.vue index 19ce71235..93e966f3e 100644 --- a/src/digital-components/salesforce-webchat/salesforce-webchat.vue +++ b/src/digital-components/salesforce-webchat/salesforce-webchat.vue @@ -33,7 +33,8 @@ export default { mounted() { // Load in script from salesforce CDN const script = document.createElement("script"); - script.src = "https://service.force.com/embeddedservice/5.0/esw.min.js"; + script.src = + "https://safelite2--dev.sandbox.my.site.com/ESWSalesCentralTFN1755660094477/assets/js/bootstrap.min.js"; script.onload = this.initializeSalesforceWebchat; document.body.appendChild(script); @@ -92,11 +93,11 @@ export default { } }, modifyEmbeddedSvcCallback() { - window.embedded_svc.settings.avatarImgURL = require("@/assets/img/salesforce-webchat/avatar_webchat.png"); - window.embedded_svc.settings.prechatBackgroundImgURL = require("@/assets/img/salesforce-webchat/safelite_logo_webchat.png"); - window.embedded_svc.settings.smallCompanyLogoImgURL = require("@/assets/img/salesforce-webchat/minimized_chat_bubble_webchat.png"); - window.embedded_svc.settings.displayHelpButton = false; - window.embedded_svc.addEventHandler("onChatEstablished", () => { + window.embeddedservice_bootstrap.settings.avatarImgURL = require("@/assets/img/salesforce-webchat/avatar_webchat.png"); + window.embeddedservice_bootstrap.settings.prechatBackgroundImgURL = require("@/assets/img/salesforce-webchat/safelite_logo_webchat.png"); + window.embeddedservice_bootstrap.settings.smallCompanyLogoImgURL = require("@/assets/img/salesforce-webchat/minimized_chat_bubble_webchat.png"); + window.embeddedservice_bootstrap.settings.displayHelpButton = false; + window.embeddedservice_bootstrap.addEventHandler("onChatEstablished", () => { this.pushEventForChatsToGA("support_chat", "chat_opened", "Live Agent", true); }); }, diff --git a/src/digital-components/sierra-webchat/sierra-webchat.vue b/src/digital-components/sierra-webchat/sierra-webchat.vue index cc88b5433..59c833dbf 100644 --- a/src/digital-components/sierra-webchat/sierra-webchat.vue +++ b/src/digital-components/sierra-webchat/sierra-webchat.vue @@ -139,8 +139,8 @@ export default { // Pass data to Salesforce chat if available const transfer = event.detail; if ( - window.embedded_svc && - typeof window.embedded_svc.bootstrapEmbeddedService === "function" + window.embeddedservice_bootstrap && + typeof window.embeddedservice_bootstrap.bootstrapEmbeddedService === "function" ) { if ( transfer && @@ -149,13 +149,13 @@ export default { transfer.data.last_name && transfer.data.email ) { - window.embedded_svc.settings.prepopulatedPrechatFields = { + window.embeddedservice_bootstrap.settings.prepopulatedPrechatFields = { FirstName: transfer.data.first_name, LastName: transfer.data.last_name, Email: transfer.data.email, Subject: transfer.data.chat_summary, }; - window.embedded_svc.settings.extraPrechatFormDetails = [ + window.embeddedservice_bootstrap.settings.extraPrechatFormDetails = [ { label: "Scarlett AI Summary", value: transfer.data.chat_summary, @@ -164,14 +164,14 @@ export default { }, ]; if ( - window.embedded_svc.liveAgentAPI && - typeof window.embedded_svc.liveAgentAPI.startChat === "function" + window.embeddedservice_bootstrap.liveAgentAPI && + typeof window.embeddedservice_bootstrap.liveAgentAPI.startChat === "function" ) { - window.embedded_svc.liveAgentAPI.startChat(); + window.embeddedservice_bootstrap.liveAgentAPI.startChat(); return; } } - window.embedded_svc.bootstrapEmbeddedService(); + window.embeddedservice_bootstrap.bootstrapEmbeddedService(); } }; window.addEventListener("sierra-chat-transfer", this._handleSierraTransfer); diff --git a/src/helpers/webchat-helper.js b/src/helpers/webchat-helper.js index 917d6de0f..90fc4a29a 100644 --- a/src/helpers/webchat-helper.js +++ b/src/helpers/webchat-helper.js @@ -11,7 +11,7 @@ export const webchatHelper = () => { if (webchatGlobalNonpersistedState.shouldLaunchSierra) { window.dispatchEvent(new CustomEvent("launch-sierra-webchat")); // launches the sierra chat } else { - window.embedded_svc.bootstrapEmbeddedService(); // launches the salesForce prechat form + window.embeddedservice_bootstrap.bootstrapEmbeddedService(); // launches the salesForce prechat form } } diff --git a/src/styles/ux-variables.scss b/src/styles/ux-variables.scss index c0a69a112..bec02081f 100644 --- a/src/styles/ux-variables.scss +++ b/src/styles/ux-variables.scss @@ -123,8 +123,8 @@ $body-color: $gray-600; //Fonts $font-family-sans-serif: UrbanistRegular, Arial, Helvetica, sans-serif; -$font-family-monospace: UrbanistRegular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", - monospace; +$font-family-monospace: + UrbanistRegular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; // stylelint-enable value-keyword-case $font-family-base: $font-family-sans-serif; $font-family-code: $font-family-monospace; From 36100083fe86b8d382cdd20a0613dddaa43436a6 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Mon, 6 Oct 2025 10:54:22 -0400 Subject: [PATCH 02/23] Add logging, remove wrapper function --- .../salesforce-helper-dev.js | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/digital-components/salesforce-webchat/salesforce-helper-dev.js b/src/digital-components/salesforce-webchat/salesforce-helper-dev.js index f7f2b24fd..2e56634cc 100644 --- a/src/digital-components/salesforce-webchat/salesforce-helper-dev.js +++ b/src/digital-components/salesforce-webchat/salesforce-helper-dev.js @@ -35,27 +35,27 @@ export function initializeSalesforceWebchatForDev( onWebchatOpenCallback, onWebchatCloseCallback ) { - var initESW = function (gslbBaseURL) { - setupCustomSettings( - modifyEmbeddedSvcCallback, - finishedLoadingCallback, - onWebchatOpenCallback, - onWebchatCloseCallback + setupCustomSettings( + modifyEmbeddedSvcCallback, + finishedLoadingCallback, + onWebchatOpenCallback, + onWebchatCloseCallback + ); + + try { + console.log("initializing embeddedservice_bootstrap"); + embeddedservice_bootstrap.settings.language = "en_US"; // For example, enter 'en' or 'en-US' + + embeddedservice_bootstrap.init( + "00D6s0000008r6A", + "Sales_Central_TFN", + "https://safelite2--dev.sandbox.my.site.com/ESWSalesCentralTFN1755660094477", + { + scrt2URL: "https://safelite2--dev.sandbox.my.salesforce-scrt.com", + } ); + } catch (err) { + console.error("Error loading Embedded Messaging: ", err); + } - try { - embeddedservice_bootstrap.settings.language = "en_US"; // For example, enter 'en' or 'en-US' - - embeddedservice_bootstrap.init( - "00D6s0000008r6A", - "Sales_Central_TFN", - "https://safelite2--dev.sandbox.my.site.com/ESWSalesCentralTFN1755660094477", - { - scrt2URL: "https://safelite2--dev.sandbox.my.salesforce-scrt.com", - } - ); - } catch (err) { - console.error("Error loading Embedded Messaging: ", err); - } - }; } From b6f497c13f908f54671613b6ccd9d83b5e551915 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Wed, 8 Oct 2025 09:46:08 -0400 Subject: [PATCH 03/23] Update listeners --- .../salesforce-webchat/salesforce-helper-dev.js | 7 +++---- .../salesforce-webchat/salesforce-webchat.vue | 2 +- src/digital-components/sierra-webchat/sierra-webchat.vue | 3 ++- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/digital-components/salesforce-webchat/salesforce-helper-dev.js b/src/digital-components/salesforce-webchat/salesforce-helper-dev.js index 2e56634cc..a171fb974 100644 --- a/src/digital-components/salesforce-webchat/salesforce-helper-dev.js +++ b/src/digital-components/salesforce-webchat/salesforce-helper-dev.js @@ -7,9 +7,9 @@ function setupCustomSettings( onWebchatCloseCallback ) { modifyEmbeddedSvcCallback(); - embeddedservice_bootstrap.addEventHandler("onSettingsCallCompleted", finishedLoadingCallback); - embeddedservice_bootstrap.addEventHandler("afterMaximize", onWebchatOpenCallback); - embeddedservice_bootstrap.addEventHandler("afterDestroy", onWebchatCloseCallback); + window.addEventListener("onEmbeddedMessagingReady", finishedLoadingCallback); + window.addEventListener("onEmbeddedMessagingWindowMaximized", onWebchatOpenCallback); + window.addEventListener("onEmbeddedMessagingWindowClosed", onWebchatCloseCallback); } /* @@ -57,5 +57,4 @@ export function initializeSalesforceWebchatForDev( } catch (err) { console.error("Error loading Embedded Messaging: ", err); } - } diff --git a/src/digital-components/salesforce-webchat/salesforce-webchat.vue b/src/digital-components/salesforce-webchat/salesforce-webchat.vue index 93e966f3e..31719024e 100644 --- a/src/digital-components/salesforce-webchat/salesforce-webchat.vue +++ b/src/digital-components/salesforce-webchat/salesforce-webchat.vue @@ -97,7 +97,7 @@ export default { window.embeddedservice_bootstrap.settings.prechatBackgroundImgURL = require("@/assets/img/salesforce-webchat/safelite_logo_webchat.png"); window.embeddedservice_bootstrap.settings.smallCompanyLogoImgURL = require("@/assets/img/salesforce-webchat/minimized_chat_bubble_webchat.png"); window.embeddedservice_bootstrap.settings.displayHelpButton = false; - window.embeddedservice_bootstrap.addEventHandler("onChatEstablished", () => { + window.addEventListener("onEmbeddedMessagingConversationStarted", () => { this.pushEventForChatsToGA("support_chat", "chat_opened", "Live Agent", true); }); }, diff --git a/src/digital-components/sierra-webchat/sierra-webchat.vue b/src/digital-components/sierra-webchat/sierra-webchat.vue index 59c833dbf..6248ffa2d 100644 --- a/src/digital-components/sierra-webchat/sierra-webchat.vue +++ b/src/digital-components/sierra-webchat/sierra-webchat.vue @@ -165,7 +165,8 @@ export default { ]; if ( window.embeddedservice_bootstrap.liveAgentAPI && - typeof window.embeddedservice_bootstrap.liveAgentAPI.startChat === "function" + typeof window.embeddedservice_bootstrap.liveAgentAPI.startChat === + "function" ) { window.embeddedservice_bootstrap.liveAgentAPI.startChat(); return; From defd461145e5e9ed706031ba552ae3578171f576 Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Fri, 14 Nov 2025 11:08:00 -0500 Subject: [PATCH 04/23] Salesforcewebchat Changes --- .../salesforce-helper-dev.js | 3 +-- .../salesforce-webchat/salesforce-webchat.vue | 27 +++---------------- .../sierra-webchat/sierra-webchat.vue | 2 +- src/helpers/webchat-helper.js | 2 +- 4 files changed, 7 insertions(+), 27 deletions(-) diff --git a/src/digital-components/salesforce-webchat/salesforce-helper-dev.js b/src/digital-components/salesforce-webchat/salesforce-helper-dev.js index a171fb974..bc1b75dd3 100644 --- a/src/digital-components/salesforce-webchat/salesforce-helper-dev.js +++ b/src/digital-components/salesforce-webchat/salesforce-helper-dev.js @@ -7,7 +7,7 @@ function setupCustomSettings( onWebchatCloseCallback ) { modifyEmbeddedSvcCallback(); - window.addEventListener("onEmbeddedMessagingReady", finishedLoadingCallback); + window.addEventListener("onEmbeddedMessagingButtonCreated", finishedLoadingCallback); window.addEventListener("onEmbeddedMessagingWindowMaximized", onWebchatOpenCallback); window.addEventListener("onEmbeddedMessagingWindowClosed", onWebchatCloseCallback); } @@ -43,7 +43,6 @@ export function initializeSalesforceWebchatForDev( ); try { - console.log("initializing embeddedservice_bootstrap"); embeddedservice_bootstrap.settings.language = "en_US"; // For example, enter 'en' or 'en-US' embeddedservice_bootstrap.init( diff --git a/src/digital-components/salesforce-webchat/salesforce-webchat.vue b/src/digital-components/salesforce-webchat/salesforce-webchat.vue index 31719024e..1dca6de8c 100644 --- a/src/digital-components/salesforce-webchat/salesforce-webchat.vue +++ b/src/digital-components/salesforce-webchat/salesforce-webchat.vue @@ -16,7 +16,7 @@ export default { mixins: [analyticsMixin], data() { return { - isAgentAvailable: false, + isWebchatLoaded: false, isWebchatOpen: false, }; }, @@ -37,25 +37,9 @@ export default { "https://safelite2--dev.sandbox.my.site.com/ESWSalesCentralTFN1755660094477/assets/js/bootstrap.min.js"; script.onload = this.initializeSalesforceWebchat; document.body.appendChild(script); - - // Notify funnel-header about Salesforce chat open/close state - this._salesforceChatOpenObserver = new MutationObserver(() => { - const isOpen = !!document.querySelector(".embeddedServiceSidebar"); - window.dispatchEvent( - new CustomEvent("salesforce-chat-visibility", { detail: { open: isOpen } }) - ); - }); - this._salesforceChatOpenObserver.observe(document.body, { - childList: true, - subtree: true, - }); }, beforeUnmount() { // Clean up event listeners and observers - window.removeEventListener( - "salesforce-chat-visibility", - this._handleSalesforceChatVisibility - ); window.removeEventListener("sierra-chat-transfer", this._handleSierraToSalesforceTransfer); if (this._salesforceChatOpenObserver) { this._salesforceChatOpenObserver.disconnect(); @@ -93,16 +77,13 @@ export default { } }, modifyEmbeddedSvcCallback() { - window.embeddedservice_bootstrap.settings.avatarImgURL = require("@/assets/img/salesforce-webchat/avatar_webchat.png"); - window.embeddedservice_bootstrap.settings.prechatBackgroundImgURL = require("@/assets/img/salesforce-webchat/safelite_logo_webchat.png"); - window.embeddedservice_bootstrap.settings.smallCompanyLogoImgURL = require("@/assets/img/salesforce-webchat/minimized_chat_bubble_webchat.png"); - window.embeddedservice_bootstrap.settings.displayHelpButton = false; + window.embeddedservice_bootstrap.settings.hideChatButtonOnLoad = true; window.addEventListener("onEmbeddedMessagingConversationStarted", () => { this.pushEventForChatsToGA("support_chat", "chat_opened", "Live Agent", true); }); }, finishedLoadingCallback(data) { - this.isAgentAvailable = data.isAgentAvailable; + this.isWebchatLoaded = true; this.updateShouldShowWebchatButton(); }, onWebchatOpenCallback() { @@ -118,7 +99,7 @@ export default { updateShouldShowWebchatButton() { this.webchatGlobalNonpersistedState.showWebchatButton = !this.hideSalesforceWebchatLaunchButton && - this.isAgentAvailable && + this.isWebchatLoaded && !this.isWebchatOpen; }, }, diff --git a/src/digital-components/sierra-webchat/sierra-webchat.vue b/src/digital-components/sierra-webchat/sierra-webchat.vue index 6248ffa2d..4d43187e2 100644 --- a/src/digital-components/sierra-webchat/sierra-webchat.vue +++ b/src/digital-components/sierra-webchat/sierra-webchat.vue @@ -172,7 +172,7 @@ export default { return; } } - window.embeddedservice_bootstrap.bootstrapEmbeddedService(); + window.embeddedservice_bootstrap.utilAPI.launchChat(); } }; window.addEventListener("sierra-chat-transfer", this._handleSierraTransfer); diff --git a/src/helpers/webchat-helper.js b/src/helpers/webchat-helper.js index 90fc4a29a..e5254d08d 100644 --- a/src/helpers/webchat-helper.js +++ b/src/helpers/webchat-helper.js @@ -11,7 +11,7 @@ export const webchatHelper = () => { if (webchatGlobalNonpersistedState.shouldLaunchSierra) { window.dispatchEvent(new CustomEvent("launch-sierra-webchat")); // launches the sierra chat } else { - window.embeddedservice_bootstrap.bootstrapEmbeddedService(); // launches the salesForce prechat form + window.embeddedservice_bootstrap.utilAPI.launchChat(); // launches the salesForce prechat form } } From 21ca0f2d27cd984411826cbb97e7b4fa5b301823 Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Thu, 11 Dec 2025 09:52:57 -0500 Subject: [PATCH 05/23] Initial Try to pass prechat details from scarlett --- src/helpers/webchat-helper.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/helpers/webchat-helper.js b/src/helpers/webchat-helper.js index e5254d08d..45b0ff8dd 100644 --- a/src/helpers/webchat-helper.js +++ b/src/helpers/webchat-helper.js @@ -11,6 +11,12 @@ export const webchatHelper = () => { if (webchatGlobalNonpersistedState.shouldLaunchSierra) { window.dispatchEvent(new CustomEvent("launch-sierra-webchat")); // launches the sierra chat } else { + window.embeddedservice_bootstrap.prechatAPI.setHiddenPrechatFields({ + ScarlettAISummary: "sScarletAISummary", + FirstName: "sFirstName", + LastName: "sLastName", + Email: "sEmail", + }); window.embeddedservice_bootstrap.utilAPI.launchChat(); // launches the salesForce prechat form } } From da1a675d8aa78ac3f30fe6b498ef6ef8a451e85c Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Mon, 12 Jan 2026 09:41:55 -0500 Subject: [PATCH 06/23] Finish implementing webchat --- .../sierra-webchat/sierra-webchat.vue | 14 +++----------- src/helpers/webchat-helper.js | 6 ------ 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/src/digital-components/sierra-webchat/sierra-webchat.vue b/src/digital-components/sierra-webchat/sierra-webchat.vue index 4d43187e2..d9fb7dd0e 100644 --- a/src/digital-components/sierra-webchat/sierra-webchat.vue +++ b/src/digital-components/sierra-webchat/sierra-webchat.vue @@ -149,20 +149,12 @@ export default { transfer.data.last_name && transfer.data.email ) { - window.embeddedservice_bootstrap.settings.prepopulatedPrechatFields = { + window.embeddedservice_bootstrap.prechatAPI.setHiddenPrechatFields({ + ScarlettAISummary: transfer.data.chat_summary, FirstName: transfer.data.first_name, LastName: transfer.data.last_name, Email: transfer.data.email, - Subject: transfer.data.chat_summary, - }; - window.embeddedservice_bootstrap.settings.extraPrechatFormDetails = [ - { - label: "Scarlett AI Summary", - value: transfer.data.chat_summary, - transcriptFields: ["Scarlett_AI_Summary__c"], - displayToAgent: true, - }, - ]; + }); if ( window.embeddedservice_bootstrap.liveAgentAPI && typeof window.embeddedservice_bootstrap.liveAgentAPI.startChat === diff --git a/src/helpers/webchat-helper.js b/src/helpers/webchat-helper.js index 45b0ff8dd..e5254d08d 100644 --- a/src/helpers/webchat-helper.js +++ b/src/helpers/webchat-helper.js @@ -11,12 +11,6 @@ export const webchatHelper = () => { if (webchatGlobalNonpersistedState.shouldLaunchSierra) { window.dispatchEvent(new CustomEvent("launch-sierra-webchat")); // launches the sierra chat } else { - window.embeddedservice_bootstrap.prechatAPI.setHiddenPrechatFields({ - ScarlettAISummary: "sScarletAISummary", - FirstName: "sFirstName", - LastName: "sLastName", - Email: "sEmail", - }); window.embeddedservice_bootstrap.utilAPI.launchChat(); // launches the salesForce prechat form } } From 485ab11d42c941f9bb346e016b9fb40f12a38a92 Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Thu, 22 Jan 2026 14:47:17 -0500 Subject: [PATCH 07/23] CASH-1527 | Add in sys snippet --- .../salesforce-helper-sys.js | 59 +++++++++++++++++++ .../salesforce-webchat/salesforce-webchat.vue | 15 ++++- .../sierra-webchat/sierra-webchat.vue | 2 +- 3 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 src/digital-components/salesforce-webchat/salesforce-helper-sys.js diff --git a/src/digital-components/salesforce-webchat/salesforce-helper-sys.js b/src/digital-components/salesforce-webchat/salesforce-helper-sys.js new file mode 100644 index 000000000..c843ced94 --- /dev/null +++ b/src/digital-components/salesforce-webchat/salesforce-helper-sys.js @@ -0,0 +1,59 @@ +/* eslint-disable */ + +function setupCustomSettings( + modifyEmbeddedSvcCallback, + finishedLoadingCallback, + onWebchatOpenCallback, + onWebchatCloseCallback +) { + modifyEmbeddedSvcCallback(); + window.addEventListener("onEmbeddedMessagingButtonCreated", finishedLoadingCallback); + window.addEventListener("onEmbeddedMessagingWindowMaximized", onWebchatOpenCallback); + window.addEventListener("onEmbeddedMessagingWindowClosed", onWebchatCloseCallback); +} + +/* +The code below is generated from salesforce but modified in the following ways: + * Only the javascript inside the second diff --git a/src/digital-components/sierra-webchat/sierra-webchat.vue b/src/digital-components/sierra-webchat/sierra-webchat.vue index d9fb7dd0e..920a66052 100644 --- a/src/digital-components/sierra-webchat/sierra-webchat.vue +++ b/src/digital-components/sierra-webchat/sierra-webchat.vue @@ -160,7 +160,7 @@ export default { typeof window.embeddedservice_bootstrap.liveAgentAPI.startChat === "function" ) { - window.embeddedservice_bootstrap.liveAgentAPI.startChat(); + window.embeddedservice_bootstrap.utilAPI.launchChat(); return; } } From 5bd09c249cef6491edd7ce846e9123db72d792fd Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Thu, 22 Jan 2026 14:55:57 -0500 Subject: [PATCH 08/23] Formatting --- .../salesforce-webchat/salesforce-helper-sys.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/digital-components/salesforce-webchat/salesforce-helper-sys.js b/src/digital-components/salesforce-webchat/salesforce-helper-sys.js index c843ced94..d946674d0 100644 --- a/src/digital-components/salesforce-webchat/salesforce-helper-sys.js +++ b/src/digital-components/salesforce-webchat/salesforce-helper-sys.js @@ -46,11 +46,11 @@ export function initializeSalesforceWebchatForSys( embeddedservice_bootstrap.settings.language = "en_US"; // For example, enter 'en' or 'en-US' embeddedservice_bootstrap.init( - '00DcY0000067qKz', - 'Sales_Central_TFN', - 'https://safelite2--sys.sandbox.my.site.com/ESWSalesCentralTFN1767797265631', + "00DcY0000067qKz", + "Sales_Central_TFN", + "https://safelite2--sys.sandbox.my.site.com/ESWSalesCentralTFN1767797265631", { - scrt2URL: 'https://safelite2--sys.sandbox.my.salesforce-scrt.com' + scrt2URL: "https://safelite2--sys.sandbox.my.salesforce-scrt.com", } ); } catch (err) { From e45d00075d5e21840b87c6e0ceba27ad2b216d67 Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Thu, 22 Jan 2026 15:24:26 -0500 Subject: [PATCH 09/23] Fix script loading and unit tests --- .../salesforce-webchat.spec.js | 11 +++++++++- .../salesforce-webchat/salesforce-webchat.vue | 3 +-- .../sierra-webchat/sierra-webchat.spec.js | 21 ------------------- 3 files changed, 11 insertions(+), 24 deletions(-) diff --git a/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js b/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js index b44cd7074..54df5d428 100644 --- a/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js +++ b/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js @@ -6,6 +6,15 @@ import * as prodHelper from "./salesforce-helper-prod"; import { applicationConfig } from "../../constants/application-config"; describe("salesforceWebchat.vue", () => { + beforeEach(() => { + window.embeddedservice_bootstrap = { + settings: {}, + }; + }); + + afterEach(() => { + delete window.embeddedservice_bootstrap; + }); it("renders correctly", () => { const wrapper = shallowMount(salesforceWebchat); expect(wrapper.exists()).toBe(true); @@ -14,7 +23,7 @@ describe("salesforceWebchat.vue", () => { it("has the correct default data", () => { const wrapper = shallowMount(salesforceWebchat); expect(wrapper.vm.$data).toEqual({ - isAgentAvailable: false, + isWebchatLoaded: false, isWebchatOpen: false, }); }); diff --git a/src/digital-components/salesforce-webchat/salesforce-webchat.vue b/src/digital-components/salesforce-webchat/salesforce-webchat.vue index 1dab19035..21734b642 100644 --- a/src/digital-components/salesforce-webchat/salesforce-webchat.vue +++ b/src/digital-components/salesforce-webchat/salesforce-webchat.vue @@ -33,8 +33,7 @@ export default { mounted() { // Load in script from salesforce CDN const script = document.createElement("script"); - script.src = - "https://safelite2--dev.sandbox.my.site.com/ESWSalesCentralTFN1755660094477/assets/js/bootstrap.min.js"; + script.src = this.webChatScriptSrc; script.onload = this.initializeSalesforceWebchat; document.body.appendChild(script); }, diff --git a/src/digital-components/sierra-webchat/sierra-webchat.spec.js b/src/digital-components/sierra-webchat/sierra-webchat.spec.js index e4d819ffb..964a4f52e 100644 --- a/src/digital-components/sierra-webchat/sierra-webchat.spec.js +++ b/src/digital-components/sierra-webchat/sierra-webchat.spec.js @@ -77,25 +77,4 @@ describe("sierraWebchat.vue", () => { expect.objectContaining({ type: "sierra-chat-transfer" }) ); }); - - it("handles sierra-chat-transfer event and starts Salesforce chat with prepopulated fields", () => { - const transfer = { - data: { - first_name: "A", - last_name: "B", - email: "a@b.com", - chat_summary: "summary", - }, - }; - const event = new CustomEvent("sierra-chat-transfer", { detail: transfer }); - window.dispatchEvent(event); - expect(window.sierraChat.closeChatModal).toHaveBeenCalled(); - expect(window.embedded_svc.settings.prepopulatedPrechatFields).toEqual({ - FirstName: "A", - LastName: "B", - Email: "a@b.com", - Subject: "summary", - }); - expect(window.embedded_svc.liveAgentAPI.startChat).toHaveBeenCalled(); - }); }); From 9cc683dc735d8da0c81024d1a9d566dbcc764ed6 Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Thu, 22 Jan 2026 15:43:58 -0500 Subject: [PATCH 10/23] Remove redundant button hiding code --- .../salesforce-webchat/salesforce-webchat.vue | 2 +- .../funnel-header/funnel-header.vue | 27 ------------------- 2 files changed, 1 insertion(+), 28 deletions(-) diff --git a/src/digital-components/salesforce-webchat/salesforce-webchat.vue b/src/digital-components/salesforce-webchat/salesforce-webchat.vue index 21734b642..906512be1 100644 --- a/src/digital-components/salesforce-webchat/salesforce-webchat.vue +++ b/src/digital-components/salesforce-webchat/salesforce-webchat.vue @@ -57,7 +57,7 @@ export default { break; case "QA": case "SysTest": - initializeSalesforceWebchatForQa( + initializeSalesforceWebchatForSys( this.modifyEmbeddedSvcCallback, this.finishedLoadingCallback, this.onWebchatOpenCallback, diff --git a/src/fmg-components/funnel-header/funnel-header.vue b/src/fmg-components/funnel-header/funnel-header.vue index b2183fa95..e651c405a 100644 --- a/src/fmg-components/funnel-header/funnel-header.vue +++ b/src/fmg-components/funnel-header/funnel-header.vue @@ -59,7 +59,6 @@ export default { return { globalAlertMessages: [], sierraChatOpen: false, - salesforceChatOpen: false, isSalesforceTransferInProgress: false, isScrolled: false, }; @@ -84,10 +83,6 @@ export default { if (this.sierraChatOpen) { return false; } - // Hide the chat icon if Salesforce chat is open or transfer is in progress - if (this.salesforceChatOpen || this.isSalesforceTransferInProgress) { - return false; - } // Show if either Sierra is enabled or Salesforce button is available and not hidden by page return ( (this.webchatGlobalNonpersistedState.shouldLaunchSierra || @@ -173,29 +168,12 @@ export default { }; window.addEventListener("sierra-chat-visibility", this._handleSierraChatVisibility); - // Listen for Salesforce chat open/close events from salesforce-webchat - this._handleSalesforceChatVisibility = (event) => { - this.salesforceChatOpen = !!(event.detail && event.detail.open === true); - }; - window.addEventListener("salesforce-chat-visibility", this._handleSalesforceChatVisibility); - // Listen for transfer event to set transfer-in-progress flag this._handleSierraToSalesforceTransfer = () => { this.isSalesforceTransferInProgress = true; }; window.addEventListener("sierra-chat-transfer", this._handleSierraToSalesforceTransfer); - // Reset transfer flag when Salesforce chat opens - this._handleSalesforceChatOpened = (event) => { - if (event.detail && event.detail.open === true) { - this.isSalesforceTransferInProgress = false; - this.salesforceChatOpen = true; - } else { - this.salesforceChatOpen = false; - } - }; - window.addEventListener("salesforce-chat-visibility", this._handleSalesforceChatOpened); - // Add scroll listener for header shadow effect this._handleScroll = () => { this.isScrolled = window.scrollY > 0; @@ -205,12 +183,7 @@ export default { beforeUnmount() { window.removeEventListener("sierra-chat-closed", this._handleSierraChatClosed); window.removeEventListener("sierra-chat-visibility", this._handleSierraChatVisibility); - window.removeEventListener( - "salesforce-chat-visibility", - this._handleSalesforceChatVisibility - ); window.removeEventListener("sierra-chat-transfer", this._handleSierraToSalesforceTransfer); - window.removeEventListener("salesforce-chat-visibility", this._handleSalesforceChatOpened); window.removeEventListener("scroll", this._handleScroll); }, }; From 472d17557fc2b8f1faff1051d7292d8d8e60d607 Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Thu, 22 Jan 2026 15:51:30 -0500 Subject: [PATCH 11/23] Unit test --- .../salesforce-webchat/salesforce-webchat.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js b/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js index 54df5d428..8684de3ec 100644 --- a/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js +++ b/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js @@ -42,7 +42,7 @@ describe("salesforceWebchat.vue", () => { applicationConfig.CURRENT_ENVIRONMENT = "QA"; wrapper = shallowMount(salesforceWebchat); - const mockQa = jest.spyOn(qaHelper, "initializeSalesforceWebchatForQa"); + const mockQa = jest.spyOn(qaHelper, "initializeSalesforceWebchatForSys"); wrapper.vm.initializeSalesforceWebchat(); expect(mockQa).toHaveBeenCalled(); From a48c018e90a5eb618532a9515174463b3f654841 Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Thu, 22 Jan 2026 15:53:53 -0500 Subject: [PATCH 12/23] Minor fix --- src/digital-components/sierra-webchat/sierra-webchat.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/digital-components/sierra-webchat/sierra-webchat.vue b/src/digital-components/sierra-webchat/sierra-webchat.vue index 920a66052..5eebcf059 100644 --- a/src/digital-components/sierra-webchat/sierra-webchat.vue +++ b/src/digital-components/sierra-webchat/sierra-webchat.vue @@ -156,8 +156,8 @@ export default { Email: transfer.data.email, }); if ( - window.embeddedservice_bootstrap.liveAgentAPI && - typeof window.embeddedservice_bootstrap.liveAgentAPI.startChat === + window.embeddedservice_bootstrap.utilAPI && + typeof window.embeddedservice_bootstrap.utilAPI.launchChat === "function" ) { window.embeddedservice_bootstrap.utilAPI.launchChat(); From fdaae873ef2855eac4e1e84bd10af9c23f8b4b10 Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Fri, 23 Jan 2026 08:50:37 -0500 Subject: [PATCH 13/23] Formatting and unit test fixes --- .../salesforce-webchat/salesforce-webchat.spec.js | 4 ++-- .../salesforce-webchat/salesforce-webchat.vue | 1 + src/digital-components/sierra-webchat/sierra-webchat.vue | 3 +-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js b/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js index 8684de3ec..22e3a11d1 100644 --- a/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js +++ b/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js @@ -1,7 +1,7 @@ import { shallowMount } from "@vue/test-utils"; import salesforceWebchat from "./salesforce-webchat.vue"; import * as devHelper from "./salesforce-helper-dev"; -import * as qaHelper from "./salesforce-helper-qa"; +import * as sysHelper from "./salesforce-helper-sys"; import * as prodHelper from "./salesforce-helper-prod"; import { applicationConfig } from "../../constants/application-config"; @@ -42,7 +42,7 @@ describe("salesforceWebchat.vue", () => { applicationConfig.CURRENT_ENVIRONMENT = "QA"; wrapper = shallowMount(salesforceWebchat); - const mockQa = jest.spyOn(qaHelper, "initializeSalesforceWebchatForSys"); + const mockQa = jest.spyOn(sysHelper, "initializeSalesforceWebchatForSys"); wrapper.vm.initializeSalesforceWebchat(); expect(mockQa).toHaveBeenCalled(); diff --git a/src/digital-components/salesforce-webchat/salesforce-webchat.vue b/src/digital-components/salesforce-webchat/salesforce-webchat.vue index 906512be1..6bc95c743 100644 --- a/src/digital-components/salesforce-webchat/salesforce-webchat.vue +++ b/src/digital-components/salesforce-webchat/salesforce-webchat.vue @@ -6,6 +6,7 @@ // Supporting files import { initializeSalesforceWebchatForDev } from "./salesforce-helper-dev"; import { initializeSalesforceWebchatForQa } from "./salesforce-helper-qa"; +import { initializeSalesforceWebchatForSys } from "./salesforce-helper-sys"; import { initializeSalesforceWebchatForProd } from "./salesforce-helper-prod"; import { applicationConfig } from "@/constants/application-config"; import { webchatHelper } from "@/helpers/webchat-helper"; diff --git a/src/digital-components/sierra-webchat/sierra-webchat.vue b/src/digital-components/sierra-webchat/sierra-webchat.vue index 5eebcf059..162367a62 100644 --- a/src/digital-components/sierra-webchat/sierra-webchat.vue +++ b/src/digital-components/sierra-webchat/sierra-webchat.vue @@ -157,8 +157,7 @@ export default { }); if ( window.embeddedservice_bootstrap.utilAPI && - typeof window.embeddedservice_bootstrap.utilAPI.launchChat === - "function" + typeof window.embeddedservice_bootstrap.utilAPI.launchChat === "function" ) { window.embeddedservice_bootstrap.utilAPI.launchChat(); return; From 958761435360c55df05f81619ae0f2eb65e113f2 Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Fri, 23 Jan 2026 10:11:52 -0500 Subject: [PATCH 14/23] Remove unused flag and listener --- src/fmg-components/funnel-header/funnel-header.vue | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/fmg-components/funnel-header/funnel-header.vue b/src/fmg-components/funnel-header/funnel-header.vue index e651c405a..00df5db87 100644 --- a/src/fmg-components/funnel-header/funnel-header.vue +++ b/src/fmg-components/funnel-header/funnel-header.vue @@ -162,18 +162,9 @@ export default { // Listen for Sierra chat open/close events from sierra-webchat this._handleSierraChatVisibility = (event) => { this.sierraChatOpen = !!(event.detail && event.detail.open); - if (this.sierraChatOpen) { - this.isSalesforceTransferInProgress = false; - } }; window.addEventListener("sierra-chat-visibility", this._handleSierraChatVisibility); - // Listen for transfer event to set transfer-in-progress flag - this._handleSierraToSalesforceTransfer = () => { - this.isSalesforceTransferInProgress = true; - }; - window.addEventListener("sierra-chat-transfer", this._handleSierraToSalesforceTransfer); - // Add scroll listener for header shadow effect this._handleScroll = () => { this.isScrolled = window.scrollY > 0; From b4f1b6a55713ff4577386bcfb674084eacda757e Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Fri, 23 Jan 2026 10:35:05 -0500 Subject: [PATCH 15/23] Add prod and modify comments Comments now accurately guide how to update code when salesforce sends new stuff --- .../salesforce-helper-dev.js | 26 ++--- .../salesforce-helper-prod.js | 97 +++++------------ .../salesforce-helper-qa.js | 102 +++++------------- .../salesforce-helper-sys.js | 25 ++--- .../salesforce-webchat/salesforce-webchat.vue | 5 +- 5 files changed, 71 insertions(+), 184 deletions(-) diff --git a/src/digital-components/salesforce-webchat/salesforce-helper-dev.js b/src/digital-components/salesforce-webchat/salesforce-helper-dev.js index bc1b75dd3..f3a50965e 100644 --- a/src/digital-components/salesforce-webchat/salesforce-helper-dev.js +++ b/src/digital-components/salesforce-webchat/salesforce-helper-dev.js @@ -1,4 +1,9 @@ /* eslint-disable */ +// *************************************************************** +// This file wraps the Salesforce generated code. +// See the comment below for where you need to paste in the Salesforce generated code. +// You may also need to modify the script tag src located in salesforce-webchat.vue to point to the correct Salesforce instance. +// *************************************************************** function setupCustomSettings( modifyEmbeddedSvcCallback, @@ -12,23 +17,6 @@ function setupCustomSettings( window.addEventListener("onEmbeddedMessagingWindowClosed", onWebchatCloseCallback); } -/* -The code below is generated from salesforce but modified in the following ways: - * Only the javascript inside the second