mirror of
https://github.com/logseq/logseq.git
synced 2026-04-24 14:14:55 +00:00
fix: page rename undo/redo
This commit is contained in:
@@ -44,7 +44,9 @@ test('undo/redo of a renamed page should be preserved', async ({ page, block })
|
||||
|
||||
await renamePage(page, randomString(10))
|
||||
|
||||
await page.keyboard.press(modKey + '+z')
|
||||
await page.keyboard.press(modKey + '+z') // undo rename page
|
||||
await page.waitForTimeout(100)
|
||||
await page.keyboard.press(modKey + '+z') // undo text edit
|
||||
await page.waitForTimeout(100)
|
||||
|
||||
await expect(page.locator('text="text 1"')).toHaveCount(0)
|
||||
|
||||
@@ -253,12 +253,12 @@
|
||||
(db/page-exists? @*title-value))
|
||||
rename-fn (fn [old-name new-name]
|
||||
(if (and whiteboard-page? (config/db-based-graph? (state/get-current-repo)))
|
||||
(do
|
||||
(db/transact! [{:db/id (:db/id page)
|
||||
:block/original-name new-name
|
||||
:block/name (util/page-name-sanity-lc new-name)
|
||||
:block/updated-at (util/time-ms)}])
|
||||
(route-handler/redirect-to-whiteboard! new-name))
|
||||
(p/do!
|
||||
(db/transact! [{:db/id (:db/id page)
|
||||
:block/original-name new-name
|
||||
:block/name (util/page-name-sanity-lc new-name)
|
||||
:block/updated-at (util/time-ms)}])
|
||||
(route-handler/redirect-to-whiteboard! new-name))
|
||||
(page-handler/rename! old-name new-name)))
|
||||
rollback-fn #(let [old-name (if untitled? "" old-name)]
|
||||
(reset! *title-value old-name)
|
||||
@@ -286,9 +286,9 @@
|
||||
(rollback-fn))
|
||||
|
||||
:else
|
||||
(do
|
||||
(rename-fn (or title page-name) @*title-value)
|
||||
(reset! *edit? false)))
|
||||
(p/do!
|
||||
(rename-fn (or title page-name) @*title-value)
|
||||
(js/setTimeout #(reset! *edit? false) 100)))
|
||||
(util/stop e))]
|
||||
[:input.edit-input.p-0.focus:outline-none.ring-none
|
||||
{:type "text"
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
(defn save-code-editor!
|
||||
[]
|
||||
(let [{:keys [config state editor]} (get @state/state :editor/code-block-context)]
|
||||
(state/set-state! :editor/skip-saving-current-block? true)
|
||||
(state/set-block-component-editing-mode! false)
|
||||
(when editor
|
||||
(.save editor)
|
||||
|
||||
@@ -1315,8 +1315,7 @@
|
||||
(save-current-block! {}))
|
||||
([{:keys [force? skip-properties? current-block] :as opts}]
|
||||
;; non English input method
|
||||
(let [result (when-not (or (state/editor-in-composition?)
|
||||
@(:editor/skip-saving-current-block? @state/state))
|
||||
(let [result (when-not (state/editor-in-composition?)
|
||||
(when (state/get-current-repo)
|
||||
(when-not (state/get-editor-action)
|
||||
(try
|
||||
@@ -1347,7 +1346,6 @@
|
||||
(save-block-aux! db-block value opts))))
|
||||
(catch :default error
|
||||
(log/error :save-block-failed error))))))]
|
||||
(state/set-state! :editor/skip-saving-current-block? false)
|
||||
result)))
|
||||
|
||||
(defn- clean-content!
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
[frontend.util.page :as page-util]
|
||||
[frontend.state :as state]
|
||||
[clojure.set :as set]
|
||||
[medley.core :as medley]))
|
||||
[medley.core :as medley]
|
||||
[frontend.handler.route :as route-handler]
|
||||
[promesa.core :as p]))
|
||||
|
||||
;;;; APIs
|
||||
|
||||
@@ -141,10 +143,14 @@
|
||||
current-editor-cursor (get @(get @state/state :history/tx->editor-cursor) tx-id)
|
||||
editor-cursor current-editor-cursor]
|
||||
(push-redo e)
|
||||
(transact! new-txs (merge {:undo? true}
|
||||
tx-meta))
|
||||
(when (:whiteboard/transact? tx-meta)
|
||||
(state/pub-event! [:whiteboard/undo e]))
|
||||
(p/do!
|
||||
(transact! new-txs (merge {:undo? true}
|
||||
tx-meta))
|
||||
(when (:whiteboard/transact? tx-meta)
|
||||
(state/pub-event! [:whiteboard/undo e]))
|
||||
(when (= :rename-page (:outliner-op tx-meta))
|
||||
(when-let [old-page (:old-name (:data tx-meta))]
|
||||
(route-handler/redirect-to-page! old-page))))
|
||||
(assoc e
|
||||
:txs-op new-txs
|
||||
:editor-cursor editor-cursor))))
|
||||
@@ -155,10 +161,16 @@
|
||||
(let [new-txs (get-txs true txs)
|
||||
current-editor-cursor (get @(get @state/state :history/tx->editor-cursor) tx-id)]
|
||||
(push-undo e)
|
||||
(transact! new-txs (merge {:redo? true}
|
||||
tx-meta))
|
||||
(when (:whiteboard/transact? tx-meta)
|
||||
(p/do!
|
||||
(transact! new-txs (merge {:redo? true}
|
||||
tx-meta))
|
||||
(when (:whiteboard/transact? tx-meta)
|
||||
(state/pub-event! [:whiteboard/redo e]))
|
||||
|
||||
(when (= :rename-page (:outliner-op tx-meta))
|
||||
(when-let [new-page (:new-name (:data tx-meta))]
|
||||
(route-handler/redirect-to-page! new-page))))
|
||||
|
||||
(assoc e
|
||||
:txs-op new-txs
|
||||
:editor-cursor current-editor-cursor))))
|
||||
|
||||
@@ -58,12 +58,6 @@
|
||||
(when (seq pages)
|
||||
(mark-pages-as-loaded! repo pages)))
|
||||
|
||||
(when (= (:outliner-op tx-meta) :delete-page)
|
||||
(state/pub-event! [:page/deleted repo (:deleted-page tx-meta) (:file-path tx-meta)]))
|
||||
|
||||
(when (= (:outliner-op tx-meta) :rename-page)
|
||||
(state/pub-event! [:page/renamed repo (:data tx-meta)]))
|
||||
|
||||
(if (or from-disk? new-graph?)
|
||||
(do
|
||||
(react/clear-query-state!)
|
||||
@@ -87,6 +81,12 @@
|
||||
:tx-data (:tx-data tx-report)
|
||||
:tx-meta (:tx-meta tx-report)}]))))
|
||||
|
||||
(when (= (:outliner-op tx-meta) :delete-page)
|
||||
(state/pub-event! [:page/deleted repo (:deleted-page tx-meta) (:file-path tx-meta)]))
|
||||
|
||||
(when (= (:outliner-op tx-meta) :rename-page)
|
||||
(state/pub-event! [:page/renamed repo (:data tx-meta)]))
|
||||
|
||||
(when-let [deleting-block-id (:ui/deleting-block @state/state)]
|
||||
(when (some (fn [datom] (and
|
||||
(= :block/uuid (:a datom))
|
||||
|
||||
@@ -145,9 +145,6 @@
|
||||
;; for audio record
|
||||
:editor/record-status "NONE"
|
||||
|
||||
;; Whether to skip saving the current block
|
||||
:editor/skip-saving-current-block? (atom false)
|
||||
|
||||
:editor/code-block-context {}
|
||||
|
||||
:db/properties-changed-pages {}
|
||||
|
||||
Reference in New Issue
Block a user