Răsfoiți Sursa

fix: reorg routes

Peng Xiao 3 ani în urmă
părinte
comite
a05ab09f89

+ 6 - 6
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"

+ 0 - 1
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)

+ 0 - 18
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}

+ 1 - 1
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)

+ 2 - 2
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)

+ 38 - 0
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})))

+ 3 - 2
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))

+ 1 - 0
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]

+ 10 - 0
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

+ 5 - 0
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

+ 12 - 8
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