From a05ab09f899edbeaaacac5e46258fbc268f7d0b4 Mon Sep 17 00:00:00 2001 From: Peng Xiao Date: Tue, 17 May 2022 01:06:45 +0800 Subject: [PATCH] fix: reorg routes --- shadow-cljs.edn | 12 +++---- src/main/frontend/commands.cljs | 1 - src/main/frontend/components/block.cljs | 18 ---------- src/main/frontend/components/page.cljs | 2 +- src/main/frontend/components/sidebar.cljs | 4 +-- src/main/frontend/components/whiteboard.cljs | 38 ++++++++++++++++++++ src/main/frontend/extensions/tldraw.cljs | 5 +-- src/main/frontend/fs/nfs.cljs | 1 + src/main/frontend/handler/draw.cljs | 10 ++++++ src/main/frontend/handler/route.cljs | 5 +++ src/main/frontend/routes.cljs | 20 ++++++----- 11 files changed, 78 insertions(+), 38 deletions(-) create mode 100644 src/main/frontend/components/whiteboard.cljs diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 20dff0ef4..0cea257bc 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -23,9 +23,9 @@ :excalidraw {:entries [frontend.extensions.excalidraw] :depends-on #{:main}} - ;; :tldraw - ;; {:entries [frontend.extensions.tldraw] - ;; :depends-on #{:main}} + :tldraw + {:entries [frontend.extensions.tldraw] + :depends-on #{:main}} } :output-dir "./static/js" :asset-path "/static/js" @@ -84,9 +84,9 @@ :excalidraw {:entries [frontend.extensions.excalidraw] :depends-on #{:main}} - ;; :tldraw - ;; {:entries [frontend.extensions.tldraw] - ;; :depends-on #{:main}} + :tldraw + {:entries [frontend.extensions.tldraw] + :depends-on #{:main}} } :output-dir "./static/js/publishing" :asset-path "static/js" diff --git a/src/main/frontend/commands.cljs b/src/main/frontend/commands.cljs index 4bef7bb23..5bc58e608 100644 --- a/src/main/frontend/commands.cljs +++ b/src/main/frontend/commands.cljs @@ -274,7 +274,6 @@ ["Calculator" [[:editor/input "```calc\n\n```" {:backward-pos 4}] [:codemirror/focus]] "Insert a calculator"] ["draw" (draw-handler/initialize-excalidarw-file) "Draw a graph with Excalidraw"] - ["tldraw" (draw-handler/initialize-tldraw-file) "Draw a graph with tldraw"] (when (util/zh-CN-supported?) ["Embed Bilibili video" [[:editor/input "{{bilibili }}" {:last-pattern (state/get-editor-command-trigger) diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index 66e0b2b79..03819b6e3 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -596,19 +596,6 @@ (when draw-component (draw-component {:file file :block-uuid block-uuid})))) -(defonce tldraw-loaded? (atom false)) -(rum/defc tldraw < rum/reactive - {:init (fn [state] - (p/let [_ (loader/load :tldraw)] - (reset! tldraw-loaded? true)) - state)} - [file block-uuid] - (let [loaded? (rum/react tldraw-loaded?) - draw-component (when loaded? - (resolve 'frontend.extensions.tldraw/draw))] - (when draw-component - (draw-component {:file file :block-uuid block-uuid})))) - (rum/defc page-reference < rum/reactive [html-export? s config label] (let [show-brackets? (state/show-brackets?) @@ -621,11 +608,6 @@ (.stopPropagation e))} (excalidraw s block-uuid)] - (string/ends-with? s ".tldr") - [:div.draw.cursor-default {:on-click (fn [e] - (.stopPropagation e))} - (tldraw s block-uuid)] - :else [:span.page-reference {:data-ref s} diff --git a/src/main/frontend/components/page.cljs b/src/main/frontend/components/page.cljs index d511c8dcb..5a016dd36 100644 --- a/src/main/frontend/components/page.cljs +++ b/src/main/frontend/components/page.cljs @@ -318,7 +318,7 @@ (rum/local false ::control-show?) [state {:keys [repo page-name] :as option}] (when-let [path-page-name (or page-name - (gobj/get option "pageId") + (gobj/get option "pageId") ;; FIXME: tldraw-logseq hack (get-page-name state) (state/get-current-page))] (let [current-repo (state/sub :git/current-repo) diff --git a/src/main/frontend/components/sidebar.cljs b/src/main/frontend/components/sidebar.cljs index c984af795..6687e43f6 100644 --- a/src/main/frontend/components/sidebar.cljs +++ b/src/main/frontend/components/sidebar.cljs @@ -245,8 +245,8 @@ (sidebar-item {:class "whiteboard" - :title "Whiteboard" - :href (rfe/href :whiteboard) + :title "Whiteboards" + :href (rfe/href :whiteboards) :icon "files"})]] (favorites t) diff --git a/src/main/frontend/components/whiteboard.cljs b/src/main/frontend/components/whiteboard.cljs new file mode 100644 index 000000000..665827585 --- /dev/null +++ b/src/main/frontend/components/whiteboard.cljs @@ -0,0 +1,38 @@ +(ns frontend.components.whiteboard + (:require [frontend.handler.route :as route-handler] + [shadow.loader :as loader] + [frontend.util :as util] + [promesa.core :as p] + [rum.core :as rum])) + +(defonce tldraw-loaded? (atom false)) +(rum/defc tldraw-app < rum/reactive + {:init (fn [state] + (p/let [_ (loader/load :tldraw)] + (reset! tldraw-loaded? true)) + state)} + [option] + (let [loaded? (rum/react tldraw-loaded?) + draw-component (when loaded? + (resolve 'frontend.extensions.tldraw/tldraw-app))] + (when draw-component + (draw-component option)))) + +(defn- get-whiteboard-name + [state] + (let [route-match (first (:rum/args state))] + (get-in route-match [:parameters :path :name]))) + +(rum/defc whiteboard-dashboard + [] + ;; Placeholder + [:a {:on-mouse-down + (fn [e] + (util/stop e) + (route-handler/redirect-to-whiteboard! "test"))} "test"]) + +(rum/defcs whiteboard < rum/reactive + [state] + (let [name (get-whiteboard-name state) + tldr-name (str "draws/" name ".tldr")] + (tldraw-app {:file tldr-name}))) diff --git a/src/main/frontend/extensions/tldraw.cljs b/src/main/frontend/extensions/tldraw.cljs index 09bfa0389..2140e856e 100644 --- a/src/main/frontend/extensions/tldraw.cljs +++ b/src/main/frontend/extensions/tldraw.cljs @@ -15,6 +15,7 @@ (rum/defcs draw-inner < rum/reactive (rum/local false ::view-mode?) [state data option] + (println state data option) (let [{:keys [file]} option] (when file [:div.overflow-hidden.draw.tldraw @@ -22,7 +23,7 @@ [:div.draw-wrap.relative {:on-blur #(state/set-block-component-editing-mode! false) :on-wheel util/stop-propagation ;; wheel -> overscroll may cause browser navigation - :style {:height "calc(100vh - 80px)" }} + :style {:height "calc(100vh - 80px)"}} (tldraw {:PageComponent page :searchHandler (comp clj->js vec search/page-search) @@ -32,6 +33,6 @@ (draw-handler/save-draw! file s))) :model data})]]))) -(rum/defc draw +(rum/defc tldraw-app [option] (draw-common/draw-wrapper option draw-inner)) diff --git a/src/main/frontend/fs/nfs.cljs b/src/main/frontend/fs/nfs.cljs index 85e59ee3d..4df1f7597 100644 --- a/src/main/frontend/fs/nfs.cljs +++ b/src/main/frontend/fs/nfs.cljs @@ -90,6 +90,7 @@ (readdir [_this dir] (let [prefix (str "handle/" dir) cached-files (keys @nfs-file-handles-cache)] + (println "cached-files" cached-files) (p/resolved (->> (filter #(string/starts-with? % (str prefix "/")) cached-files) (map (fn [path] diff --git a/src/main/frontend/handler/draw.cljs b/src/main/frontend/handler/draw.cljs index 639daeeb8..3423ebec0 100644 --- a/src/main/frontend/handler/draw.cljs +++ b/src/main/frontend/handler/draw.cljs @@ -8,6 +8,7 @@ [frontend.state :as state] [frontend.util :as util] [logseq.graph-parser.config :as gp-config] + [frontend.fs.protocol :as protocol] [promesa.core :as p])) (defn create-draws-directory! @@ -19,6 +20,15 @@ (fn [_result] nil) (fn [_error] nil))))) +(defn ls-draws-directory! + [repo] + (when repo + (p/let [repo-dir (config/get-repo-dir repo) + fs (fs/get-fs repo-dir) + dir (str repo (str "/" gp-config/default-draw-directory)) + files (protocol/readdir fs dir)] + files))) + (defn save-draw! [file data] (let [path file diff --git a/src/main/frontend/handler/route.cljs b/src/main/frontend/handler/route.cljs index 241cf4b9d..a892c9116 100644 --- a/src/main/frontend/handler/route.cljs +++ b/src/main/frontend/handler/route.cljs @@ -55,6 +55,11 @@ :query-params {:anchor anchor} :push push}))) +(defn redirect-to-whiteboard! + [name] + (redirect! {:to :whiteboard + :path-params {:name (str name)}})) + (defn get-title [name path-params] (case name diff --git a/src/main/frontend/routes.cljs b/src/main/frontend/routes.cljs index faa84c155..39dd0bc33 100644 --- a/src/main/frontend/routes.cljs +++ b/src/main/frontend/routes.cljs @@ -1,15 +1,15 @@ (ns frontend.routes - (:require [frontend.components.home :as home] - [frontend.components.repo :as repo] - [frontend.components.file :as file] + (:require [frontend.components.file :as file] + [frontend.components.home :as home] + [frontend.components.journal :as journal] + [frontend.components.onboarding.setups :as setups] [frontend.components.page :as page] [frontend.components.plugins :as plugins] - [frontend.components.journal :as journal] + [frontend.components.repo :as repo] [frontend.components.search :as search] [frontend.components.settings :as settings] [frontend.components.shortcut :as shortcut] - [frontend.components.onboarding.setups :as setups] - [frontend.extensions.tldraw :as tldraw] + [frontend.components.whiteboard :as whiteboard] [frontend.extensions.zotero :as zotero])) ;; http://localhost:3000/#?anchor=fn.1 @@ -22,9 +22,13 @@ {:name :repos :view repo/repos}] - ["/whiteboard" + ["/whiteboard/:name" {:name :whiteboard - :view #(tldraw/draw {:file "draws/2022-05-15-01-47-49.tldr"})}] + :view whiteboard/whiteboard}] + + ["/whiteboards" + {:name :whiteboards + :view whiteboard/whiteboard-dashboard}] ["/repo/add" {:name :repo-add