From 5d7abbb2f7efef5cb01778179feb4a0ab28fadeb Mon Sep 17 00:00:00 2001 From: OsamaSayegh Date: Thu, 6 Feb 2025 09:54:24 +0300 Subject: [PATCH] Deprecate discourse-color-scheme-toggle in favor of the core version --- README.md | 6 +-- .../minimized-hook.gjs | 5 +++ .../sidebar-footer-actions/toggler-button.gjs | 5 +++ .../initializers/color-scheme-toggler.gjs | 37 +++++++++++++++++++ 4 files changed, 49 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a9ae405..cebf5cd 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ -# discourse-color-scheme-toggle +# DEPRECATED -Color Scheme Toggler to switch between Dark / Light schemes set by the user's preferences - -This component adds a clickable toggle color scheme button in the hamburger menu. +This feature has been folded into Discourse core under the `interface color selector` site setting. diff --git a/javascripts/discourse/connectors/home-logo-contents__after/minimized-hook.gjs b/javascripts/discourse/connectors/home-logo-contents__after/minimized-hook.gjs index d1195a1..41479f3 100644 --- a/javascripts/discourse/connectors/home-logo-contents__after/minimized-hook.gjs +++ b/javascripts/discourse/connectors/home-logo-contents__after/minimized-hook.gjs @@ -8,6 +8,11 @@ import { } from "../../lib/color-scheme-override"; export default class MinimizedHook extends Component { + static shouldRender(args, helper) { + const coreSelector = helper.siteSettings.interface_color_selector; + return coreSelector === undefined || coreSelector === "disabled"; + } + @service keyValueStore; @action diff --git a/javascripts/discourse/connectors/sidebar-footer-actions/toggler-button.gjs b/javascripts/discourse/connectors/sidebar-footer-actions/toggler-button.gjs index aae1061..13f80e6 100644 --- a/javascripts/discourse/connectors/sidebar-footer-actions/toggler-button.gjs +++ b/javascripts/discourse/connectors/sidebar-footer-actions/toggler-button.gjs @@ -3,6 +3,11 @@ import { service } from "@ember/service"; import ColorSchemeToggler from "../../components/color-scheme-toggler"; export default class TogglerButton extends Component { + static shouldRender(args, helper) { + const coreSelector = helper.siteSettings.interface_color_selector; + return coreSelector === undefined || coreSelector === "disabled"; + } + @service session; @service siteSettings; diff --git a/javascripts/discourse/initializers/color-scheme-toggler.gjs b/javascripts/discourse/initializers/color-scheme-toggler.gjs index 6f9030b..5e9b88f 100644 --- a/javascripts/discourse/initializers/color-scheme-toggler.gjs +++ b/javascripts/discourse/initializers/color-scheme-toggler.gjs @@ -3,6 +3,7 @@ import { later, schedule } from "@ember/runloop"; import { service } from "@ember/service"; import { loadColorSchemeStylesheet } from "discourse/lib/color-scheme-picker"; import { bind } from "discourse/lib/decorators"; +import getURL from "discourse/lib/get-url"; import { withPluginApi } from "discourse/lib/plugin-api"; import { currentThemeId } from "discourse/lib/theme-selector"; import ColorSchemeToggler from "../components/color-scheme-toggler"; @@ -19,6 +20,42 @@ class TogglerInit { constructor(owner) { setOwner(this, owner); + const coreSelector = this.siteSettings.interface_color_selector; + if (coreSelector !== undefined) { + const becomeNoOp = coreSelector !== "disabled"; + + withPluginApi("1.28.0", (api) => { + const currentUser = api.getCurrentUser(); + if (currentUser?.admin) { + const themeId = themePrefix("foo").match( + /theme_translations\.(\d+)\.foo/ + )[1]; + const themeURL = getURL(`/admin/customize/themes/${themeId}`); + const message = becomeNoOp + ? ` + Admin notice: the "Dark-Light Toggle" theme component is still enabled on your site, but it has been superseded by the new core version and doesn't do anything now. Please delete it to prevent potential breakages in the future.` + : ` + Admin notice: you're using the "Dark-Light Toggle" theme component which is now available as a core feature. Please enable the core version via the interface color selector site setting and delete the theme component.`; + + api.addGlobalNotice( + message, + "color-scheme-toggle-component-deprecated", + { + dismissable: true, + level: "warn", + dismissDuration: moment.duration("1", "day"), + } + ); + } + }); + + if (becomeNoOp) { + return; + } + } + const storedOverride = this.keyValueStore.getItem( COLOR_SCHEME_OVERRIDE_KEY );