Merge branch 'master' of github.com:logseq/logseq into master

pull/934/head
Tienson Qin 2020-12-17 18:10:23 +08:00
commit c3538b2268
7 changed files with 49 additions and 92 deletions

View File

@ -19,7 +19,8 @@
[frontend.handler.notification :as notification]
[frontend.components.editor :as editor]
[frontend.context.i18n :as i18n]
[frontend.text :as text]))
[frontend.text :as text]
[frontend.handler.page :as page-handler]))
(defn- set-format-js-loading!
[format value]
@ -89,7 +90,7 @@
:on-click (fn []
(let [title (string/trim @input)]
(when (not (string/blank? title))
(if (db/template-exists? title)
(if (page-handler/template-exists? title)
(notification/show!
[:p "Template already exists!"]
:error)

View File

@ -451,7 +451,7 @@
[:div.flex-1
[:h1.title (t :all-pages)]
(when current-repo
(let [pages (db/get-pages-with-modified-at current-repo)]
(let [pages (page-handler/get-pages-with-modified-at current-repo)]
[:table.table-auto
[:thead
[:tr

View File

@ -48,16 +48,15 @@
get-latest-journals get-marker-blocks get-matched-blocks get-page get-page-alias get-page-alias-names get-page-blocks
get-page-blocks-count get-page-blocks-no-cache get-page-file get-page-format get-page-name get-page-properties
get-page-properties-content get-page-referenced-blocks get-page-referenced-pages get-page-unlinked-references
get-pages get-pages-relation get-pages-that-mentioned-page get-pages-with-modified-at get-public-pages get-tag-pages
get-pages get-pages-relation get-pages-that-mentioned-page get-public-pages get-tag-pages
journal-page? local-native-fs? mark-repo-as-cloned! page-alias-set page-blocks-transform pull-block
rebuild-page-blocks-children reset-config! set-file-last-modified-at! sub-key-value template-exists?
transact-files-db! with-block-refs-count]
reset-config! set-file-last-modified-at! transact-files-db! with-block-refs-count get-modified-pages]
[frontend.db.react
get-current-marker get-current-page get-current-priority get-handler-keys set-file-content! set-key-value
transact-react! remove-key! remove-q! remove-query-component! add-q! add-query-component! clear-query-state!
clear-query-state-without-refs-and-embeds! get-block-blocks-cache-atom get-page-blocks-cache-atom kv q
query-state query-components query-entity-in-component remove-custom-query! set-new-result!]
query-state query-components query-entity-in-component remove-custom-query! set-new-result! sub-key-value]
[frontend.db.query-custom
custom-query custom-query-result-transform])

View File

@ -34,15 +34,6 @@
(when-let [conn (conn/get-files-conn repo-url)]
(d/transact! conn (vec tx-data))))))))
(defn sub-key-value
([key]
(sub-key-value (state/get-current-repo) key))
([repo-url key]
(when (conn/get-conn repo-url)
(-> (react/q repo-url [:kv key] {} key key)
react
key))))
(defn pull-block
[id]
(let [repo (state/get-current-repo)]
@ -103,23 +94,14 @@
(conn/get-conn repo))
(map first)))
(defn get-pages-with-modified-at
(defn get-modified-pages
[repo]
(let [now-long (tc/to-long (t/now))]
(->> (d/q
'[:find ?page-name ?modified-at
:where
[?page :page/original-name ?page-name]
[(get-else $ ?page :page/last-modified-at 0) ?modified-at]]
(conn/get-conn repo))
(seq)
(sort-by (fn [[page modified-at]]
[modified-at page]))
(reverse)
(remove (fn [[page modified-at]]
(or (util/file-page? page)
(and modified-at
(> modified-at now-long))))))))
(d/q
'[:find ?page-name ?modified-at
:where
[?page :page/original-name ?page-name]
[(get-else $ ?page :page/last-modified-at 0) ?modified-at]]
(conn/get-conn repo)))
(defn get-page-alias
[repo page-name]
@ -1046,56 +1028,6 @@
db)
(db-utils/seq-flatten)))
(defn rebuild-page-blocks-children
"For performance reason, we can update the :block/children value after every operation,
but it's hard to make sure that it's correct, also it needs more time to implement it.
We can improve it if the performance is really an issue."
[repo page]
(let [blocks (->>
(get-page-blocks-no-cache repo page {:pull-keys '[:db/id :block/uuid :block/level :block/pre-block? :block/meta]})
(remove :block/pre-block?)
(map #(select-keys % [:db/id :block/uuid :block/level]))
(reverse))
original-blocks blocks]
(loop [blocks blocks
tx []
children {}
last-level 10000]
(if (seq blocks)
(let [[{:block/keys [uuid level] :as block} & others] blocks
[tx children] (cond
(< level last-level) ; parent
(let [cur-children (get children last-level)
tx (if (seq cur-children)
(vec
(concat
tx
(map
(fn [child]
[:db/add (:db/id block) :block/children [:block/uuid child]])
cur-children)))
tx)
children (-> children
(dissoc last-level)
(update level conj uuid))]
[tx children])
(> level last-level) ; child of sibling
(let [children (update children level conj uuid)]
[tx children])
:else ; sibling
(let [children (update children last-level conj uuid)]
[tx children]))]
(recur others tx children level))
;; TODO: add top-level children to the "Page" block (we might remove the Page from db schema)
(when (seq tx)
(let [delete-tx (map (fn [block]
[:db/retract (:db/id block) :block/children])
original-blocks)]
(->> (concat delete-tx tx)
(remove nil?))))))))
(defn get-all-templates
[]
(let [pred (fn [db properties]
@ -1112,14 +1044,6 @@
[(get m "template") e]))
(into {}))))
(defn template-exists?
[title]
(when title
(let [templates (keys (get-all-templates))]
(when (seq templates)
(let [templates (map string/lower-case templates)]
(contains? (set templates) (string/lower-case title)))))))
(defonce blocks-count-cache (atom nil))
(defn blocks-count

View File

@ -336,6 +336,15 @@
{:key [:kv key]})
(remove-key! repo-url key)))
(defn sub-key-value
([key]
(sub-key-value (state/get-current-repo) key))
([repo-url key]
(when (conn/get-conn repo-url)
(-> (q repo-url [:kv key] {} key key)
react
key))))
(defn set-file-content!
[repo path content]
(when (and repo path)

View File

@ -22,7 +22,9 @@
[frontend.fs :as fs]
[promesa.core :as p]
[lambdaisland.glogi :as log]
[frontend.format.mldoc :as mldoc]))
[frontend.format.mldoc :as mldoc]
[cljs-time.core :as t]
[cljs-time.coerce :as tc]))
(defn- get-directory
[journal?]
@ -467,3 +469,25 @@
'())
new-pages (take 12 (distinct (cons page pages)))]
(db/set-key-value repo :recent/pages new-pages)))
(defn template-exists?
[title]
(when title
(let [templates (keys (db/get-all-templates))]
(when (seq templates)
(let [templates (map string/lower-case templates)]
(contains? (set templates) (string/lower-case title)))))))
(defn get-pages-with-modified-at
[repo]
(let [now-long (tc/to-long (t/now))]
(->> (db/get-modified-pages repo)
(seq)
(sort-by (fn [[page modified-at]]
[modified-at page]))
(reverse)
(remove (fn [[page modified-at]]
(or (util/file-page? page)
(and modified-at
(> modified-at now-long))))))))

View File

@ -313,7 +313,7 @@
tx
transact-option)
(when (seq pages)
(let [children-tx (mapcat #(db/rebuild-page-blocks-children repo %) pages)]
(let [children-tx (mapcat #(rebuild-page-blocks-children repo %) pages)]
(when (seq children-tx)
(db/transact! repo children-tx))))
(when (seq files)