chore: use refresh! in transact-react!

pull/1672/head
Tienson Qin 2021-04-16 09:56:55 +08:00
parent 700ff65c46
commit 831d27147b
8 changed files with 41 additions and 77 deletions

View File

@ -56,7 +56,7 @@
get-current-marker get-current-page get-current-priority get-handler-keys 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! sub-key-value refresh]
query-state query-components query-entity-in-component remove-custom-query! set-new-result! sub-key-value refresh!]
[frontend.db.query-custom
custom-query]

View File

@ -275,45 +275,7 @@
distinct)))
[[key]])))
(defn transact-react!
[repo-url tx-data {:keys [key data] :as handler-opts}]
(when-not config/publishing?
(let [repo-url (or repo-url (state/get-current-repo))
tx-data (->> (util/remove-nils tx-data)
(remove nil?))
get-conn (fn [] (conn/get-conn repo-url false))]
(when (and (seq tx-data) (get-conn))
(let [tx-result (d/transact! (get-conn) (vec tx-data))
db (:db-after tx-result)
handler-keys (get-handler-keys handler-opts)]
(doseq [handler-key handler-keys]
(let [handler-key (vec (cons repo-url handler-key))]
(when-let [cache (get @query-state handler-key)]
(let [{:keys [query inputs transform-fn query-fn inputs-fn]} cache]
(when (or query query-fn)
(let [new-result (->
(cond
query-fn
(profile
"Query:"
(doall (query-fn db)))
inputs-fn
(let [inputs (inputs-fn)]
(apply d/q query db inputs))
(keyword? query)
(db-utils/get-key-value repo-url query)
(seq inputs)
(apply d/q query db inputs)
:else
(d/q query db))
transform-fn)]
(set-new-result! handler-key new-result))))))))))))
(defn refresh
(defn refresh!
[repo-url {:keys [key data] :as handler-opts}]
(let [handler-keys (get-handler-keys handler-opts)
db (conn/get-conn repo-url)]
@ -344,6 +306,17 @@
transform-fn)]
(set-new-result! handler-key new-result)))))))))
(defn transact-react!
[repo-url tx-data {:keys [key data] :as handler-opts}]
(when-not config/publishing?
(let [repo-url (or repo-url (state/get-current-repo))
tx-data (->> (util/remove-nils tx-data)
(remove nil?))
get-conn (fn [] (conn/get-conn repo-url false))]
(when (and (seq tx-data) (get-conn))
(d/transact! (get-conn) (vec tx-data))
(refresh! repo-url handler-opts)))))
(defn set-key-value
[repo-url key value]
(if value

View File

@ -36,5 +36,5 @@
:else
(outliner-core/move-subtree current-node target-node true))
(let [repo (state/get-current-repo)]
(db/refresh repo {:key :block/change
:data [(:data current-node) (:data target-node)]})))))
(db/refresh! repo {:key :block/change
:data [(:data current-node) (:data target-node)]})))))

View File

