Просмотр исходного кода

fix: sync system theme when the current theme is system theme

Tienson Qin 3 недель назад
Родитель
Сommit
298f349798
2 измененных файлов с 6 добавлено и 5 удалено
  1. 5 4
      src/main/frontend/state.cljs
  2. 1 1
      src/main/mobile/components/settings.cljs

+ 5 - 4
src/main/frontend/state.cljs

@@ -1434,10 +1434,11 @@ Similar to re-frame subscriptions"
 
 (defn sync-system-theme!
   []
-  (let [system-dark? (.-matches (js/window.matchMedia "(prefers-color-scheme: dark)"))]
-    (set-theme-mode! (if system-dark? "dark" "light"))
-    (set-state! :ui/system-theme? true)
-    (storage/set :ui/system-theme? true)))
+  (when (= (:ui/theme @state) "system")
+    (let [system-dark? (.-matches (js/window.matchMedia "(prefers-color-scheme: dark)"))]
+      (set-theme-mode! (if system-dark? "dark" "light"))
+      (set-state! :ui/system-theme? true)
+      (storage/set :ui/system-theme? true))))
 
 (defn use-theme-mode!
   [theme-mode]

+ 1 - 1
src/main/mobile/components/settings.cljs

@@ -47,7 +47,7 @@
    {:value     (name value)
     :class     "text-sm bg-transparent rounded border-none focus:outline-none"
     :on-change (fn [e]
-                 (let [new-value (keyword (.. e -target -value))]
+                 (let [new-value (.. e -target -value)]
                    (on-change new-value)))}
    [:option {:value "system"} "System"]
    [:option {:value "light"}  "Light"]