Procházet zdrojové kódy

fix: can't rename page

close #3636
Tienson Qin před 4 roky
rodič
revize
59fde1b41f
1 změnil soubory, kde provedl 15 přidání a 10 odebrání
  1. 15 10
      src/main/frontend/handler/page.cljs

+ 15 - 10
src/main/frontend/handler/page.cljs

@@ -349,7 +349,7 @@
     (doseq [page-id page-ids]
       (outliner-file/sync-to-file page-id))))
 
-(defn- rename-page-aux [old-name new-name]
+(defn- rename-page-aux [old-name new-name redirect?]
   (when-let [repo (state/get-current-repo)]
     (when-let [page (db/pull [:block/name (string/lower-case old-name)])]
       (let [old-original-name   (:block/original-name page)
@@ -385,10 +385,12 @@
 
         (outliner-file/sync-to-file page))
 
+
       ;; Redirect to the new page
-      (route-handler/redirect! {:to          :page
-                                :push        false
-                                :path-params {:name (string/lower-case new-name)}})
+      (when redirect?
+        (route-handler/redirect! {:to          :page
+                                  :push        false
+                                  :path-params {:name (string/lower-case new-name)}}))
 
       (repo-handler/push-if-auto-enabled! repo)
 
@@ -417,7 +419,7 @@
                              (util/format "[[%s]]" new-ns-name))]
           (when (and old-page-title new-page-title)
             (p/do!
-             (rename-page-aux old-page-title new-page-title)
+             (rename-page-aux old-page-title new-page-title false)
              (println "Renamed " old-page-title " to " new-page-title))))))
     (when nested-pages-ns
       ;; rename page "[[obsidian/page1]] is a tool" to "[[logseq/page1]] is a tool"
@@ -429,17 +431,20 @@
                              (util/format "[[%s/" new-ns-name))]
           (when (and old-page-title new-page-title)
             (p/do!
-             (rename-page-aux old-page-title new-page-title)
+             (rename-page-aux old-page-title new-page-title false)
              (println "Renamed " old-page-title " to " new-page-title))))))))
 
 (defn- rename-namespace-pages!
   [repo old-name new-name]
-  (let [pages (db/get-namespace-pages repo old-name)]
+  (let [pages (db/get-namespace-pages repo old-name)
+        page (db/pull [:block/name (string/lower-case old-name)])
+        pages (cons page pages)]
     (doseq [{:block/keys [name original-name]} pages]
       (let [old-page-title (or original-name name)
-            new-page-title (string/replace old-page-title old-name new-name)]
+            new-page-title (string/replace old-page-title old-name new-name)
+            redirect? (= name (:block/name page))]
         (when (and old-page-title new-page-title)
-          (p/let [_ (rename-page-aux old-page-title new-page-title)]
+          (p/let [_ (rename-page-aux old-page-title new-page-title redirect?)]
             (println "Renamed " old-page-title " to " new-page-title)))))))
 
 (defn page-exists?
@@ -503,7 +508,7 @@
       (do
         (cond
           (= (string/lower-case old-name) (string/lower-case new-name))
-          (rename-page-aux old-name new-name)
+          (rename-page-aux old-name new-name true)
 
           (db/pull [:block/name (string/lower-case new-name)])
           (merge-pages! old-name new-name)