Bläddra i källkod

fix: page names in refs not updated after renamed

Tienson Qin 1 år sedan
förälder
incheckning
ede9e5df5d

+ 0 - 1
deps/db/src/logseq/db/sqlite/util.cljs

@@ -119,5 +119,4 @@
   [block]
   [block]
   (and block
   (and block
        (:block/name block)
        (:block/name block)
-       (:block/original-name block)
        (nil? (:block/page block))))
        (nil? (:block/page block))))

+ 36 - 30
src/main/frontend/components/block.cljs

@@ -509,7 +509,7 @@
 (declare page-reference)
 (declare page-reference)
 
 
 (defn open-page-ref
 (defn open-page-ref
-  [page-entity e page-name page-name-in-block contents-page?]
+  [page-entity e page-name contents-page?]
   (util/stop e)
   (util/stop e)
   (when (not (util/right-click? e))
   (when (not (util/right-click? e))
     (let [page (or (first (:block/_alias page-entity)) page-entity)]
     (let [page (or (first (:block/_alias page-entity)) page-entity)]
@@ -527,7 +527,7 @@
          (whiteboard-handler/closest-shape (.-target e)))
          (whiteboard-handler/closest-shape (.-target e)))
 
 
         (nil? page)
         (nil? page)
-        (state/pub-event! [:page/create page-name-in-block])
+        (state/pub-event! [:page/create page-name])
 
 
         :else
         :else
         (route-handler/redirect-to-page! (:block/uuid page)))))
         (route-handler/redirect-to-page! (:block/uuid page)))))
@@ -544,13 +544,14 @@
    page-name-in-block is the overridable name of the page (legacy)
    page-name-in-block is the overridable name of the page (legacy)
 
 
    All page-names are sanitized except page-name-in-block"
    All page-names are sanitized except page-name-in-block"
-  [state config page-name-in-block page-name page-entity contents-page? children html-export? label whiteboard-page?]
+  [state config page-entity contents-page? children html-export? label whiteboard-page?]
   (let [*hover? (::hover? state)
   (let [*hover? (::hover? state)
         *mouse-down? (::mouse-down? state)
         *mouse-down? (::mouse-down? state)
         tag? (:tag? config)
         tag? (:tag? config)
+        page-name (:block/name page-entity)
         breadcrumb? (:breadcrumb? config)
         breadcrumb? (:breadcrumb? config)
         config (assoc config :whiteboard-page? whiteboard-page?)
         config (assoc config :whiteboard-page? whiteboard-page?)
-        untitled? (model/untitled-page? page-name)
+        untitled? (when page-name (model/untitled-page? page-name))
         display-close-button? (and (not (:hide-close-button? config))
         display-close-button? (and (not (:hide-close-button? config))
                                    (not config/publishing?))
                                    (not config/publishing?))
         hide-icon? (:hide-icon? config)]
         hide-icon? (:hide-icon? config)]
@@ -564,21 +565,21 @@
                (and tag? display-close-button?) (str " pl-4"))
                (and tag? display-close-button?) (str " pl-4"))
       :data-ref page-name
       :data-ref page-name
       :draggable true
       :draggable true
-      :on-drag-start (fn [e] (editor-handler/block->data-transfer! page-name-in-block e true))
+      :on-drag-start (fn [e] (editor-handler/block->data-transfer! page-name e true))
       :on-mouse-over #(reset! *hover? true)
       :on-mouse-over #(reset! *hover? true)
       :on-mouse-leave #(reset! *hover? false)
       :on-mouse-leave #(reset! *hover? false)
       :on-pointer-down (fn [e]
       :on-pointer-down (fn [e]
-                       (if breadcrumb?
-                         (.preventDefault e)
-                         (do
-                           (util/stop e)
-                           (reset! *mouse-down? true))))
+                         (if breadcrumb?
+                           (.preventDefault e)
+                           (do
+                             (util/stop e)
+                             (reset! *mouse-down? true))))
       :on-pointer-up (fn [e]
       :on-pointer-up (fn [e]
-                     (when @*mouse-down?
-                       (open-page-ref page-entity e page-name page-name-in-block contents-page?)
-                       (reset! *mouse-down? false)))
+                       (when @*mouse-down?
+                         (open-page-ref page-entity e page-name contents-page?)
+                         (reset! *mouse-down? false)))
       :on-key-up (fn [e] (when (and e (= (.-key e) "Enter"))
       :on-key-up (fn [e] (when (and e (= (.-key e) "Enter"))
-                           (open-page-ref page-entity e page-name page-name-in-block contents-page?)))}
+                           (open-page-ref page-entity e page-name contents-page?)))}
      (when-not hide-icon?
      (when-not hide-icon?
        (when-let [icon (get page-entity (pu/get-pid :logseq.property/icon))]
        (when-let [icon (get page-entity (pu/get-pid :logseq.property/icon))]
          [:span.mr-1.inline-flex.items-center (icon/icon icon)]))
          [:span.mr-1.inline-flex.items-center (icon/icon icon)]))
