Move all files under frontend directory.

This commit is contained in:
Andrey Antukh 2016-11-20 20:03:17 +01:00
parent 92b45b2d05
commit e21798f1ed
No known key found for this signature in database
GPG key ID: 4DFEBCB8316A8B95
603 changed files with 10 additions and 31 deletions

View file

@ -0,0 +1,77 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) 2015-2016 Andrey Antukh <niwi@niwi.nz>
;; Copyright (c) 2015-2016 Juan de la Cruz <delacruzgarciajuan@gmail.com>
(ns uxbox.util.router
(:require [bide.core :as r]
[beicon.core :as rx]
[uxbox.util.rstore :as rs]))
(enable-console-print!)
(defonce +router+ nil)
;; --- Update Location (Event)
(defrecord UpdateLocation [id params]
rs/UpdateEvent
(-apply-update [_ state]
(let [route (merge {:id id}
(when params
{:params params}))]
(assoc state :route route))))
(defn update-location?
[v]
(instance? UpdateLocation v))
(defn update-location
[name params]
(UpdateLocation. name params))
;; --- Navigate (Event)
(defrecord Navigate [id params]
rs/EffectEvent
(-apply-effect [_ state]
(r/navigate! +router+ id params)))
(defn navigate
([id] (navigate id nil))
([id params]
{:pre [(keyword? id)]}
(Navigate. id params)))
;; --- Public Api
(defn init
([routes]
(init routes nil))
([routes {:keys [default] :or {default :auth/login}}]
(let [opts {:on-navigate #(rs/emit! (update-location %1 %2))
:default default}
router (-> (r/router routes)
(r/start! opts))]
(set! +router+ router)
router)))
(defn go
"Redirect the user to other url."
([id] (go id nil))
([id params]
(rs/emit! (navigate id params))))
(defn route-for
"Given a location handler and optional parameter map, return the URI
for such handler and parameters."
([id]
(if +router+
(r/resolve +router+ id)
""))
([id params]
(if +router+
(r/resolve +router+ id params)
"")))