diff --git a/src/main/frontend/components/repo.cljs b/src/main/frontend/components/repo.cljs index 7b9d1d4778..dd4e4240f5 100644 --- a/src/main/frontend/components/repo.cljs +++ b/src/main/frontend/components/repo.cljs @@ -138,7 +138,9 @@ (rtc-handler/ (if (and graph-uuid base) + (p/let [resp (fetch-json (str base "/sync/" graph-uuid "/snapshot") + {:method "GET"}) + datoms-str (aget resp "datoms") + datoms (->> (ldb/read-transit-str datoms-str) + (map (fn [{:keys [e a v t]}] + (d/datom e a v t true)))) + graph (str config/db-version-prefix graph-name)] + (state/clj (aget resp "graphs") :keywordize-keys true) result (mapv (fn [graph] (merge - {:url (:graph_name graph) - :GraphName (string/replace (:graph_name graph) config/db-version-prefix "") + {:url (str config/db-version-prefix (:graph_name graph)) + :GraphName (:graph_name graph) :GraphSchemaVersion (:schema_version graph) :GraphUUID (:graph_id graph) :rtc-graph? true} diff --git a/src/main/frontend/worker/db_worker.cljs b/src/main/frontend/worker/db_worker.cljs index 47c6ab8082..5435a2b073 100644 --- a/src/main/frontend/worker/db_worker.cljs +++ b/src/main/frontend/worker/db_worker.cljs @@ -50,6 +50,7 @@ [logseq.db.common.view :as db-view] [logseq.db.frontend.class :as db-class] [logseq.db.frontend.property :as db-property] + [logseq.db.frontend.schema :as db-schema] [logseq.db.sqlite.create-graph :as sqlite-create-graph] [logseq.db.sqlite.export :as sqlite-export] [logseq.db.sqlite.gc :as sqlite-gc] @@ -191,6 +192,16 @@ (d/reset-conn! conn new-db' {:reset-conn! true}) (d/reset-schema! conn (:schema new-db))))) +(defn reset-db-from-datoms! + [repo datoms] + (p/do! + ((@thread-api/*thread-apis :thread-api/create-or-open-db) repo + {:close-other-db? false + :datoms datoms + :worker-sync-download-graph? true}) + ((@thread-api/*thread-apis :thread-api/export-db) repo) + (shared-service/broadcast-to-clients! :add-repo {:repo repo}))) + (defn- get-dbs [repo] (if @*publishing? @@ -230,7 +241,7 @@ :kv/value (common-util/time-ms)}])))) (defn- conn deref)] (when db (let [normalized (normalize-tx-data db-after db-before tx-data) - _ (prn :debug :normalized normalized) tx-str (sqlite-util/write-transit-str normalized)] (persist-local-tx! repo tx-str) (when-let [client (get @worker-state/*worker-sync-clients repo)]