From b4c4333041fb28c8128e553585ca67dfed88d229 Mon Sep 17 00:00:00 2001 From: Pratik Date: Wed, 22 Jan 2025 16:07:41 +0530 Subject: [PATCH] fix: dark mode switcher --- wiki/public/js/wiki.js | 28 +++-- .../wiki_page/templates/wiki_navbar.html | 113 ++++++++---------- 2 files changed, 70 insertions(+), 71 deletions(-) diff --git a/wiki/public/js/wiki.js b/wiki/public/js/wiki.js index 44f5111e..4a7bd7b1 100644 --- a/wiki/public/js/wiki.js +++ b/wiki/public/js/wiki.js @@ -51,6 +51,18 @@ window.Wiki = class Wiki { } set_darkmode_button() { + function getDarkModeState() { + const isUserPreferenceDarkMode = localStorage.getItem("darkMode"); + const isSystemPreferenceDarkMode = window.matchMedia?.( + "(prefers-color-scheme: dark)" + )?.matches; + const darkModeState = isUserPreferenceDarkMode + ? isUserPreferenceDarkMode == "true" + : isSystemPreferenceDarkMode; + + return darkModeState; + } + function switchBanner() { const altSrc = $(".navbar-brand img").data("alt-src"); const src = $(".navbar-brand img").attr("src"); @@ -63,24 +75,22 @@ window.Wiki = class Wiki { $(".navbar-brand img").data("alt-src", src); } } - localStorage.setItem("darkMode", $("body").hasClass("dark")); - const darkMode = localStorage.getItem("darkMode"); - - if ( - (!("darkMode" in localStorage) && - !window.matchMedia?.("(prefers-color-scheme: dark)")?.matches) || - darkMode === "false" - ) { + + if (getDarkModeState()) { $(".sun-moon-container .feather-sun").removeClass("hide"); + $("body").addClass("dark"); + switchBanner(); } else { $(".sun-moon-container .feather-moon").removeClass("hide"); + $("body").removeClass("dark"); switchBanner(); } $(".sun-moon-container").on("click", function () { $(".sun-moon-container .feather-sun").toggleClass("hide"); $(".sun-moon-container .feather-moon").toggleClass("hide"); - + const currentMode = getDarkModeState(); + localStorage.setItem("darkMode", !currentMode); switchBanner(); $("body").toggleClass("dark"); diff --git a/wiki/wiki/doctype/wiki_page/templates/wiki_navbar.html b/wiki/wiki/doctype/wiki_page/templates/wiki_navbar.html index 2f5be7cd..4eae9ea1 100644 --- a/wiki/wiki/doctype/wiki_page/templates/wiki_navbar.html +++ b/wiki/wiki/doctype/wiki_page/templates/wiki_navbar.html @@ -1,76 +1,65 @@ - - - {% if navbar_search %} -