From 3cd31f15714095a7c9153f9168e4560a27a5a466 Mon Sep 17 00:00:00 2001 From: rcmerci Date: Tue, 26 Mar 2024 17:40:45 +0800 Subject: [PATCH] refactor(rtc): add async-upload-graph --- capacitor.config.ts | 4 +-- deps.edn | 4 +-- src/main/frontend/config.cljs | 2 +- src/main/frontend/db_worker.cljs | 19 +++++++++- src/main/frontend/handler/events.cljs | 1 - src/main/frontend/handler/user.cljs | 4 +-- src/main/frontend/worker/rtc/const.cljs | 6 ++++ .../rtc/full_upload_download_graph.cljs | 36 ++++++++++++++++--- .../frontend/worker/rtc/rtc_fns_test.cljs | 32 ++++++++++++++++- 9 files changed, 93 insertions(+), 15 deletions(-) diff --git a/capacitor.config.ts b/capacitor.config.ts index a239afedda..fc8200d1c7 100644 --- a/capacitor.config.ts +++ b/capacitor.config.ts @@ -40,10 +40,10 @@ const config: CapacitorConfig = { } } -if (process.env.LOGSEQ_APP_SERVER_URL) { +if ("http://192.168.199.216:3001") { Object.assign(config, { server: { - url: process.env.LOGSEQ_APP_SERVER_URL, + url: "http://192.168.199.216:3001", cleartext: true } }) diff --git a/deps.edn b/deps.edn index c220514f54..6f2bdbca84 100644 --- a/deps.edn +++ b/deps.edn @@ -42,7 +42,7 @@ :aliases {:cljs {:extra-paths ["src/dev-cljs/" "src/test/" "src/electron/"] :extra-deps {org.clojure/clojurescript {:mvn/version "1.11.54"} org.clojure/tools.namespace {:mvn/version "0.2.11"} - cider/cider-nrepl {:mvn/version "0.44.0"} + cider/cider-nrepl {:mvn/version "0.47.0"} org.clojars.knubie/cljs-run-test {:mvn/version "1.0.1"} tortue/spy {:mvn/version "2.14.0"}} :main-opts ["-m" "shadow.cljs.devtools.cli"]} @@ -53,7 +53,7 @@ pjstadig/humane-test-output {:mvn/version "0.11.0"} org.clojars.knubie/cljs-run-test {:mvn/version "1.0.1"} tortue/spy {:mvn/version "2.14.0"} - cider/cider-nrepl {:mvn/version "0.44.0"}} + cider/cider-nrepl {:mvn/version "0.47.0"}} :main-opts ["-m" "shadow.cljs.devtools.cli"]} :bench {:extra-paths ["src/bench/"] diff --git a/src/main/frontend/config.cljs b/src/main/frontend/config.cljs index ce1dc41b65..16874844ad 100644 --- a/src/main/frontend/config.cljs +++ b/src/main/frontend/config.cljs @@ -28,7 +28,7 @@ (goog-define TEST false) (def test? TEST) -(goog-define ENABLE-FILE-SYNC-PRODUCTION false) +(def ENABLE-FILE-SYNC-PRODUCTION false) ;; this is a feature flag to enable the account tab ;; when it launches (when pro plan launches) it should be removed diff --git a/src/main/frontend/db_worker.cljs b/src/main/frontend/db_worker.cljs index 98fbbbec9c..1c1482a290 100644 --- a/src/main/frontend/db_worker.cljs +++ b/src/main/frontend/db_worker.cljs @@ -593,7 +593,24 @@ [[:div [:p "upload graph failed"]] :error]) - (prn ::download-graph-failed e) + (p/reject! d e))))) + d)) + + (rtc-async-upload-graph + [this repo token remote-graph-name] + (let [d (p/deferred)] + (when-let [conn (worker-state/get-datascript-conn repo)] + (async/go + (try + (let [state (c]] + [clojure.string :as string] [cognitect.transit :as transit] [datascript.core :as d] [frontend.worker.async-util :include-macros true :refer [c + (p/do! + (.storeMetadata worker-obj repo (pr-str {:graph/uuid (:graph-uuid r)}))))) + (op-mem-layer/init-empty-ops-store! repo) + (op-mem-layer/update-graph-uuid! repo (:graph-uuid r)) + (op-mem-layer/update-local-tx! repo 8) + (str {:block-type/property "property" :block-type/class "class" diff --git a/src/test/frontend/worker/rtc/rtc_fns_test.cljs b/src/test/frontend/worker/rtc/rtc_fns_test.cljs index 401687b993..2c3cbd208b 100644 --- a/src/test/frontend/worker/rtc/rtc_fns_test.cljs +++ b/src/test/frontend/worker/rtc/rtc_fns_test.cljs @@ -405,7 +405,8 @@ server: ;; remove 2 (let [repo (state/get-current-repo) conn (conn/get-db repo false) date-formatter (common-config/get-date-formatter (worker-state/get-config repo)) - [page1-uuid] (repeatedly random-uuid)] + [page1-uuid ;; page2-uuid page3-uuid page4-uuid + ] (repeatedly random-uuid)] (testing "apply-remote-update-page-ops-test1" (let [data-from-ws {:req-id "req-id" :t 1 :t-before 0 :affected-blocks @@ -434,6 +435,35 @@ server: ;; remove 2 (rtc-core/apply-remote-update-page-ops repo conn date-formatter update-page-ops) (is (= (str page1-uuid "-rename") (:block/name (d/entity @conn [:block/uuid page1-uuid])))))) + ;; TODO: add this test back when fixed + ;; (testing "apply-remote-update-page-ops-test3: create namespace-page" + ;; (let [data-from-ws {:req-id "req-id" :t 1 :t-before 0 + ;; :affected-blocks + ;; {page2-uuid {:op :update-page + ;; :self page2-uuid + ;; :page-name "aaa/bbb/ccc" + ;; :original-name "aaa/bbb/ccc"} + ;; page3-uuid {:op :update-page + ;; :self page3-uuid + ;; :page-name "aaa/bbb" + ;; :original-name "aaa/bbb"} + ;; page4-uuid {:op :update-page + ;; :self page4-uuid + ;; :page-name "aaa" + ;; :original-name "aaa"}}} + ;; update-page-ops (vals + ;; (:update-page-ops-map + ;; (#'rtc-core/affected-blocks->diff-type-ops repo (:affected-blocks data-from-ws))))] + ;; (is (rtc-const/data-from-ws-validator data-from-ws)) + ;; (rtc-core/apply-remote-update-page-ops repo conn date-formatter update-page-ops) + ;; (prn ::x + ;; (into {} (d/entity @conn [:block/uuid page2-uuid])) + ;; (into {} (d/entity @conn [:block/uuid page3-uuid])) + ;; (into {} (d/entity @conn [:block/uuid page4-uuid])) + ;; (into {} (d/entity @conn [:block/name "aaa"])) + ;; (into {} (d/entity @conn [:block/name "aaa/bbb"])) + ;; (into {} (d/entity @conn [:block/name "aaa/bbb/ccc"]))) + ;; )) (testing "apply-remote-remove-page-ops-test1" (let [data-from-ws {:req-id "req-id" :t 1 :t-before 0 :affected-blocks