Fix: broken linked references (#6105)

* enhance: clicking the refresh button if a query is slow

* fix: skip running slow queries if there's no need to refresh

* fix: linked reference filtering does not work on TASK items

close #1669

* fix: each block should have its own page as a reference when query page references

* fix: references

* fix: non consecutive blocks in query result and filtered linked references

* simplify filters logic

* fix: ref numbers

* Save both :block/refs and :block/path-refs for different usage

* fix: block refs

* enhance: move scheduled and deadlines to its own ns

* linked references performance tweaks

* mouse hover filters icon to expand the collapsed linked refs

* perf: react/refresh! once instead twice

* enhance: compute flashcards every hour instead of every 5s

* feat: macros as blocks

* feat: flashcards list

* fix: refed pages count

* fix: can't select in linked references

* fix: block editing on linked refs

* perf: editing in linked references

* enhance: update srs cards number when clicking flashcards

* Add a test for the case fixed in #6100

* Address feedbacks from Gabriel

* fix: Block Ref Indicator is missing from the references-blocks class

close #5375

* fix: referenced pages

* fix: page refs

* fix: Using filters pushed the title property to the second block

close #5845

Co-authored-by: Gabriel Horner <gabriel@logseq.com>
This commit is contained in:
Tienson Qin
2022-08-04 13:03:12 +08:00
committed by GitHub
parent 0694154829
commit a1ca6820df
47 changed files with 1184 additions and 933 deletions

View File

@@ -15,7 +15,8 @@
(defn extract-blocks
"Wrapper around logseq.graph-parser.block/extract-blocks that adds in system state
and handles unexpected failure."
[blocks content with-id? format]
[blocks content format {:keys [with-id?]
:or {with-id? true}}]
(try
(gp-block/extract-blocks blocks content with-id? format
{:user-config (state/get-config)
@@ -38,25 +39,15 @@ and handles unexpected failure."
(defn parse-block
([block]
(parse-block block nil))
([{:block/keys [uuid content page format] :as block} {:keys [with-id?]
([{:block/keys [uuid content format] :as block} {:keys [with-id?]
:or {with-id? true}}]
(when-not (string/blank? content)
(let [block (dissoc block :block/pre-block?)
ast (format/to-edn content format nil)
blocks (extract-blocks ast content with-id? format)
blocks (extract-blocks ast content format {:with-id? with-id?})
new-block (first blocks)
parent-refs (->> (db/get-block-parent (state/get-current-repo) uuid)
:block/path-refs
(map :db/id))
{:block/keys [refs]} new-block
ref-pages (filter :block/name refs)
path-ref-pages (->> (concat ref-pages parent-refs [(:db/id page)])
(remove nil?))
block (cond->
(merge
block
new-block
{:block/path-refs path-ref-pages})
(merge block new-block)
(> (count blocks) 1)
(assoc :block/warning :multiple-blocks))
block (dissoc block :block/title :block/body :block/level)]