Make theme toggle skip "system" theme

This commit is contained in:
Andrey Antukh 2025-06-03 16:29:06 +02:00
parent d6e0001ac4
commit d2d39aad30
2 changed files with 14 additions and 6 deletions

View File

@ -21,6 +21,7 @@
[app.plugins.register :as plugins.register] [app.plugins.register :as plugins.register]
[app.util.i18n :as i18n :refer [tr]] [app.util.i18n :as i18n :refer [tr]]
[app.util.storage :as storage] [app.util.storage :as storage]
[app.util.theme :as theme]
[beicon.v2.core :as rx] [beicon.v2.core :as rx]
[potok.v2.core :as ptk])) [potok.v2.core :as ptk]))
@ -160,11 +161,12 @@
(update [_ state] (update [_ state]
(update-in state [:profile :theme] (update-in state [:profile :theme]
(fn [current] (fn [current]
(case current (let [current (if (= current "system")
"dark" "light" (theme/get-system-theme)
"light" "system" current)]
"system" "dark" (case current
"default")))) "dark" "light"
"light" "dark")))))
ptk/WatchEvent ptk/WatchEvent
(watch [it state _] (watch [it state _]

View File

@ -16,6 +16,12 @@
(def ^:const default "dark") (def ^:const default "dark")
(defn get-system-theme
[]
(if ^boolean (.-matches color-scheme-media-query)
"dark"
"light"))
(defn- set-color-scheme (defn- set-color-scheme
[^string color] [^string color]
@ -26,7 +32,7 @@
(defn use-initialize (defn use-initialize
[{profile-theme :theme}] [{profile-theme :theme}]
(let [system-theme* (mf/use-state #(if (.-matches color-scheme-media-query) "dark" "light")) (let [system-theme* (mf/use-state get-system-theme)
system-theme (deref system-theme*)] system-theme (deref system-theme*)]
(mf/with-effect [] (mf/with-effect []