@@ -592,8 +593,8 @@
               (rum/with-key (page-reference html-export? page-name (assoc config :children children) nil) page-name))))
               (rum/with-key (page-reference html-export? page-name (assoc config :children children) nil) page-name))))
         (cond
         (cond
           (and label
           (and label
-            (string? label)
-            (not (string/blank? label)))                    ; alias
+               (string? label)
+               (not (string/blank? label)))                    ; alias
           label
           label
 
 
           (coll? label)
           (coll? label)
@@ -608,16 +609,15 @@
                         (pdf-utils/hls-file? page-name)
                         (pdf-utils/hls-file? page-name)
                         (pdf-utils/fix-local-asset-pagename page-name)
                         (pdf-utils/fix-local-asset-pagename page-name)
 
 
-                        (not= (util/safe-page-name-sanity-lc original-name) page-name-in-block)
-                        page-name-in-block                  ;; page-name-in-block might be overridden (legacy))
+                        (not= (util/safe-page-name-sanity-lc original-name) page-name)
+                        page-name                  ;; page-name-in-block might be overridden (legacy))
 
 
                         original-name
                         original-name
                         (util/trim-safe original-name)
                         (util/trim-safe original-name)
 
 
                         :else
                         :else
                         (util/trim-safe page-name))
                         (util/trim-safe page-name))
-                _ (when-not page-entity (js/console.warn "page-inner's page-entity is nil, given page-name: " page-name
-                                          " page-name-in-block: " page-name-in-block))]
+                _ (when-not page-entity (js/console.warn "page-inner's page-entity is nil, given page-name: " page-name))]
             (if tag? (str "#" s) s))))]
             (if tag? (str "#" s) s))))]
 
 
      (let [repo (state/get-current-repo)
      (let [repo (state/get-current-repo)
@@ -692,20 +692,20 @@
                 children)
                 children)
       children)))
       children)))
 
 
-(rum/defc page-cp
+(rum/defcs page-cp-aux < db-mixins/query
+  {:init (fn [state]
+           (assoc state :page-id (:db/id (last (:rum/args state)))))}
   "Component for a page. `page` argument contains :block/name which can be (un)sanitized page name.
   "Component for a page. `page` argument contains :block/name which can be (un)sanitized page name.
    Keys for `config`:
    Keys for `config`:
    - `:preview?`: Is this component under preview mode? (If true, `page-preview-trigger` won't be registered to this `page-cp`)"
    - `:preview?`: Is this component under preview mode? (If true, `page-preview-trigger` won't be registered to this `page-cp`)"
-  [{:keys [html-export? label children contents-page? preview? disable-preview?] :as config} page]
-  (when-let [page-name-in-block (:block/name page)]
-    (let [page-name-in-block (common-util/remove-boundary-slashes page-name-in-block)
-          page-name (util/page-name-sanity-lc page-name-in-block)
-          page-entity (if (e/entity? page) page (db/get-page page-name))
+  [state {:keys [html-export? label children contents-page? preview? disable-preview?] :as config} page]
+  (when-let [id (or (:db/id page) (:page-id state))]
+    (let [page-entity (if (e/entity? page) page (db/entity id))
+          page-entity (when page-entity (db/sub-block (:db/id page-entity)))
+          page-name (or (:block/name page-entity)
+                        (:block/name page))
           whiteboard-page? (model/whiteboard-page? page-name)
           whiteboard-page? (model/whiteboard-page? page-name)
-          inner (page-inner config
-                            page-name-in-block
-                            page-name
-                            page-entity contents-page? children html-export? label whiteboard-page?)
+          inner (page-inner config page-entity contents-page? children html-export? label whiteboard-page?)
           modal? (:modal/show? @state/state)]
           modal? (:modal/show? @state/state)]
       (if (and (not (util/mobile?))
       (if (and (not (util/mobile?))
                (not= page-name (:id config))
                (not= page-name (:id config))
@@ -715,6 +715,12 @@
         (page-preview-trigger (assoc config :children inner) page-name)
         (page-preview-trigger (assoc config :children inner) page-name)
         inner))))
         inner))))
 
 
+(rum/defc page-cp < rum/static
+  [config page]
+  (when-let [page-name (:block/name page)]
+    (let [page (if (e/entity? page) page (db/get-page page-name))]
+      (page-cp-aux config page))))
+
 (rum/defc asset-reference
 (rum/defc asset-reference
   [config title path]
   [config title path]
   (let [repo (state/get-current-repo)
   (let [repo (state/get-current-repo)

+ 2 - 1
src/main/frontend/worker/pipeline.cljs

@@ -96,7 +96,8 @@
                               (delete-property-parent-block-if-empty tx-report deleted-block-uuids))
                               (delete-property-parent-block-if-empty tx-report deleted-block-uuids))
 
 
                             ;; update block/tx-id
                             ;; update block/tx-id
-                            (let [updated-blocks (remove (fn [b] (contains? (set deleted-block-uuids) (:block/uuid b))) blocks)
+                            (let [updated-blocks (remove (fn [b] (contains? (set deleted-block-uuids) (:block/uuid b)))
+                                                         (concat pages blocks))
                                   tx-id (get-in tx-report [:tempids :db/current-tx])]
                                   tx-id (get-in tx-report [:tempids :db/current-tx])]
                               (->>
                               (->>
                                (map (fn [b]
                                (map (fn [b]