aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/tau/events.cljs
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/tau/events.cljs')
-rw-r--r--src/frontend/tau/events.cljs382
1 files changed, 0 insertions, 382 deletions
diff --git a/src/frontend/tau/events.cljs b/src/frontend/tau/events.cljs
deleted file mode 100644
index d854b0e..0000000
--- a/src/frontend/tau/events.cljs
+++ /dev/null
@@ -1,382 +0,0 @@
-(ns tau.events
- (:require
- [day8.re-frame.http-fx]
- [re-frame.core :as rf]
- [reitit.frontend.easy :as rfe]
- [reitit.frontend.controllers :as rfc]
- [tau.api :as api]))
-
-(rf/reg-event-db
- ::initialize-db
- (fn [_ _]
- {:global-search ""
- :service-id 0
- :service-color "#cc0000"
- :stream {}
- :search-results []
- :services []
- :current-match nil
- :page-scroll 0}))
-
-(rf/reg-fx
- ::scroll-to-top
- (fn [_]
- (.scrollTo js/window #js {"top" 0 "behavior" "smooth"})))
-
-(rf/reg-fx
- ::history-back!
- (fn [_]
- (.back js/window.history)))
-
-(rf/reg-event-fx
- ::history-back
- (fn [_ _]
- {::history-back! nil}))
-
-(rf/reg-event-db
- ::page-scroll
- (fn [db _]
- (when (> (.-scrollY js/window) 0)
- (assoc db :page-scroll (+ (.-scrollY js/window) (.-innerHeight js/window))))))
-
-(rf/reg-event-db
- ::reset-page-scroll
- (fn [db _]
- (assoc db :page-scroll 0)))
-
-(rf/reg-event-db
- ::toggle-mobile-nav
- (fn [db _]
- (assoc db :show-mobile-nav (not (:show-mobile-nav db)))))
-
-(rf/reg-event-fx
- ::navigated
- (fn [{:keys [db]} [_ new-match]]
- (let [old-match (:current-match db)
- controllers (rfc/apply-controllers (:controllers old-match) new-match)
- match (assoc new-match :controllers controllers)]
- {:db (-> db
- (assoc :current-match match)
- (assoc :show-pagination-loading false))
- ::scroll-to-top nil})))
-
-(rf/reg-event-fx
- ::navigate
- (fn [_ [_ route]]
- {::navigate! route}))
-
-(rf/reg-fx
- ::navigate!
- (fn [{:keys [name params query]}]
- (rfe/push-state name params query)))
-
-(rf/reg-event-db
- ::bad-response
- (fn [db [_ res]]
- (js/console.log res)
- (assoc db :http-response (get-in res [:response :error]))))
-
-(rf/reg-event-db
- ::change-global-search
- (fn [db [_ res]]
- (assoc db :global-search res)))
-
-(rf/reg-event-db
- ::change-service-color
- (fn [db [_ service-id]]
- (assoc db :service-color
- (case service-id
- 0 "#cc0000"
- 1 "#ff7700"
- 2 "#333333"
- 3 "#F2690D"
- 4 "#629aa9"))))
-
-(rf/reg-event-fx
- ::change-service-id
- (fn [{:keys [db]} [_ service-id]]
- {:db (assoc db :service-id service-id)
- :fx [[:dispatch [::change-service-color service-id]]]}))
-
-(rf/reg-event-db
- ::load-paginated-channel-results
- (fn [db [_ res]]
- (-> db
- (update-in [:channel :related-streams] #(apply conj %1 %2)
- (:related-streams (js->clj res :keywordize-keys true)))
- (assoc-in [:channel :next-page]
- (:next-page (js->clj res :keywordize-keys true)))
- (assoc :show-pagination-loading false))))
-
-(rf/reg-event-fx
- ::channel-pagination
- (fn [{:keys [db]} [_ uri next-page-url]]
- (if (empty? next-page-url)
- {:db (assoc db :show-pagination-loading false)}
- (assoc
- (api/get-request
- (str "/api/channels/" (js/encodeURIComponent uri) )
- [::load-paginated-channel-results] [::bad-response]
- {:nextPage (js/encodeURIComponent next-page-url)})
- :db (assoc db :show-pagination-loading true)))))
-
-(rf/reg-event-db
- ::load-paginated-playlist-results
- (fn [db [_ res]]
- (-> db
- (update-in [:playlist :related-streams] #(apply conj %1 %2)
- (:related-streams (js->clj res :keywordize-keys true)))
- (assoc-in [:playlist :next-page]
- (:next-page (js->clj res :keywordize-keys true)))
- (assoc :show-pagination-loading false))))
-
-(rf/reg-event-fx
- ::playlist-pagination
- (fn [{:keys [db]} [_ uri next-page-url]]
- (if (empty? next-page-url)
- {:db (assoc db :show-pagination-loading false)}
- (assoc
- (api/get-request
- (str "/api/playlists/" (js/encodeURIComponent uri))
- [::load-paginated-playlist-results] [::bad-response]
- {:nextPage (js/encodeURIComponent next-page-url)})
- :db (assoc db :show-pagination-loading true)))))
-
-(rf/reg-event-db
- ::load-paginated-search-results
- (fn [db [_ res]]
- (-> db
- (update-in [:search-results :items] #(apply conj %1 %2)
- (:items (js->clj res :keywordize-keys true)))
- (assoc-in [:search-results :next-page]
- (:next-page (js->clj res :keywordize-keys true)))
- (assoc :show-pagination-loading false))))
-
-(rf/reg-event-fx
- ::search-pagination
- (fn [{:keys [db]} [_ query id next-page-url]]
- (if (empty? next-page-url)
- {:db (assoc db :show-pagination-loading false)}
- (assoc
- (api/get-request
- (str "/api/services/" id "/search")
- [::load-paginated-search-results] [::bad-response]
- {:q query
- :nextPage (js/encodeURIComponent next-page-url)})
- :db (assoc db :show-pagination-loading true)))))
-
-(rf/reg-event-db
- ::change-global-stream
- (fn [db [_ global-stream]]
- (assoc db :global-stream global-stream)))
-
-(rf/reg-event-db
- ::toggle-global-player
- (fn [db _]
- (assoc db :show-global-player (not (:show-global-player db)))))
-
-(rf/reg-event-fx
- ::switch-to-global-player
- (fn [{:keys [db]} [_ global-stream]]
- {:db (assoc db :show-global-player true)
- :fx [[:dispatch [::change-global-stream global-stream]]]}))
-
-(rf/reg-event-db
- ::load-services
- (fn [db [_ res]]
- (assoc db :services (js->clj res :keywordize-keys true))))
-
-(rf/reg-event-fx
- ::get-services
- (fn [{:keys [db]} _]
- (api/get-request "/api/services" [::load-services] [::bad-response])))
-
-(rf/reg-event-db
- ::load-comments
- (fn [db [_ res]]
- (-> db
- (assoc-in [:stream :comments-page] (js->clj res :keywordize-keys true))
- (assoc-in [:stream :show-comments-loading] false))))
-
-(rf/reg-event-fx
- ::get-comments
- (fn [{:keys [db]} [_ url]]
- (assoc
- (api/get-request (str "/api/comments/" (js/encodeURIComponent url))
- [::load-comments] [::bad-response])
- :db (-> db
- (assoc-in [:stream :show-comments-loading] true)
- (assoc-in [:stream :show-comments] true)))))
-
-(rf/reg-event-db
- ::toggle-comments
- (fn [db _]
- (assoc-in db [:stream :show-comments] (not (-> db :stream :show-comments)))))
-
-(rf/reg-event-db
- ::toggle-comment-replies
- (fn [db [_ comment-id]]
- (update-in db [:stream :comments-page :comments]
- (fn [comments]
- (map #(if (= (:id %) comment-id)
- (assoc % :show-replies (not (:show-replies %)))
- %)
- comments)))))
-
-(rf/reg-event-db
- ::load-paginated-comments
- (fn [db [_ res]]
- (-> db
- (update-in [:stream :comments-page :comments] #(apply conj %1 %2)
- (:comments (js->clj res :keywordize-keys true)))
- (assoc-in [:stream :comments-page :next-page]
- (:next-page (js->clj res :keywordize-keys true)))
- (assoc :show-pagination-loading false))))
-
-(rf/reg-event-fx
- ::comments-pagination
- (fn [{:keys [db]} [_ url next-page-url]]
- (if (empty? next-page-url)
- {:db (assoc db :show-pagination-loading false)}
- (assoc
- (api/get-request (str "/api/comments/" (js/encodeURIComponent url))
- [::load-paginated-comments] [::bad-response]
- {:nextPage (js/encodeURIComponent next-page-url)})
- :db (assoc db :show-pagination-loading true)))))
-
-(rf/reg-event-db
- ::load-kiosks
- (fn [db [_ res]]
- (assoc db :kiosks (js->clj res :keywordize-keys true))))
-
-(rf/reg-event-fx
- ::get-kiosks
- (fn [{:keys [db]} [_ id]]
- (api/get-request (str "/api/services/" id "/kiosks") [::load-kiosks] [::bad-response])))
-
-(rf/reg-event-db
- ::load-kiosk
- (fn [db [_ res]]
- (assoc db :kiosk (js->clj res :keywordize-keys true)
- :show-page-loading false)))
-
-(rf/reg-event-fx
- ::get-default-kiosk
- (fn [{:keys [db]} [_ service-id]]
- (assoc
- (api/get-request (str "/api/services/" service-id "/default-kiosk")
- [::load-kiosk] [::bad-response])
- :db (assoc db :show-page-loading true))))
-
-(rf/reg-event-fx
- ::get-kiosk
- (fn [{:keys [db]} [_ service-id kiosk-id]]
- (if kiosk-id
- (assoc
- (api/get-request (str "/api/services/" service-id "/kiosks/"
- (js/encodeURIComponent kiosk-id))
- [::load-kiosk] [::bad-response])
- :db (assoc db :show-page-loading true))
- {:fx [[:dispatch [::get-default-kiosk service-id]]]})))
-
-(rf/reg-event-fx
- ::change-service
- (fn [{:keys [db]} [_ service-id]]
- {:fx [[:dispatch
- [::navigate {:name :tau.routes/kiosk
- :params {}
- :query {:serviceId service-id}}]]]}))
-
-(rf/reg-event-db
- ::load-paginated-kiosk-results
- (fn [db [_ res]]
- (-> db
- (update-in [:kiosk :related-streams] #(apply conj %1 %2)
- (:related-streams (js->clj res :keywordize-keys true)))
- (assoc-in [:kiosk :next-page]
- (:next-page (js->clj res :keywordize-keys true)))
- (assoc :show-pagination-loading false))))
-
-(rf/reg-event-fx
- ::kiosk-pagination
- (fn [{:keys [db]} [_ service-id kiosk-id next-page-url]]
- (if (empty? next-page-url)
- {:db (assoc db :show-pagination-loading false)}
- (assoc
- (api/get-request
- (str "/api/services/" service-id "/kiosks/" (js/encodeURIComponent kiosk-id))
- [::load-paginated-kiosk-results] [::bad-response]
- {:nextPage (js/encodeURIComponent next-page-url)})
- :db (assoc db :show-pagination-loading true)))))
-
-(rf/reg-event-fx
- ::load-stream
- (fn [{:keys [db]} [_ res]]
- (let [stream-res (js->clj res :keywordize-keys true)]
- {:db (assoc db :stream stream-res
- :show-page-loading false)
- :fx [[:dispatch [::change-stream-format nil]]
- [:dispatch [::get-comments (:url stream-res)]]]})))
-
-(rf/reg-event-fx
- ::get-stream
- (fn [{:keys [db]} [_ uri]]
- (assoc
- (api/get-request (str "/api/streams/" (js/encodeURIComponent uri))
- [::load-stream] [::bad-response])
- :db (assoc db :show-page-loading true))))
-
-(rf/reg-event-db
- ::change-stream-format
- (fn [{:keys [stream] :as db} [_ format-id]]
- (let [{:keys [audio-streams video-streams]} stream]
- (if format-id
- (assoc db :stream-format
- (first (filter #(= format-id (:id %)) (apply conj audio-streams video-streams))))
- (assoc db :stream-format (-> (if (empty? video-streams) audio-streams video-streams)
- last))))))
-
-(rf/reg-event-db
- ::load-channel
- (fn [db [_ res]]
- (assoc db :channel (js->clj res :keywordize-keys true)
- :show-page-loading false)))
-
-(rf/reg-event-fx
- ::get-channel
- (fn [{:keys [db]} [_ uri]]
- (assoc
- (api/get-request
- (str "/api/channels/" (js/encodeURIComponent uri))
- [::load-channel] [::bad-response])
- :db (assoc db :show-page-loading true))))
-
-(rf/reg-event-db
- ::load-playlist
- (fn [db [_ res]]
- (assoc db :playlist (js->clj res :keywordize-keys true)
- :show-page-loading false)))
-
-(rf/reg-event-fx
- ::get-playlist
- (fn [{:keys [db]} [_ uri]]
- (assoc
- (api/get-request (str "/api/playlists/" (js/encodeURIComponent uri))
- [::load-playlist] [::bad-response])
- :db (assoc db :show-page-loading true))))
-
-(rf/reg-event-db
- ::load-search-results
- (fn [db [_ res]]
- (assoc db :search-results (js->clj res :keywordize-keys true)
- :show-page-loading false
- :global-search "")))
-
-(rf/reg-event-fx
- ::get-search-results
- (fn [{:keys [db]} [_ service-id query]]
- (assoc
- (api/get-request (str "/api/services/" service-id "/search")
- [::load-search-results] [::bad-response]
- {:q query})
- :db (assoc db :show-page-loading true))))