瀏覽代碼

fix: alias is not considered in some situations

Junyi Du 3 年之前
父節點
當前提交
22dc065bb8
共有 3 個文件被更改,包括 16 次插入14 次删除
  1. 9 11
      src/main/frontend/extensions/graph.cljs
  2. 6 3
      src/main/frontend/handler/editor.cljs
  3. 1 0
      src/main/frontend/handler/route.cljs

+ 9 - 11
src/main/frontend/extensions/graph.cljs

@@ -1,6 +1,7 @@
 (ns frontend.extensions.graph
   (:require [cljs-bean.core :as bean]
             [clojure.string :as string]
+            [frontend.db.model :as model]
             [frontend.extensions.graph.pixi :as pixi]
             [frontend.handler.route :as route-handler]
             [goog.object :as gobj]
@@ -30,20 +31,17 @@
 (defn on-click-handler [graph node event *focus-nodes *n-hops drag? dark?]
   ;; shift+click to select the page
   (if (or (gobj/get event "shiftKey") drag?)
-    (let [page-name (string/lower-case node)]
-      (when-not @*n-hops
+    ((when-not @*n-hops
         ;; Don't trigger re-render
-        (swap! *focus-nodes
-               (fn [v]
-                 (vec (distinct (conj v node))))))
+       (swap! *focus-nodes
+              (fn [v]
+                (vec (distinct (conj v node))))))
       ;; highlight current node
-      (let [node-attributes (-> (.getNodeAttributes (.-graph graph) node)
-                                (bean/->clj))]
-        (.setNodeAttribute (.-graph graph) node "parent" "ls-selected-nodes"))
-      (highlight-neighbours! graph node (set @*focus-nodes) dark?)
-      (highlight-edges! graph node dark?))
+     (.setNodeAttribute (.-graph graph) node "parent" "ls-selected-nodes")
+     (highlight-neighbours! graph node (set @*focus-nodes) dark?)
+     (highlight-edges! graph node dark?))
     (when-not drag?
-      (let [page-name (string/lower-case node)]
+      (let [page-name (model/get-redirect-page-name node)]
         (.unhoverNode ^js graph node)
         (route-handler/redirect-to-page! page-name)))))
 

+ 6 - 3
src/main/frontend/handler/editor.cljs

@@ -1284,6 +1284,7 @@
           (delete-blocks! repo blocks))))))
 
 (defn- get-nearest-page
+  "Return the nearset page-name (not dereferenced, may be an alias)"
   []
   (when-let [block (state/get-edit-block)]
     (when (:block/uuid block)
@@ -1318,7 +1319,7 @@
   []
   (when-let [page (get-nearest-page)]
     (when-not (string/blank? page)
-      (let [page-name (string/lower-case page)]
+      (let [page-name (db-model/get-redirect-page-name page)]
         (state/clear-edit!)
         (insert-first-page-block-if-not-exists! page-name)
         (route-handler/redirect-to-page! page-name)))))
@@ -2496,8 +2497,10 @@
                                  nil))
               "block-ref" (open-block-in-sidebar! (:link thing-at-point))
               "page-ref" (when-not (string/blank? (:link thing-at-point))
-                           (insert-first-page-block-if-not-exists! (:link thing-at-point))
-                           (route-handler/redirect-to-page! (:link thing-at-point)))
+                           (let [page (:link thing-at-point)
+                                 page-name (db-model/get-redirect-page-name page)]
+                             (insert-first-page-block-if-not-exists! page-name)
+                             (route-handler/redirect-to-page! page-name)))
               "list-item" (dwim-in-list state)
               "properties-drawer" (dwim-in-properties state))
 

+ 1 - 0
src/main/frontend/handler/route.cljs

@@ -36,6 +36,7 @@
   (redirect! {:to :graph}))
 
 (defn redirect-to-page!
+  "Must ensure `page-name` is dereferenced (not an alias), or it will create a wrong new page with that name (#3511)."
   ([page-name]
    (recent-handler/add-page-to-recent! (state/get-current-repo) page-name)
    (redirect! {:to :page