diff --git a/src/main/frontend/db.cljs b/src/main/frontend/db.cljs index 5f0428ea9..96ac8aa50 100644 --- a/src/main/frontend/db.cljs +++ b/src/main/frontend/db.cljs @@ -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] diff --git a/src/main/frontend/db/react.cljs b/src/main/frontend/db/react.cljs index 15391a4f7..b972bff7b 100644 --- a/src/main/frontend/db/react.cljs +++ b/src/main/frontend/db/react.cljs @@ -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 diff --git a/src/main/frontend/handler/dnd.cljs b/src/main/frontend/handler/dnd.cljs index 2646641e5..fd9c90f44 100644 --- a/src/main/frontend/handler/dnd.cljs +++ b/src/main/frontend/handler/dnd.cljs @@ -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)]}))))) diff --git a/src/main/frontend/handler/editor.cljs b/src/main/frontend/handler/editor.cljs index 4fa678342..adf7754d6 100644 --- a/src/main/frontend/handler/editor.cljs +++ b/src/main/frontend/handler/editor.cljs @@ -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! diff --git a/src/main/frontend/modules/editor/undo_redo.cljs b/src/main/frontend/modules/editor/undo_redo.cljs index 297189d74..4bc0830fb 100644 --- a/src/main/frontend/modules/editor/undo_redo.cljs +++ b/src/main/frontend/modules/editor/undo_redo.cljs @@ -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 diff --git a/src/main/frontend/modules/outliner/core.cljs b/src/main/frontend/modules/outliner/core.cljs index 28fa54ce3..83538df8e 100644 --- a/src/main/frontend/modules/outliner/core.cljs +++ b/src/main/frontend/modules/outliner/core.cljs @@ -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]) diff --git a/src/main/frontend/modules/outliner/datascript.cljc b/src/main/frontend/modules/outliner/datascript.cljc index 10e0c81c1..dd5116ad9 100644 --- a/src/main/frontend/modules/outliner/datascript.cljc +++ b/src/main/frontend/modules/outliner/datascript.cljc @@ -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 []))) diff --git a/src/main/frontend/modules/outliner/state.cljs b/src/main/frontend/modules/outliner/state.cljs index e75be606e..f0409a85c 100644 --- a/src/main/frontend/modules/outliner/state.cljs +++ b/src/main/frontend/modules/outliner/state.cljs @@ -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))]}))) \ No newline at end of file