Skip to content

Commit

Permalink
let-bind on-index controllers for re-use
Browse files Browse the repository at this point in the history
  • Loading branch information
dgtized committed Jun 14, 2024
1 parent a11ba28 commit 85f99af
Showing 1 changed file with 26 additions and 27 deletions.
53 changes: 26 additions & 27 deletions src/shimmers/core.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -33,37 +33,36 @@
(println action "sketch" (:sketch-id sketch)))
(f sketch))))

(defn on-index []
[{:start #(favicon/start 333)
:stop #(favicon/stop)}])

;; FIXME: moving this to a different namespace seems to break routing
;; index does not load and p5 is not required somehow
;; FIXME: handle invalid paths, re-route to index by-alphabetical
(def routes
[["/" ::root]
["/sketches"
{:name :shimmers.view.index/by-alphabetical
:view #(view-index/by-alphabetical (sketches/all))
:controllers (on-index)}]
["/sketches-by-date"
{:name :shimmers.view.index/by-date
:view #(view-index/by-date (sketches/all))
:controllers (on-index)}]
["/sketches-by-tag"
{:name :shimmers.view.index/by-tag
:view #(view-index/by-tag (sketches/all))
:controllers (on-index)}]
["/sketches/:name"
{:name :shimmers.view.sketch/sketch-by-name
:view (on-event #(view-sketch/sketch-by-name % (sketches/known-names)) nil)
:parameters
{:path {:name (every-pred string? (set (sketches/known-names)))}
:query {(ds/opt :seed) int?}}
:controllers
[{:parameters {:path [:name] :query [:seed]}
:start (on-event view-sketch/start-sketch "start")
:stop (on-event view-sketch/stop-sketch "stop")}]}]])
(let [on-index
[{:start #(favicon/start 333)
:stop #(favicon/stop)}]]
[["/" ::root]
["/sketches"
{:name :shimmers.view.index/by-alphabetical
:view #(view-index/by-alphabetical (sketches/all))
:controllers on-index}]
["/sketches-by-date"
{:name :shimmers.view.index/by-date
:view #(view-index/by-date (sketches/all))
:controllers on-index}]
["/sketches-by-tag"
{:name :shimmers.view.index/by-tag
:view #(view-index/by-tag (sketches/all))
:controllers on-index}]
["/sketches/:name"
{:name :shimmers.view.sketch/sketch-by-name
:view (on-event #(view-sketch/sketch-by-name % (sketches/known-names)) nil)
:parameters
{:path {:name (every-pred string? (set (sketches/known-names)))}
:query {(ds/opt :seed) int?}}
:controllers
[{:parameters {:path [:name] :query [:seed]}
:start (on-event view-sketch/start-sketch "start")
:stop (on-event view-sketch/stop-sketch "stop")}]}]]))

(defn on-navigate [page-match new-match]
(if (or (nil? new-match) (= (:name (:data new-match)) ::root))
Expand Down

0 comments on commit 85f99af

Please sign in to comment.