@ -311,7 +311,7 @@
(outliner-core/save-node))
(let [opts {:key :block/change
:data [block]}]
(db/refresh repo opts))))
(db/refresh! repo opts))))
(repo-handler/push-if-auto-enabled! repo)))
@ -408,7 +408,7 @@
;; :data (map (fn [block] (assoc block :block/page page)) blocks)}]
;; (do (state/update-last-edit-block)
;; #_(build-outliner-relation (first blocks) (first after-blocks))
;; (db/refresh repo opts)
;; (db/refresh! repo opts)
;; (let [files (remove nil? files)]
;; (when (seq files)
;; (file-handler/alter-files repo files opts)))))
@ -513,7 +513,7 @@
"db refresh"
(let [opts {:key :block/insert
:data [current-block next-block]}]
(db/refresh repo opts)))
(db/refresh! repo opts)))
(ok-handler next-block)
(state/set-editor-op! nil))))
@ -716,7 +716,7 @@
(->
(outliner-core/block block)
(outliner-core/delete-node))
(db/refresh repo {:key :block/change :data [block]})
(db/refresh! repo {:key :block/change :data [block]})
(when (or (seq ref-pages) (seq ref-blocks))
(ui-handler/re-render-root!))))))
@ -774,7 +774,7 @@
(outliner-core/delete-nodes start-node end-node lookup-refs)
(let [opts {:key :block/change
:data blocks}]
(db/refresh repo opts))))))
(db/refresh! repo opts))))))
(defn- block-property-aux!
[block-id key value]
@ -799,21 +799,21 @@
(outliner-core/save-node block)
(let [opts {:key :block/change
:data [block]}]
(db/refresh repo opts)))))))
(db/refresh! repo opts)))))))
(defn remove-block-property!
[block-id key]
(block-property-aux! block-id key nil)
(db/refresh (state/get-current-repo)
{:key :block/change
:data [(db/pull [:block/uuid block-id])]}))
(db/refresh! (state/get-current-repo)
{:key :block/change
:data [(db/pull [:block/uuid block-id])]}))
(defn set-block-property!
[block-id key value]
(block-property-aux! block-id key value)
(db/refresh (state/get-current-repo)
{:key :block/change
:data [(db/pull [:block/uuid block-id])]}))
(db/refresh! (state/get-current-repo)
{:key :block/change
:data [(db/pull [:block/uuid block-id])]}))
(defn set-block-timestamp!
[block-id key value]
@ -1573,7 +1573,7 @@
(when-let [repo (state/get-current-repo)]
(let [opts {:key :block/change
:data [block]}]
(db/refresh repo opts)))))))
(db/refresh! repo opts)))))))
(defn expand!
[]
@ -1618,7 +1618,7 @@
(outliner-core/indent-outdent-nodes top-level-nodes (= direction :right))
(let [opts {:key :block/change
:data blocks}]
(db/refresh repo opts)
(db/refresh! repo opts)
(let [blocks (doall
(map
(fn [block]
@ -1824,7 +1824,7 @@
(let [parent-node (tree/-get-parent node)]
(outliner-core/move-subtree node parent-node true)))
(let [repo (state/get-current-repo)]
(db/refresh repo {:key :block/change :data [(:data node)]}))
(db/refresh! repo {:key :block/change :data [(:data node)]}))
(state/set-editor-op! nil)))))
(defn- last-top-level-child?
@ -2076,8 +2076,8 @@
(outliner-core/move-subtree current-node target-node true))
(outliner-core/move-subtree current-node left false))
(let [repo (state/get-current-repo)]
(db/refresh repo
{:key :block/change :data [(:data current-node)]}))))))
(db/refresh! repo
{:key :block/change :data [(:data current-node)]}))))))
(state/set-editor-op! nil)))))
(defn outdent-on-shift-tab
@ -2098,8 +2098,8 @@
(let [parent (tree/-get-parent current-node)]
(outliner-core/move-subtree current-node parent true))
(let [repo (state/get-current-repo)]
(db/refresh repo
{:key :block/change :data [(:data current-node)]}))))
(db/refresh! repo
{:key :block/change :data [(:data current-node)]}))))
(state/set-editor-op! nil)))))
(defn keydown-tab-handler
@ -2306,7 +2306,7 @@
:block/format)))))))))))
_ (outliner-core/insert-nodes metadata-replaced-copied-blocks target-block sibling?)
new-blocks (db/pull-many repo '[*] (map (fn [id] [:block/uuid id]) @new-block-uuids))]
(db/refresh repo {:key :block/insert :data new-blocks})
(db/refresh! repo {:key :block/insert :data new-blocks})
(util/stop e)))))
(defn editor-on-paste!

View File

@ -105,10 +105,10 @@
db-report (d/transact! conn txs)]
(do (pipelines/invoke-hooks db-report))))
(defn- refresh
(defn- refresh!
[opts]
(let [repo (state/get-current-repo)]
(db/refresh repo opts)))
(db/refresh! repo opts)))
(defn undo
[]
@ -124,7 +124,7 @@
(transact! new-txs)
(let [blocks
(map (fn [x] (get-by-id [:block/uuid (:block/uuid x)])) blocks)]
(refresh {:key :block/change :data (vec blocks)}))
(refresh! {:key :block/change :data (vec blocks)}))
(assoc e
:txs-op new-txs
:editor-cursor editor-cursor)))))
@ -136,7 +136,7 @@
(push-undo e)
(transact! new-txs)
(let [blocks (map (fn [x] (get-by-id [:block/uuid (:block/uuid x)])) blocks)]
(refresh {:key :block/change :data (vec blocks)}))
(refresh! {:key :block/change :data (vec blocks)}))
(assoc e :txs-op new-txs))))
(defn listen-outliner-operation

View File

@ -12,7 +12,7 @@
[clojure.zip :as zip]
[frontend.modules.outliner.file :as outliner-file]
[frontend.modules.outliner.datascript :as ds]
[frontend.util :as util]
[frontend.util :as util :refer-macros [profile]]
[datascript.core :as d]))
(defrecord Block [data])

View File

@ -6,7 +6,7 @@
[frontend.modules.outliner.pipeline :as pipelines]
[frontend.modules.editor.undo-redo :as undo-redo]
[frontend.state :as state]
[frontend.util :as util])))
[frontend.util :as util :refer-macros [profile]])))
#?(:cljs
(defn new-outliner-txs-state [] (atom [])))

View File

@ -15,12 +15,3 @@
(util/react)
(flatten)
(seq)))
(defn update-block-state
[repo node]
;; {:pre [(tree/satisfied-inode? node)]}
#_(when-let [parent (tree/-get-parent node)]
(react/transact-react!
repo
[(:data parent)]
{:key [:block/children (str (tree/-get-id parent))]})))