Browse Source

refactor: use <invoke-db-worker to replace @*db-worker (2)

rcmerci 8 months ago
parent
commit
ea4f872962

+ 2 - 4
src/main/frontend/components/content.cljs

@@ -19,7 +19,6 @@
             [frontend.handler.property :as property-handler]
             [frontend.handler.property.util :as pu]
             [frontend.modules.shortcut.core :as shortcut]
-            [frontend.persist-db.browser :as db-browser]
             [frontend.state :as state]
             [frontend.ui :as ui]
             [frontend.util :as util]
@@ -354,10 +353,9 @@
                {:key "(Dev) Show block content history"
                 :on-click
                 (fn []
-                  (let [worker @db-browser/*worker
-                        token (state/get-auth-id-token)
+                  (let [token (state/get-auth-id-token)
                         graph-uuid (ldb/get-graph-rtc-uuid (db/get-db))]
-                    (p/let [blocks-versions (worker :thread-api/rtc-get-block-content-versions token graph-uuid block-id)]
+                    (p/let [blocks-versions (state/<invoke-db-worker :thread-api/rtc-get-block-content-versions token graph-uuid block-id)]
                       (prn :Dev-show-block-content-history)
                       (doseq [[block-uuid versions] blocks-versions]
                         (prn :block-uuid block-uuid)

+ 1 - 1
src/main/frontend/components/imports.cljs

@@ -383,7 +383,7 @@
                                   (let [tx-reports
                                         (gp-exporter/add-file-to-db-graph conn (:file/path m) (:file/content m) opts)]
                                     (doseq [tx-report tx-reports]
-                                      (db-browser/transact! @db-browser/*worker repo (:tx-data tx-report) (:tx-meta tx-report)))))}
+                                      (db-browser/transact! @state/*db-worker repo (:tx-data tx-report) (:tx-meta tx-report)))))}
           {:keys [files import-state]} (gp-exporter/export-file-graph repo db-conn config-file *files options)]
     (log/info :import-file-graph {:msg (str "Import finished in " (/ (t/in-millis (t/interval start-time (t/now))) 1000) " seconds")})
     (state/set-state! :graph/importing nil)

+ 53 - 63
src/main/frontend/db/rtc/debug_ui.cljs

@@ -5,7 +5,6 @@
             [frontend.db :as db]
             [frontend.handler.db-based.rtc-flows :as rtc-flows]
             [frontend.handler.user :as user]
-            [frontend.persist-db.browser :as db-browser]
             [frontend.state :as state]
             [frontend.ui :as ui]
             [frontend.util :as util]
@@ -19,9 +18,9 @@
 
 (defn- stop
   []
-  (let [worker @db-browser/*worker]
-    (worker :thread-api/rtc-stop))
-  (reset! debug-state nil))
+  (p/do!
+   (state/<invoke-db-worker :thread-api/rtc-stop)
+   (reset! debug-state nil)))
 
 (rum/defcs ^:large-vars/cleanup-todo rtc-debug-ui < rum/reactive
   (rum/local nil ::logs)
@@ -59,18 +58,16 @@
       (shui/button
        {:size :sm
         :on-click (fn [_]
-                    (let [worker @db-browser/*worker]
-                      (p/let [new-state (worker :thread-api/rtc-get-debug-state)]
-                        (swap! debug-state (fn [old] (merge old new-state))))))}
+                    (p/let [new-state (state/<invoke-db-worker :thread-api/rtc-get-debug-state)]
+                      (swap! debug-state (fn [old] (merge old new-state)))))}
        (shui/tabler-icon "refresh") "state")
 
       (shui/button
        {:size :sm
         :on-click
         (fn [_]
-          (let [token (state/get-auth-id-token)
-                worker @db-browser/*worker]
-            (p/let [graph-list (worker :thread-api/rtc-get-graphs token)]
+          (let [token (state/get-auth-id-token)]
+            (p/let [graph-list (state/<invoke-db-worker :thread-api/rtc-get-graphs token)]
               (swap! debug-state assoc
                      :remote-graphs
                      (map
@@ -117,9 +114,8 @@
         {:variant :outline
          :class "text-green-rx-09 border-green-rx-10 hover:text-green-rx-10"
          :on-click (fn []
-                     (let [token (state/get-auth-id-token)
-                           worker @db-browser/*worker]
-                       (worker :thread-api/rtc-start (state/get-current-repo) token)))}
+                     (let [token (state/get-auth-id-token)]
+                       (state/<invoke-db-worker :thread-api/rtc-start (state/get-current-repo) token)))}
         (shui/tabler-icon "player-play") "start")
 
        [:div.my-2.flex
@@ -129,16 +125,14 @@
                                    ")")
                               {:on-click
                                (fn []
-                                 (let [worker @db-browser/*worker]
-                                   (worker :thread-api/rtc-toggle-auto-push)))})]
+                                 (state/<invoke-db-worker :thread-api/rtc-toggle-auto-push))})]
         [:div.mr-2 (ui/button (str "Toggle remote profile("
                                    (if (:remote-profile? debug-state*)
                                      "ON" "OFF")
                                    ")")
                               {:on-click
                                (fn []
-                                 (let [worker @db-browser/*worker]
-                                   (worker :thread-api/rtc-toggle-remote-profile)))})]
+                                 (state/<invoke-db-worker :thread-api/rtc-toggle-remote-profile))})]
         [:div (shui/button
                {:variant :outline
                 :class "text-red-rx-09 border-red-rx-08 hover:text-red-rx-10"
@@ -156,11 +150,10 @@
                                       user-uuid (some-> (:grant-access-to-user debug-state*) parse-uuid)
                                       user-email (when-not user-uuid (:grant-access-to-user debug-state*))]
                                   (when-let [graph-uuid (:graph-uuid debug-state*)]
-                                    (let [worker @db-browser/*worker]
-                                      (worker :thread-api/rtc-grant-graph-access
-                                              token graph-uuid
-                                              (some-> user-uuid vector)
-                                              (some-> user-email vector))))))})
+                                    (state/<invoke-db-worker :thread-api/rtc-grant-graph-access
+                                                             token graph-uuid
+                                                             (some-> user-uuid vector)
+                                                             (some-> user-email vector)))))})
 
         [:b "➡️"]
         [:input.form-input.my-2.py-1
@@ -180,23 +173,23 @@
                               (when-let [graph-name (:download-graph-to-repo debug-state*)]
                                 (when-let [{:keys [graph-uuid graph-schema-version]}
                                            (:graph-uuid-to-download debug-state*)]
-                                  (let [worker @db-browser/*worker]
-                                    (prn :download-graph graph-uuid graph-schema-version :to graph-name)
-                                    (p/let [token (state/get-auth-id-token)
-                                            download-info-uuid (worker :thread-api/rtc-request-download-graph
-                                                                       token graph-uuid graph-schema-version)
-                                            {:keys [_download-info-uuid
-                                                    download-info-s3-url
-                                                    _download-info-tx-instant
-                                                    _download-info-t
-                                                    _download-info-created-at]
-                                             :as result}
-                                            (worker :thread-api/rtc-wait-download-graph-info-ready
-                                                    token download-info-uuid graph-uuid graph-schema-version 60000)]
-                                      (when (not= result :timeout)
-                                        (assert (some? download-info-s3-url) result)
-                                        (worker :thread-api/rtc-download-graph-from-s3
-                                                graph-uuid graph-name download-info-s3-url)))))))})
+                                  (prn :download-graph graph-uuid graph-schema-version :to graph-name)
+                                  (p/let [token (state/get-auth-id-token)
+                                          download-info-uuid (state/<invoke-db-worker
+                                                              :thread-api/rtc-request-download-graph
+                                                              token graph-uuid graph-schema-version)
+                                          {:keys [_download-info-uuid
+                                                  download-info-s3-url
+                                                  _download-info-tx-instant
+                                                  _download-info-t
+                                                  _download-info-created-at]
+                                           :as result}
+                                          (state/<invoke-db-worker :thread-api/rtc-wait-download-graph-info-ready
+                                                                   token download-info-uuid graph-uuid graph-schema-version 60000)]
+                                    (when (not= result :timeout)
+                                      (assert (some? download-info-s3-url) result)
+                                      (state/<invoke-db-worker :thread-api/rtc-download-graph-from-s3
+                                                               graph-uuid graph-name download-info-s3-url))))))})
 
       [:b "➡"]
       [:div.flex.flex-row.items-center.gap-2
@@ -230,9 +223,9 @@
                   :on-click (fn []
                               (let [repo (state/get-current-repo)
                                     token (state/get-auth-id-token)
-                                    remote-graph-name (:upload-as-graph-name debug-state*)
-                                    worker @db-browser/*worker]
-                                (worker :thread-api/rtc-async-upload-graph repo token remote-graph-name)))})
+                                    remote-graph-name (:upload-as-graph-name debug-state*)]
+                                (state/<invoke-db-worker :thread-api/rtc-async-upload-graph
+                                                         repo token remote-graph-name)))})
       [:b "➡️"]
       [:input.form-input.my-2.py-1.w-32
        {:on-change (fn [e] (swap! debug-state assoc :upload-as-graph-name (util/evalue e)))
@@ -246,10 +239,10 @@
                  {:icon "trash"
                   :on-click (fn []
                               (when-let [{:keys [graph-uuid graph-schema-version]} (:graph-uuid-to-delete debug-state*)]
-                                (let [token (state/get-auth-id-token)
-                                      worker @db-browser/*worker]
+                                (let [token (state/get-auth-id-token)]
                                   (prn ::delete-graph graph-uuid graph-schema-version)
-                                  (worker :thread-api/rtc-delete-graph token graph-uuid graph-schema-version))))})
+                                  (state/<invoke-db-worker :thread-api/rtc-delete-graph
+                                                           token graph-uuid graph-schema-version))))})
 
       (shui/select
        {:on-value-change (fn [[graph-uuid graph-schema-version]]
@@ -276,10 +269,10 @@
          (shui/button
           {:size :sm
            :on-click (fn [_]
-                       (let [worker @db-browser/*worker]
-                         (p/let [graph-keys (worker :thread-api/rtc-get-graph-keys (state/get-current-repo))
-                                 devices (some->> (state/get-auth-id-token) (worker :thread-api/list-devices))]
-                           (swap! (get state ::keys-state) #(merge % graph-keys {:devices devices})))))}
+                       (p/let [graph-keys (state/<invoke-db-worker :thread-api/rtc-get-graph-keys (state/get-current-repo))
+                               devices (some->> (state/get-auth-id-token)
+                                                (state/<invoke-db-worker :thread-api/list-devices))]
+                         (swap! (get state ::keys-state) #(merge % graph-keys {:devices devices}))))}
           (shui/tabler-icon "refresh") "keys-state")]
         [:div.pb-4
          [:pre.select-text
@@ -290,10 +283,9 @@
         (shui/button
          {:size :sm
           :on-click (fn [_]
-                      (let [worker @db-browser/*worker]
-                        (when-let [device-uuid (not-empty (:remove-device-device-uuid keys-state))]
-                          (when-let [token (state/get-auth-id-token)]
-                            (worker :thread-api/remove-device token device-uuid)))))}
+                      (when-let [device-uuid (not-empty (:remove-device-device-uuid keys-state))]
+                        (when-let [token (state/get-auth-id-token)]
+                          (state/<invoke-db-worker :thread-api/remove-device token device-uuid))))}
          "Remove device:")
         [:input.form-input.my-2.py-1.w-32
          {:on-change (fn [e] (swap! *keys-state assoc :remove-device-device-uuid (util/evalue e)))
@@ -304,11 +296,10 @@
         (shui/button
          {:size :sm
           :on-click (fn [_]
-                      (let [worker @db-browser/*worker]
-                        (when-let [device-uuid (not-empty (:remove-public-key-device-uuid keys-state))]
-                          (when-let [key-name (not-empty (:remove-public-key-key-name keys-state))]
-                            (when-let [token (state/get-auth-id-token)]
-                              (worker :thread-api/remove-device-public-key token device-uuid key-name))))))}
+                      (when-let [device-uuid (not-empty (:remove-public-key-device-uuid keys-state))]
+                        (when-let [key-name (not-empty (:remove-public-key-key-name keys-state))]
+                          (when-let [token (state/get-auth-id-token)]
+                            (state/<invoke-db-worker :thread-api/remove-device-public-key token device-uuid key-name)))))}
          "Remove public-key:")
         [:input.form-input.my-2.py-1.w-32
          {:on-change (fn [e] (swap! *keys-state assoc :remove-public-key-device-uuid (util/evalue e)))
@@ -325,11 +316,10 @@
         (shui/button
          {:size :sm
           :on-click (fn [_]
-                      (let [^object worker @db-browser/*worker]
-                        (when-let [token (state/get-auth-id-token)]
-                          (when-let [device-uuid (not-empty (:sync-private-key-device-uuid keys-state))]
-                            (worker :thread-api/rtc-sync-current-graph-encrypted-aes-key
-                                    token [(parse-uuid device-uuid)])))))}
+                      (when-let [token (state/get-auth-id-token)]
+                        (when-let [device-uuid (not-empty (:sync-private-key-device-uuid keys-state))]
+                          (state/<invoke-db-worker :thread-api/rtc-sync-current-graph-encrypted-aes-key
+                                                   token [(parse-uuid device-uuid)]))))}
          "Sync CurrentGraph EncryptedAesKey")
         [:input.form-input.my-2.py-1.w-32
          {:on-change (fn [e] (swap! *keys-state assoc :sync-private-key-device-uuid (util/evalue e)))

+ 18 - 20
src/main/frontend/handler/page.cljs

@@ -20,6 +20,7 @@
             [frontend.handler.db-based.property :as db-property-handler]
             [frontend.handler.editor :as editor-handler]
             [frontend.handler.file-based.nfs :as nfs-handler]
+            [frontend.handler.file-based.page-property :as file-page-property]
             [frontend.handler.graph :as graph-handler]
             [frontend.handler.notification :as notification]
             [frontend.handler.plugin :as plugin-handler]
@@ -28,7 +29,6 @@
             [frontend.mobile.util :as mobile-util]
             [frontend.modules.outliner.op :as outliner-op]
             [frontend.modules.outliner.ui :as ui-outliner-tx]
-            [frontend.persist-db.browser :as db-browser]
             [frontend.state :as state]
             [frontend.util :as util]
             [frontend.util.cursor :as cursor]
@@ -44,8 +44,7 @@
             [logseq.db :as ldb]
             [logseq.graph-parser.db :as gp-db]
             [logseq.graph-parser.text :as text]
-            [promesa.core :as p]
-            [frontend.handler.file-based.page-property :as file-page-property]))
+            [promesa.core :as p]))
 
 (def <create! page-common-handler/<create!)
 (def <delete! page-common-handler/<delete!)
@@ -122,23 +121,22 @@
 
 (defn rename!
   [page-uuid-or-old-name new-name & {:as _opts}]
-  (when @db-browser/*worker
-    (p/let [page-uuid (cond
-                        (uuid? page-uuid-or-old-name)
-                        page-uuid-or-old-name
-                        (common-util/uuid-string? page-uuid-or-old-name)
-                        page-uuid-or-old-name
-                        :else
-                        (:block/uuid (db/get-page page-uuid-or-old-name)))
-            result (ui-outliner-tx/transact!
-                    {:outliner-op :rename-page}
-                    (outliner-op/rename-page! page-uuid new-name))]
-      (case (if (string? result) (keyword result) result)
-        :invalid-empty-name
-        (notification/show! "Please use a valid name, empty name is not allowed!" :warning)
-        :rename-page-exists
-        (notification/show! "Another page with the new name exists already" :warning)
-        nil))))
+  (p/let [page-uuid (cond
+                      (uuid? page-uuid-or-old-name)
+                      page-uuid-or-old-name
+                      (common-util/uuid-string? page-uuid-or-old-name)
+                      page-uuid-or-old-name
+                      :else
+                      (:block/uuid (db/get-page page-uuid-or-old-name)))
+          result (ui-outliner-tx/transact!
+                  {:outliner-op :rename-page}
+                  (outliner-op/rename-page! page-uuid new-name))]
+    (case (if (string? result) (keyword result) result)
+      :invalid-empty-name
+      (notification/show! "Please use a valid name, empty name is not allowed!" :warning)
+      :rename-page-exists
+      (notification/show! "Another page with the new name exists already" :warning)
+      nil)))
 
 (defn <reorder-favorites!
   [favorites]

+ 9 - 10
src/main/frontend/modules/outliner/ui.cljc

@@ -16,8 +16,7 @@
          (do ~@body)                    ; nested transact!
          (binding [frontend.modules.outliner.op/*outliner-ops* (transient [])]
            ~@body
-           (let [r# (persistent! frontend.modules.outliner.op/*outliner-ops*)
-                 worker# @frontend.state/*db-worker]
+           (let [r# (persistent! frontend.modules.outliner.op/*outliner-ops*)]
             ;;  (js/console.groupCollapsed "ui/transact!")
             ;;  (prn :ops r#)
             ;;  (js/console.trace)
@@ -29,14 +28,14 @@
                                                 r#
                                                 (frontend.state/get-date-formatter)
                                                 ~opts))
-               (when (and worker# (seq r#))
+               (when (seq r#)
                  (let [request-id# (frontend.state/get-worker-next-request-id)
-                       request# #(worker# :thread-api/apply-outliner-ops
-                                          (frontend.state/get-current-repo)
-                                          r#
-                                          (assoc ~opts
-                                                 :request-id request-id#
-                                                 :editor-info editor-info#))
+                       request# #(frontend.state/<invoke-db-worker
+                                  :thread-api/apply-outliner-ops
+                                  (frontend.state/get-current-repo)
+                                  r#
+                                  (assoc ~opts
+                                         :request-id request-id#
+                                         :editor-info editor-info#))
                        response# (frontend.state/add-worker-request! request-id# request#)]
-
                    response#)))))))))

+ 21 - 34
src/main/frontend/search/browser.cljs

@@ -2,53 +2,40 @@
   "Browser implementation of search protocol"
   (:require [frontend.config :as config]
             [frontend.handler.file-based.property.util :as property-util]
-            [frontend.persist-db.browser :as browser]
             [frontend.search.protocol :as protocol]
             [frontend.state :as state]
             [promesa.core :as p]))
 
-(defonce *worker browser/*worker)
-
 (defrecord Browser [repo]
   protocol/Engine
   (query [_this q option]
-    (if-let [worker @*worker]
-      (worker :thread-api/search-blocks (state/get-current-repo) q option)
-      (p/resolved nil)))
+    (state/<invoke-db-worker :thread-api/search-blocks (state/get-current-repo) q option))
   (rebuild-pages-indice! [_this]
-    (if-let [worker @*worker]
-      (worker :thread-api/search-build-pages-indice repo)
-      (p/resolved nil)))
+    (state/<invoke-db-worker :thread-api/search-build-pages-indice repo))
   (rebuild-blocks-indice! [this]
-    (if-let [worker @*worker]
-      (p/let [repo (state/get-current-repo)
-              file-based? (config/local-file-based-graph? repo)
-              _ (protocol/truncate-blocks! this)
-              result (worker :thread-api/search-build-blocks-indice repo)
-              blocks (if file-based?
-                       (->> result
+    (p/let [repo (state/get-current-repo)
+            file-based? (config/local-file-based-graph? repo)
+            _ (protocol/truncate-blocks! this)
+            result (state/<invoke-db-worker :thread-api/search-build-blocks-indice repo)
+            blocks (if file-based?
+                     (->> result
                             ;; remove built-in properties from content
-                            (map
-                             #(update % :content
-                                      (fn [content]
-                                        (property-util/remove-built-in-properties (get % :format :markdown) content)))))
-                       result)
-              _ (when (seq blocks)
-                  (worker :thread-api/search-upsert-blocks repo blocks))])
-      (p/resolved nil)))
+                          (map
+                           #(update % :content
+                                    (fn [content]
+                                      (property-util/remove-built-in-properties (get % :format :markdown) content)))))
+                     result)
+            _ (when (seq blocks)
+                (state/<invoke-db-worker :thread-api/search-upsert-blocks repo blocks))]))
   (transact-blocks! [_this {:keys [blocks-to-remove-set
                                    blocks-to-add]}]
-    (if-let [worker @*worker]
-      (let [repo (state/get-current-repo)]
-        (p/let [_ (when (seq blocks-to-remove-set)
-                    (worker :thread-api/search-delete-blocks repo blocks-to-remove-set))]
-          (when (seq blocks-to-add)
-            (worker :thread-api/search-upsert-blocks repo blocks-to-add))))
-      (p/resolved nil)))
+    (let [repo (state/get-current-repo)]
+      (p/let [_ (when (seq blocks-to-remove-set)
+                  (state/<invoke-db-worker :thread-api/search-delete-blocks repo blocks-to-remove-set))]
+        (when (seq blocks-to-add)
+          (state/<invoke-db-worker :thread-api/search-upsert-blocks repo blocks-to-add)))))
   (truncate-blocks! [_this]
-    (if-let [worker @*worker]
-      (worker :thread-api/search-truncate-tables (state/get-current-repo))
-      (p/resolved nil)))
+    (state/<invoke-db-worker :thread-api/search-truncate-tables (state/get-current-repo)))
   (remove-db! [_this]
     ;; Already removed in OPFS
     (p/resolved nil)))