mirror of https://github.com/logseq/logseq
fix: blockref e2e tests
parent
ffcc656d1a
commit
1dbcc2bc3f
|
@ -46,8 +46,8 @@ test('delete selected blocks, block ref should be replaced by content #9406', as
|
||||||
await editNthBlock(page, 0)
|
await editNthBlock(page, 0)
|
||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(100)
|
||||||
await page.keyboard.down('Shift')
|
await page.keyboard.down('Shift')
|
||||||
await page.keyboard.press('ArrowDown')
|
await page.keyboard.press('ArrowDown', { delay: 20 })
|
||||||
await page.keyboard.press('ArrowDown')
|
await page.keyboard.press('ArrowDown', { delay: 20 })
|
||||||
await page.keyboard.up('Shift')
|
await page.keyboard.up('Shift')
|
||||||
await block.waitForSelectedBlocks(2)
|
await block.waitForSelectedBlocks(2)
|
||||||
await page.keyboard.press('Backspace')
|
await page.keyboard.press('Backspace')
|
||||||
|
@ -61,8 +61,8 @@ test('delete and undo #9406', async ({ page, block }) => {
|
||||||
await editNthBlock(page, 0)
|
await editNthBlock(page, 0)
|
||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(100)
|
||||||
await page.keyboard.down('Shift')
|
await page.keyboard.down('Shift')
|
||||||
await page.keyboard.press('ArrowDown')
|
await page.keyboard.press('ArrowDown', { delay: 20 })
|
||||||
await page.keyboard.press('ArrowDown')
|
await page.keyboard.press('ArrowDown', { delay: 20 })
|
||||||
await page.keyboard.up('Shift')
|
await page.keyboard.up('Shift')
|
||||||
await block.waitForSelectedBlocks(2)
|
await block.waitForSelectedBlocks(2)
|
||||||
await page.keyboard.press('Backspace')
|
await page.keyboard.press('Backspace')
|
||||||
|
|
|
@ -61,7 +61,8 @@
|
||||||
[logseq.graph-parser.util.page-ref :as page-ref]
|
[logseq.graph-parser.util.page-ref :as page-ref]
|
||||||
[promesa.core :as p]
|
[promesa.core :as p]
|
||||||
[rum.core :as rum]
|
[rum.core :as rum]
|
||||||
[frontend.handler.db-based.property :as db-property-handler]))
|
[frontend.handler.db-based.property :as db-property-handler]
|
||||||
|
[frontend.db.model :as model]))
|
||||||
|
|
||||||
;; FIXME: should support multiple images concurrently uploading
|
;; FIXME: should support multiple images concurrently uploading
|
||||||
|
|
||||||
|
@ -714,31 +715,37 @@
|
||||||
(when (and repo sibling-block)
|
(when (and repo sibling-block)
|
||||||
(when-let [sibling-block-id (dom/attr sibling-block "blockid")]
|
(when-let [sibling-block-id (dom/attr sibling-block "blockid")]
|
||||||
(when-let [block (db/entity [:block/uuid (uuid sibling-block-id)])]
|
(when-let [block (db/entity [:block/uuid (uuid sibling-block-id)])]
|
||||||
(let [original-block (dom/attr sibling-block "originalblockid")
|
(if (:block/name block)
|
||||||
id (if original-block (:block/uuid block) id)
|
{:prev-block block}
|
||||||
original-content (util/trim-safe
|
(let [original-block (dom/attr sibling-block "originalblockid")
|
||||||
(if (:block/name block)
|
edit-block (some-> (:db/id (state/get-edit-block)) db/entity)
|
||||||
(:block/original-name block)
|
edit-block-has-refs? (some? (:block/_refs edit-block))
|
||||||
(:block/content block)))
|
id (if original-block (:block/uuid block) id)
|
||||||
value' (-> (file-property/remove-built-in-properties-when-file-based repo format original-content)
|
original-content (util/trim-safe
|
||||||
(drawer/remove-logbook))
|
(if (:block/name block)
|
||||||
value (->> value
|
(:block/original-name block)
|
||||||
(file-property/remove-properties-when-file-based repo format)
|
(:block/content block)))
|
||||||
(drawer/remove-logbook))
|
value' (-> (file-property/remove-built-in-properties-when-file-based repo format original-content)
|
||||||
new-value (str value' value)
|
(drawer/remove-logbook))
|
||||||
tail-len (count value)
|
value (->> value
|
||||||
pos (max
|
(file-property/remove-properties-when-file-based repo format)
|
||||||
(if original-content
|
(drawer/remove-logbook))
|
||||||
(gobj/get (utf8/encode original-content) "length")
|
new-value (str value' value)
|
||||||
0)
|
tail-len (count value)
|
||||||
0)]
|
pos (max
|
||||||
(edit-block! (db/pull (:db/id block))
|
(if original-content
|
||||||
pos
|
(gobj/get (utf8/encode original-content) "length")
|
||||||
id
|
0)
|
||||||
{:custom-content new-value
|
0)]
|
||||||
:tail-len tail-len})
|
(edit-block! (if edit-block-has-refs?
|
||||||
{:prev-block block
|
(db/pull (:db/id edit-block))
|
||||||
:new-content new-value})))))
|
(db/pull (:db/id block)))
|
||||||
|
pos
|
||||||
|
id
|
||||||
|
{:custom-content new-value
|
||||||
|
:tail-len tail-len})
|
||||||
|
{:prev-block block
|
||||||
|
:new-content new-value}))))))
|
||||||
|
|
||||||
(declare save-block!)
|
(declare save-block!)
|
||||||
|
|
||||||
|
@ -746,6 +753,7 @@
|
||||||
[eid]
|
[eid]
|
||||||
(empty? (:block/_refs (db/entity eid))))
|
(empty? (:block/_refs (db/entity eid))))
|
||||||
|
|
||||||
|
(declare expand-block!)
|
||||||
(defn delete-block!
|
(defn delete-block!
|
||||||
([repo]
|
([repo]
|
||||||
(delete-block! repo true))
|
(delete-block! repo true))
|
||||||
|
@ -776,15 +784,40 @@
|
||||||
concat-prev-block?
|
concat-prev-block?
|
||||||
(assoc :concat-data
|
(assoc :concat-data
|
||||||
{:last-edit-block (:block/uuid block)}))]
|
{:last-edit-block (:block/uuid block)}))]
|
||||||
(outliner-tx/transact! transact-opts
|
(outliner-tx/transact!
|
||||||
(if concat-prev-block?
|
transact-opts
|
||||||
(let [prev-block' (if (seq (:block/_refs block-e))
|
(cond
|
||||||
(assoc prev-block
|
(and prev-block (:block/name prev-block)
|
||||||
:block/uuid (:block/uuid block))
|
(not= (:db/id prev-block) (:db/id (:block/parent block)))) ; embed page
|
||||||
prev-block)]
|
(let [target (or
|
||||||
(delete-block-aux! block delete-children?)
|
(some-> (model/get-block-last-direct-child (db/get-db)
|
||||||
(save-block! repo prev-block' new-content {:editor/op :delete}))
|
(:db/id prev-block)
|
||||||
(delete-block-aux! block delete-children?)))))))))
|
false)
|
||||||
|
db/entity)
|
||||||
|
prev-block)]
|
||||||
|
(outliner-core/move-blocks! [block] target (not= (:db/id target) (:db/id prev-block)))
|
||||||
|
(when (:block/collapsed? prev-block)
|
||||||
|
(expand-block! (:block/uuid prev-block)))
|
||||||
|
;; FIXME: save-block! will reset :block/parent && :block/left that have been modified by move-blocks! above,
|
||||||
|
(util/schedule #(save-block! repo block value {:editor/op :delete}))
|
||||||
|
(js/setTimeout #(edit-block! (db/pull (:db/id block)) :max (:block/uuid block) {}) 100))
|
||||||
|
|
||||||
|
concat-prev-block?
|
||||||
|
(if (seq (:block/_refs (db/entity (:db/id block))))
|
||||||
|
(do
|
||||||
|
(delete-block-aux! prev-block delete-children?)
|
||||||
|
(save-block! repo block new-content {:editor/op :delete})
|
||||||
|
(outliner-core/save-block! {:db/id (:db/id block)
|
||||||
|
:block/uuid (:block/uuid block)
|
||||||
|
:block/parent (:db/id (:block/parent prev-block))
|
||||||
|
:block/left (or (:db/id (:block/left prev-block))
|
||||||
|
(:db/id (:block/parent prev-block)))}))
|
||||||
|
(do
|
||||||
|
(delete-block-aux! block delete-children?)
|
||||||
|
(save-block! repo prev-block new-content {:editor/op :delete})))
|
||||||
|
|
||||||
|
:else
|
||||||
|
(delete-block-aux! block delete-children?)))))))))
|
||||||
(state/set-editor-op! nil)))
|
(state/set-editor-op! nil)))
|
||||||
|
|
||||||
(defn delete-blocks!
|
(defn delete-blocks!
|
||||||
|
|
|
@ -39,10 +39,7 @@
|
||||||
[state]
|
[state]
|
||||||
(let [{:keys [value]} (get-state)]
|
(let [{:keys [value]} (get-state)]
|
||||||
(editor-handler/clear-when-saved!)
|
(editor-handler/clear-when-saved!)
|
||||||
(when (and
|
(when-not (contains? #{:insert :indent-outdent :auto-save :undo :redo :delete} (state/get-editor-latest-op))
|
||||||
(not (contains? #{:insert :indent-outdent :auto-save :undo :redo :delete} (state/get-editor-op)))
|
|
||||||
;; Don't trigger auto-save if the latest op is undo or redo
|
|
||||||
(not (contains? #{:undo :redo} (state/get-editor-latest-op))))
|
|
||||||
(editor-handler/save-block! (get-state) value)))
|
(editor-handler/save-block! (get-state) value)))
|
||||||
state)
|
state)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue