Browse Source

feat: Set up initial frontend routes

Miguel Ángel Moreno 2 years ago
parent
commit
5730dd7812
1 changed files with 38 additions and 0 deletions
  1. 38 0
      src/frontend/tau/routes.cljs

+ 38 - 0
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}))