mirror of
https://github.com/logseq/logseq.git
synced 2026-05-02 01:46:35 +00:00
Core outliner operations refactoring (#4880)
* Add outliner nested transact! Copied the code mostly from https://github.com/logseq/logseq/pull/4671 by zhiyuan * refactor: insert-blocks * fix: insert-blocks * fix: move cursor to the last block when inserting * fix: replace the current block when inserting and its content is empty * keep only :insert-blocks * expose only :delete-blocks * Use existing implementations for move-nodes-up-down and indent/outdent. * fix editing state not updated immediately * fix editing status * fix: avoid recursive copy * fix: inserting blocks after an empty block * Implement move-blocks with insert-blocks * fix: block left * Implement move-blocks-up-down with move-blocks * fix: paste text * Implement indent-outdent-blocks with move-blocks * fix: indent/outdent * feat: multiple blocks drag && drop * fix: indent/outdent blocks * fix: drag drop * Port unit tests for outliner.core * enhance: open collapsed parent when indenting blocks * refactor: block selection * fix: indent/outdent blocks with different levels * Add instrument on invalid outliner structure * fix: can't write a block if the page has any outdated blocks * fix: editing status for empty page * fix: multiple drag & drop * fix: drag & drop disallows moving from parents to its child * fix: public property * fix: can't delete first empty block * Remove unused code * fix: e2e tests A workaround is to not select/highlight the block when pressing esc if it has fenced code. * remove unused code * Add batch transaction test * fix: update :block/page when dragging targets' children to another page * Add more tests * Simplify extract * Replace db/get-conn with db/get-db * Simplify extracting blocks from ast * Code cleanup * Code cleanup * Add outliner core fuzzy tests * Remove unused code * fix: cursor not jump to the upper block when pressing Enter in the beginning * fix: Enter in the beginning of a non-empty block * Fix lint warnings * Add editor random e2e tests * Fix typo * enhance: move some fns and add some comments * enhance(outliner): add page-block? util * fix: increase td width to prevent content overflow Signed-off-by: Yue Yang <g1enyy0ung@gmail.com> * First pass at file tests for file-sync Each action usually passes by 5th try * Fix two incorrect calls caught by tests * More test improvements - Easier auth setup - subdirectory is configurable - list graphs api also exercised * Address cleanup from #3839 - Remove unused translation key - Delete or TODO commented code - Capitalize notifications to users * fix quick capture template not working * enhance(sync): add logout * enhance: add logout i18n * fix(plugin): sometimes plugin settings of gui not work when entry from app settings * enable show-brackets? toggle for orgmode [[file:./pages/demo.org][demo]] * fix(sync): fix unfinishable sync loop * feature: logseq protocol; refactor persistGraph * fix: deeplink support * fix: broadcast persist graph on opening new graph with logseq protocol * feat: logseq protocol open action for page-name and uuid * fix: logseq protocol graph param validation * ux: copy logseq URL of block * enhance: remove the redundant 'open' from logseq protocol (v0.1) * ux: page dropdown button for copy page URL * chore: logseq protocol comments * don't create new contents file when changing format Logseq now creates a new contents file when users try to toggle the preferred format, which causes file duplications error. * fix pasting in src block not working on iOS close https://github.com/logseq/logseq/issues/4914 * fix playing video goes into editing mode on iOS * fix copy to clipboard failure on iOS * add Podfile item * fix mobile toolbar order not persisting after restart * test(e2e): add test for backspace and cursor pos (#4896) * test(e2e): add test for backspace and cursor pos * fix(test): refine, fix wrong helper * fix(ui): warn about illegal git commit interval * enhance(editor): allow global git cmd shortcut * style(settings): line-space of general/journals * enhance(editor): accept enter in dummy block Fix #4931 * fix editing state not updated immediately * fix: can't write a block if the page has any outdated blocks TODO: clean outdated blocks * fix: editing status for empty page * Random tree for outliner core tests * Add pre assertions and fn docs based on Zhiyuan's suggestions * Made some changes based on Gabriel's suggestions * fix: tests * fix: save current block before moving * Updated the timeout to 100ms based on llcc's suggestion https://github.com/logseq/logseq/pull/4880#discussion_r851966301 * api-insert-new-block! supports replace-empty-target? * fix: replace all :reuse-last-block? usage Co-authored-by: rcmerci <rcmerci@gmail.com> Co-authored-by: Yue Yang <g1enyy0ung@gmail.com> Co-authored-by: Gabriel Horner <gabriel@logseq.com> Co-authored-by: llcc <lzhes43@gmail.com> Co-authored-by: charlie <xyhp915@qq.com> Co-authored-by: Junyi Du <junyidu.cn@gmail.com> Co-authored-by: Andelf <andelf@gmail.com>
This commit is contained in:
@@ -374,7 +374,7 @@
|
||||
:block/original-name new-name}]
|
||||
page-txs (if properties-block-tx (conj page-txs properties-block-tx) page-txs)]
|
||||
|
||||
(d/transact! (db/get-conn repo false) page-txs)
|
||||
(d/transact! (db/get-db repo false) page-txs)
|
||||
|
||||
;; If page name changed after sanitization
|
||||
(when (or (util/create-title-property? new-page-name)
|
||||
@@ -471,9 +471,9 @@
|
||||
(outliner-core/block)
|
||||
(outliner-tree/-get-down)
|
||||
(outliner-core/get-data))
|
||||
to-last-direct-child-id (model/get-block-last-direct-child (db/get-conn) to-id)
|
||||
to-last-direct-child-id (model/get-block-last-direct-child (db/get-db) to-id false)
|
||||
repo (state/get-current-repo)
|
||||
conn (conn/get-conn repo false)
|
||||
conn (conn/get-db repo false)
|
||||
datoms (d/datoms @conn :avet :block/page from-id)
|
||||
block-eids (mapv :e datoms)
|
||||
blocks (db-utils/pull-many repo '[:db/id :block/page :block/refs :block/path-refs :block/left :block/parent] block-eids)
|
||||
@@ -737,9 +737,7 @@
|
||||
(editor-handler/insert-template!
|
||||
nil
|
||||
template
|
||||
{:get-pos-fn (fn []
|
||||
[page false false false])
|
||||
:page-block page})))
|
||||
{:target page})))
|
||||
(ui-handler/re-render-root!))))))))
|
||||
|
||||
(defn open-today-in-sidebar
|
||||
|
||||
Reference in New Issue
Block a user