Skip to content

Commit

Permalink
fix(mobile): incorrect theme color for the android status bar
Browse files Browse the repository at this point in the history
  • Loading branch information
xyhp915 authored and andelf committed May 13, 2024
1 parent e6173e8 commit 7ba72ae
Showing 1 changed file with 14 additions and 13 deletions.
27 changes: 14 additions & 13 deletions src/main/frontend/util.cljc
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand All @@ -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)]
Expand All @@ -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]
Expand Down

0 comments on commit 7ba72ae

Please sign in to comment.