diff --git a/src/uxbox/router.cljs b/src/uxbox/router.cljs index a8d578ffe..5535a614b 100644 --- a/src/uxbox/router.cljs +++ b/src/uxbox/router.cljs @@ -10,6 +10,7 @@ [bidi.bidi :as bidi] [goog.events :as events] [lentes.core :as l] + [beicon.core :as rx] [uxbox.rstore :as rs])) (enable-console-print!) diff --git a/src/uxbox/ui.cljs b/src/uxbox/ui.cljs index 9164539d7..174d4cb11 100644 --- a/src/uxbox/ui.cljs +++ b/src/uxbox/ui.cljs @@ -21,8 +21,9 @@ [uxbox.data.users :as udu] [uxbox.data.auth :as dauth] [uxbox.data.messages :as dmsg] + [uxbox.ui.loader :refer (loader)] + [uxbox.ui.lightbox :refer (lightbox)] [uxbox.ui.icons :as i] - [uxbox.ui.lightbox :as lightbox] [uxbox.ui.auth :as auth] [uxbox.ui.dashboard :as dashboard] [uxbox.ui.settings :as settings] @@ -37,11 +38,13 @@ :auth/register :auth/recovery-request :auth/recovery}) -(def ^:const restricted? (complement +unrestricted+)) + +(def ^:const restricted? + (complement +unrestricted+)) (def route-l - (as-> (l/key :route) $ - (l/focus-atom $ st/state))) + (-> (l/key :route) + (l/focus-atom st/state))) ;; --- Error Handling @@ -112,20 +115,6 @@ :mixins [rum/reactive] :name "app"})) -;; --- Loader - -(defn loader-render - [own] - (when (rum/react st/loader) - (html - [:div.loader-content i/loader]))) - -(def loader - (mx/component - {:render loader-render - :name "loader" - :mixins [rum/reactive mx/static]})) - ;; --- Routes (def ^:private page-route @@ -160,5 +149,5 @@ lightbox-dom (gdom/getElement "lightbox") loader-dom (gdom/getElement "loader")] (rum/mount (app) app-dom) - (rum/mount (lightbox/lightbox) lightbox-dom) + (rum/mount (lightbox) lightbox-dom) (rum/mount (loader) loader-dom))) diff --git a/src/uxbox/ui/loader.cljs b/src/uxbox/ui/loader.cljs new file mode 100644 index 000000000..0e6aaed03 --- /dev/null +++ b/src/uxbox/ui/loader.cljs @@ -0,0 +1,38 @@ +;; 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) 2016 Andrey Antukh + +(ns uxbox.ui.loader + (:require [sablono.core :refer-macros [html]] + [rum.core :as rum] + [uxbox.state :as st] + [uxbox.rstore :as rs] + [uxbox.ui.icons :as i] + [uxbox.ui.mixins :as mx] + [uxbox.ui.shapes])) + +;; --- Error Handling + +(defn- on-error + [error] + ;; Disable loader in case of error. + (reset! st/loader false)) + +(rs/add-error-watcher :loader on-error) + +;; --- Component + +(defn loader-render + [own] + (when (rum/react st/loader) + (html + [:div.loader-content i/loader]))) + +(def loader + (mx/component + {:render loader-render + :name "loader" + :mixins [rum/reactive mx/static]})) +