/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* eslint-env mozilla/remote-page */ import { html } from "chrome://global/content/vendor/lit.all.mjs"; import { MozLitElement } from "chrome://global/content/lit-utils.mjs"; // eslint-disable-next-line import/no-unassigned-import import "chrome://global/content/elements/moz-toggle.mjs"; class ShoppingSettings extends MozLitElement { static properties = { adsEnabled: { type: Boolean }, adsEnabledByUser: { type: Boolean }, autoOpenEnabled: { type: Boolean }, autoOpenEnabledByUser: { type: Boolean }, hostname: { type: String }, }; static get queries() { return { wrapperEl: "#shopping-settings-wrapper", recommendationsToggleEl: "#shopping-settings-recommendations-toggle", autoOpenToggleEl: "#shopping-settings-auto-open-toggle", autoOpenToggleDescriptionEl: "#shopping-auto-open-description", dividerEl: ".divider", sidebarEnabledStateEl: "#shopping-settings-sidebar-enabled-state", optOutButtonEl: "#shopping-settings-opt-out-button", shoppingCardEl: "shopping-card", adsLearnMoreLinkEl: "#shopping-ads-learn-more-link", fakespotLearnMoreLinkEl: "#powered-by-fakespot-link", }; } onToggleRecommendations() { this.adsEnabledByUser = this.recommendationsToggleEl.pressed; let action = this.adsEnabledByUser ? "enabled" : "disabled"; Glean.shopping.surfaceAdsSettingToggled.record({ action }); RPMSetPref( "browser.shopping.experience2023.ads.userEnabled", this.adsEnabledByUser ); } onToggleAutoOpen() { this.autoOpenEnabledByUser = this.autoOpenToggleEl.pressed; let action = this.autoOpenEnabledByUser ? "enabled" : "disabled"; Glean.shopping.surfaceAutoOpenSettingToggled.record({ action }); RPMSetPref( "browser.shopping.experience2023.autoOpen.userEnabled", this.autoOpenEnabledByUser ); if (!this.autoOpenEnabledByUser) { RPMSetPref("browser.shopping.experience2023.active", false); } } onDisableShopping() { window.dispatchEvent( new CustomEvent("DisableShopping", { bubbles: true, composed: true }) ); Glean.shopping.surfaceOptOutButtonClicked.record(); } fakespotLinkClicked(e) { if (e.target.localName == "a" && e.button == 0) { Glean.shopping.surfacePoweredByFakespotLinkClicked.record(); } } render() { // Whether we show recommendations at all (including offering a user // control for them) is controlled via a nimbus-enabled pref. let canShowRecommendationToggle = this.adsEnabled; let adsToggleMarkup = canShowRecommendationToggle ? html`
` : null; /* Auto-open experiment changes how the settings card appears by: * 1. Showing a new toggle for enabling/disabling auto-open behaviour * 2. Adding a divider between the toggles and opt-out button * 3. Showing text indicating that Review Checker is enabled (not opted-out) above the opt-out button * * Only show if `browser.shopping.experience2023.autoOpen.enabled` is true. */ let autoOpenDescriptionL10nId; let autoOpenDescriptionL10nArgs; switch (this.hostname) { case "www.amazon.fr": case "www.amazon.de": autoOpenDescriptionL10nId = "shopping-settings-auto-open-description-single-site"; autoOpenDescriptionL10nArgs = { currentSite: "Amazon", }; break; default: autoOpenDescriptionL10nId = "shopping-settings-auto-open-description-three-sites"; autoOpenDescriptionL10nArgs = { firstSite: "Amazon", secondSite: "Best Buy", thirdSite: "Walmart", }; } let autoOpenToggleMarkup = this.autoOpenEnabled ? html`
` : null; return html`
${adsToggleMarkup} ${autoOpenToggleMarkup}
${this.autoOpenEnabled ? html`` : null}
${this.autoOpenEnabled ? html`` : null}

`; } } customElements.define("shopping-settings", ShoppingSettings);