diff --git a/src/cljs/airsonic_ui/audio/core.cljs b/src/cljs/airsonic_ui/audio/core.cljs index 79722a8..2bcf003 100644 --- a/src/cljs/airsonic_ui/audio/core.cljs +++ b/src/cljs/airsonic_ui/audio/core.cljs @@ -3,7 +3,8 @@ and receive information about the current playback status so we can use it in our re-frame app." (:require [re-frame.core :as re-frame] - [airsonic-ui.audio.playlist :as playlist])) + [airsonic-ui.audio.playlist :as playlist] + [goog.functions :refer [throttle]])) ;; TODO: Manage buffering @@ -20,9 +21,12 @@ :current-time (.-currentTime elem)}) ; explanation of these events: https://developer.mozilla.org/en-US/Apps/Fundamentals/Audio_and_video_delivery/Cross-browser_audio_basics + + (defn attach-listeners! [el] - (doseq [event ["loadstart" "progress" "play" "timeupdate" "pause"]] - (.addEventListener el event #(re-frame/dispatch [:audio/update (->status el)])))) + (let [emit-audio-update (throttle #(re-frame/dispatch [:audio/update (->status el)]) 16)] + (doseq [event ["loadstart" "progress" "play" "timeupdate" "pause"]] + (.addEventListener el event emit-audio-update)))) ;; effects to be fired from event handlers diff --git a/src/cljs/airsonic_ui/components/audio_player/events.cljs b/src/cljs/airsonic_ui/components/audio_player/events.cljs index ae2c074..d1ea1a1 100644 --- a/src/cljs/airsonic_ui/components/audio_player/events.cljs +++ b/src/cljs/airsonic_ui/components/audio_player/events.cljs @@ -12,8 +12,6 @@ {:audio/play (api/stream-url (:credentials db) (playlist/peek playlist)) :db (assoc-in db [:audio :playlist] playlist)}))) -;; FIXME: :audio/play might not get the right argument here - (re-frame/reg-event-db :audio-player/set-playback-mode (fn [db [_ playback-mode]] diff --git a/src/cljs/airsonic_ui/views.cljs b/src/cljs/airsonic_ui/views.cljs index f83769f..2ee6902 100644 --- a/src/cljs/airsonic_ui/views.cljs +++ b/src/cljs/airsonic_ui/views.cljs @@ -68,7 +68,7 @@ [:div.navbar-item [search/form]]] [:div.navbar-end [:a.navbar-item {:href (url-for ::routes/current-queue) - :title "Current queue"} [icon :audio]] + :title "Current queue"} [icon :audio-spectrum]] (when stream-role [navbar-dropdown "Library" [[{:href (url-for ::routes/library {:criteria "recent"})} "Recently played"]