fix(mobile): incorrect theme color for the android status bar

pull/11174/head^2
charlie 2024-04-27 15:49:33 +08:00 committed by Andelf
parent e6173e8810
commit 7ba72aee75
1 changed files with 14 additions and 13 deletions

View File

@ -208,7 +208,7 @@
(defn- get-computed-bg-color
[]
;; window.getComputedStyle(document.body, null).getPropertyValue('background-color');
(let [styles (js/window.getComputedStyle (js/document.querySelector "#app-container"))
(let [styles (js/window.getComputedStyle js/document.body)
bg-color (gobj/get styles "background-color")
;; convert rgb(r,g,b) to #rrggbb
rgb2hex (fn [rgb]
@ -219,9 +219,9 @@
%))
(string/join)
(str "#")))]
(when (string/starts-with? bg-color "rgb(")
(when (string/starts-with? bg-color "rgb")
(let [rgb (-> bg-color
(string/replace #"^rgb\(" "")
(string/replace #"^rgb[^\d]+" "")
(string/replace #"\)$" "")
(string/split #","))
rgb (take 3 rgb)]
@ -231,26 +231,27 @@
#?(:cljs
(defn set-android-theme
[]
(when (mobile-util/native-android?)
(when-let [bg-color (try (get-computed-bg-color)
(catch :default _
nil))]
(.setNavigationBarColor NavigationBar (clj->js {:color bg-color}))
(.setBackgroundColor StatusBar (clj->js {:color bg-color}))))))
(let [f #(when (mobile-util/native-android?)
(when-let [bg-color (try (get-computed-bg-color)
(catch :default _
nil))]
(.setNavigationBarColor NavigationBar (clj->js {:color bg-color}))
(.setBackgroundColor StatusBar (clj->js {:color bg-color}))))]
(js/setTimeout f 32))))
#?(:cljs
(defn set-theme-light
[]
(p/do!
(.setStyle StatusBar (clj->js {:style (.-Light Style)}))
(set-android-theme))))
(.setStyle StatusBar (clj->js {:style (.-Light Style)}))
(set-android-theme))))
#?(:cljs
(defn set-theme-dark
[]
(p/do!
(.setStyle StatusBar (clj->js {:style (.-Dark Style)}))
(set-android-theme))))
(.setStyle StatusBar (clj->js {:style (.-Dark Style)}))
(set-android-theme))))
(defn find-first
[pred coll]