♻️ Refactor main app component.

This commit is contained in:
Andrey Antukh 2019-08-21 21:03:29 +00:00
parent ccc6eaf4b0
commit cf7664d446
2 changed files with 31 additions and 35 deletions

View file

@ -69,7 +69,7 @@
(when (:auth storage) (when (:auth storage)
(st/emit! (udu/fetch-profile))) (st/emit! (udu/fetch-profile)))
(mf/mount (ui/app) (dom/get-element "app")) (mf/mount (mf/element ui/app) (dom/get-element "app"))
(mf/mount (lightbox) (dom/get-element "lightbox")) (mf/mount (lightbox) (dom/get-element "lightbox"))
(mf/mount (mf/element modal) (dom/get-element "modal")) (mf/mount (mf/element modal) (dom/get-element "modal"))
(mf/mount (loader) (dom/get-element "loader")) (mf/mount (loader) (dom/get-element "loader"))

View file

@ -11,7 +11,6 @@
[cuerdas.core :as str] [cuerdas.core :as str]
[lentes.core :as l] [lentes.core :as l]
[potok.core :as ptk] [potok.core :as ptk]
[rumext.core :as mx]
[rumext.alpha :as mf] [rumext.alpha :as mf]
[uxbox.builtins.icons :as i] [uxbox.builtins.icons :as i]
[uxbox.main.data.auth :refer [logout]] [uxbox.main.data.auth :refer [logout]]
@ -81,43 +80,40 @@
;; --- Main App (Component) ;; --- Main App (Component)
(mf/def app (def route-iref
:mixins [mx/reactive] (-> (l/key :route)
(l/derive st/state)))
:init (mf/defc app
(fn [own props] [props]
(assoc own ::route-ref (l/derive (l/key :route) st/state))) (let [route (mf/deref route-iref)
route-id (get-in route [:data :name])]
(case route-id
:auth/login (mf/element auth/login-page)
:auth/register (auth/register-page)
:auth/recovery-request (auth/recovery-request-page)
:render :auth/recovery
(fn [own props] (let [token (get-in route [:params :path :token])]
(let [route (mx/react (::route-ref own)) (auth/recovery-page token))
route-id (get-in route [:data :name])]
(case route-id
:auth/login (mf/element auth/login-page)
:auth/register (auth/register-page)
:auth/recovery-request (auth/recovery-request-page)
:auth/recovery (:settings/profile
(let [token (get-in route [:params :path :token])] :settings/password
(auth/recovery-page token)) :settings/notifications)
(mf/element settings/settings #js {:route route})
(:settings/profile (:dashboard/projects
:settings/password :dashboard/icons
:settings/notifications) :dashboard/images
(mf/element settings/settings #js {:route route}) :dashboard/colors)
(mf/element dashboard/dashboard #js {:route route})
(:dashboard/projects :workspace/page
:dashboard/icons (let [project-id (uuid (get-in route [:params :path :project]))
:dashboard/images page-id (uuid (get-in route [:params :path :page]))]
:dashboard/colors) [:& workspace-page {:project-id project-id
(mf/element dashboard/dashboard #js {:route route}) :page-id page-id
:key page-id}])
:workspace/page nil)))
(let [project-id (uuid (get-in route [:params :path :project]))
page-id (uuid (get-in route [:params :path :page]))]
[:& workspace-page {:project-id project-id
:page-id page-id
:key page-id}])
nil
))))