mirror of
https://github.com/penpot/penpot.git
synced 2025-02-03 12:59:12 -05:00
✨ Clean code on router ns.
This commit is contained in:
parent
759530ea58
commit
aad3e092f7
1 changed files with 5 additions and 14 deletions
|
@ -5,6 +5,7 @@
|
||||||
;; Copyright (c) 2015-2019 Andrey Antukh <niwi@niwi.nz>
|
;; Copyright (c) 2015-2019 Andrey Antukh <niwi@niwi.nz>
|
||||||
|
|
||||||
(ns uxbox.util.router
|
(ns uxbox.util.router
|
||||||
|
(:refer-clojure :exclude [resolve])
|
||||||
(:require
|
(:require
|
||||||
[reitit.core :as r]
|
[reitit.core :as r]
|
||||||
[cuerdas.core :as str]
|
[cuerdas.core :as str]
|
||||||
|
@ -15,8 +16,6 @@
|
||||||
goog.Uri
|
goog.Uri
|
||||||
goog.Uri.QueryData))
|
goog.Uri.QueryData))
|
||||||
|
|
||||||
(defonce +router+ nil)
|
|
||||||
|
|
||||||
;; --- API
|
;; --- API
|
||||||
|
|
||||||
(defn- parse-query-data
|
(defn- parse-query-data
|
||||||
|
@ -37,9 +36,9 @@
|
||||||
(transient {})
|
(transient {})
|
||||||
(.getKeys qdata))))
|
(.getKeys qdata))))
|
||||||
|
|
||||||
(defn- resolve-url
|
(defn resolve
|
||||||
([router id] (resolve-url router id {} {}))
|
([router id] (resolve router id {} {}))
|
||||||
([router id params] (resolve-url router id params {}))
|
([router id params] (resolve router id params {}))
|
||||||
([router id params qparams]
|
([router id params qparams]
|
||||||
(when-let [match (r/match-by-name router id params)]
|
(when-let [match (r/match-by-name router id params)]
|
||||||
(if (empty? qparams)
|
(if (empty? qparams)
|
||||||
|
@ -68,7 +67,7 @@
|
||||||
([router id] (navigate! router id {} {}))
|
([router id] (navigate! router id {} {}))
|
||||||
([router id params] (navigate! router id params {}))
|
([router id params] (navigate! router id params {}))
|
||||||
([router id params qparams]
|
([router id params qparams]
|
||||||
(-> (resolve-url router id params qparams)
|
(-> (resolve router id params qparams)
|
||||||
(html-history/set-path!))))
|
(html-history/set-path!))))
|
||||||
|
|
||||||
(defn match
|
(defn match
|
||||||
|
@ -83,20 +82,12 @@
|
||||||
:params params
|
:params params
|
||||||
:query-params qparams)))))
|
:query-params qparams)))))
|
||||||
|
|
||||||
(defn route-for
|
|
||||||
"Given a location handler and optional parameter map, return the URI
|
|
||||||
for such handler and parameters."
|
|
||||||
([id] (route-for id {}))
|
|
||||||
([id params]
|
|
||||||
(str (some-> +router+ (resolve-url id params)))))
|
|
||||||
|
|
||||||
;; --- Navigate (Event)
|
;; --- Navigate (Event)
|
||||||
|
|
||||||
(deftype Navigate [id params qparams]
|
(deftype Navigate [id params qparams]
|
||||||
ptk/EffectEvent
|
ptk/EffectEvent
|
||||||
(effect [_ state stream]
|
(effect [_ state stream]
|
||||||
(let [router (:router state)]
|
(let [router (:router state)]
|
||||||
;; (prn "Navigate:" id params qparams "| Match:" (resolve-url router id params qparams))
|
|
||||||
(navigate! router id params qparams))))
|
(navigate! router id params qparams))))
|
||||||
|
|
||||||
(defn nav
|
(defn nav
|
||||||
|
|
Loading…
Add table
Reference in a new issue