-
-
Save escherize/83cbb92a99a39a8ba1c52fd50ea16c5a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns teal.routing | |
(:require-macros [secretary.core :refer [defroute]] | |
[compojure.route :as route]) | |
(:import goog.History) | |
(:require [secretary.core :as secretary] | |
[goog.events :as events] | |
[goog.history.EventType :as EventType] | |
[re-frame.core :as rf :refer [dispatch]] | |
[teal.local-storage :as ls] | |
[taoensso.timbre :as timbre])) | |
(defn update-url [url] | |
;;(update-cookie) | |
(set! (.-location js/window) url) | |
(.scrollTo js/window 0 0)) | |
(defn hook-browser-navigation! [] | |
(doto (History.) | |
(events/listen | |
EventType/NAVIGATE | |
(fn [event] | |
(secretary/dispatch! (.-token event)))) | |
(.setEnabled true))) | |
(defn logged-in? [] | |
(let [ls-app-db (ls/get-item :app-db) | |
_ (timbre/info "ls-app-db: " ls-app-db)] | |
(-> (ls/get-item :app-db) :user :id boolean))) | |
(defn internal-route | |
"Used for routes that a user must be logged in for." | |
[panel-kw] | |
(if (logged-in?) | |
(rf/dispatch [:set-active-panel panel-kw]) | |
(update-url "#/"))) | |
(defn external-route | |
"Used for routes that a user must be logged out for, like signup/login." | |
[panel-kw] | |
(if-not (logged-in?) | |
(rf/dispatch [:set-active-panel panel-kw]) | |
(update-url "#/hub"))) | |
(defn app-routes [] | |
(secretary/set-config! :prefix "#") | |
;; -------------------- | |
;; define routes here | |
(defroute "/" [] | |
(external-route :signup-panel)) | |
(defroute "/login" [] | |
(external-route :login-panel)) | |
(defroute "/test" [] | |
(external-route :test-panel)) | |
(defroute "/hub" [] | |
(internal-route :hub-panel)) | |
(defroute "/payment" [] | |
(internal-route :payment-panel)) | |
(defroute "/embed/:sms-link" {:as params} | |
(let [smslink-id (:sms-link params)] | |
(dispatch [:update-sms-link-id smslink-id]) | |
(internal-route :embed-panel))) | |
;; -------------------- | |
(hook-browser-navigation!)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment