diff options
-rw-r--r-- | src/frontend/tau/routes.cljs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/frontend/tau/routes.cljs b/src/frontend/tau/routes.cljs new file mode 100644 index 0000000..1742aaa --- /dev/null +++ b/src/frontend/tau/routes.cljs @@ -0,0 +1,38 @@ +(ns tau.routes + (:require + [reitit.frontend :as ref] + [reitit.frontend.easy :as rfe] + [reitit.frontend.controllers :as rfc] + [re-frame.core :as rf] + [tau.views.home :as home] + [tau.views.search :as search] + [tau.views.stream :as stream])) + +(def routes + (ref/router + [["/" {:view home/home-page + :name ::home}] + ["/search" {:view search/search + :name ::search + :controllers [{:parameters {:query [:q :serviceId]} + :start (fn [parameters] + (rf/dispatch [:get-search-results + {:id (-> parameters :query :serviceId) + :query (-> parameters :query :q)}]))}]}] + ["/stream" {:view stream/stream + :name ::stream + :controllers [{:parameters {:query [:url]} + :start (fn [parameters] + (rf/dispatch [:get-stream (-> parameters :query :url)]))}]}]])) + +(defn on-navigate + [new-match] + (let [old-match (rf/subscribe [:current-match])] + (when new-match + (let [controllers (rfc/apply-controllers (:controllers @old-match) new-match) + match (assoc new-match :controllers controllers)] + (rf/dispatch [:navigated match]))))) + +(defn start-routes! + [] + (rfe/start! routes on-navigate {:use-fragment false})) |