page.cljs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. (ns frontend.page
  2. (:require [rum.core :as rum]
  3. [frontend.state :as state]
  4. [frontend.ui :as ui]
  5. [frontend.components.sidebar :as sidebar]
  6. [frontend.handler.plugin :as plugin-handler]
  7. [frontend.context.i18n :as i18n]))
  8. (rum/defc route-view
  9. [view route-match]
  10. (view route-match))
  11. (defn- setup-fns!
  12. []
  13. (try
  14. (comp
  15. (ui/setup-active-keystroke!)
  16. (ui/setup-patch-ios-visual-viewport-state!))
  17. (catch js/Error _e
  18. nil)))
  19. (rum/defc current-page < rum/reactive
  20. {:did-mount (fn [state]
  21. (state/set-root-component! (:rum/react-component state))
  22. (state/setup-electron-updater!)
  23. (ui/inject-document-devices-envs!)
  24. (ui/inject-dynamic-style-node!)
  25. (plugin-handler/host-mounted!)
  26. (assoc state ::teardown (setup-fns!) ))
  27. :will-unmount (fn [state]
  28. (when-let [teardown (::teardown state)]
  29. (teardown)))}
  30. []
  31. (when-let [route-match (state/sub :route-match)]
  32. (i18n/tongue-provider
  33. (let [route-name (get-in route-match [:data :name])]
  34. (when-let [view (:view (:data route-match))]
  35. (if (= :draw route-name)
  36. (view route-match)
  37. (sidebar/sidebar
  38. route-match
  39. (view route-match))))))))
  40. ;; FIXME: disable for now
  41. ;; (let [route-name (get-in route-match [:data :name])
  42. ;; no-animate? (contains? #{:repos :repo-add :file}
  43. ;; route-name)]
  44. ;; (when-let [view (:view (:data route-match))]
  45. ;; (sidebar/sidebar
  46. ;; route-match
  47. ;; (if no-animate?
  48. ;; (route-view view route-match)
  49. ;; (ui/transition-group
  50. ;; {:class-name "router-wrapper"}
  51. ;; (ui/css-transition
  52. ;; {:class-names "pageChange"
  53. ;; :key route-name
  54. ;; :timeout {:enter 300
  55. ;; :exit 200}}
  56. ;; (route-view view route-match)))))))