Browse Source

feat(frontend): add media queue position guard at event level

Miguel Ángel Moreno 1 year ago
parent
commit
c29e709dec
1 changed files with 11 additions and 7 deletions
  1. 11 7
      src/frontend/tubo/events.cljs

+ 11 - 7
src/frontend/tubo/events.cljs

@@ -238,13 +238,17 @@
 (rf/reg-event-fx
  ::change-media-queue-pos
  [(rf/inject-cofx :store)]
- (fn [{:keys [db store]} [_ idx]]
-   (let [stream (get (:media-queue db) idx)]
-     {:db    (-> db
-                 (assoc :media-queue-pos idx)
-                 (assoc-in [:media-queue idx :stream] ""))
-      :store (assoc store :media-queue-pos idx)
-      :fx    [[:dispatch [::fetch-audio-player-stream (:url stream) idx]]]})))
+ (fn [{:keys [db store]} [_ i]]
+   (let [idx    (if (< i (count (:media-queue db)))
+                  i
+                  (when (= (:loop-playback db) :playlist) 0))
+         stream (get (:media-queue db) idx)]
+     (when stream
+       {:db    (-> db
+                   (assoc :media-queue-pos idx)
+                   (assoc-in [:media-queue idx :stream] ""))
+        :store (assoc store :media-queue-pos idx)
+        :fx    [[:dispatch [::fetch-audio-player-stream (:url stream) idx true]]]}))))
 
 (rf/reg-event-fx
  ::change-media-queue-stream