diff --git a/src/main/frontend/common/async_util.cljc b/src/main/frontend/common/async_util.cljc index 558c563a40..0487204ae1 100644 --- a/src/main/frontend/common/async_util.cljc +++ b/src/main/frontend/common/async_util.cljc @@ -1,10 +1,9 @@ (ns frontend.common.async-util "Some cljs.core.async relate macros and fns, used in worker and frontend namespaces. See also: https://gist.github.com/vvvvalvalval/f1250cec76d3719a8343" - #?(:cljs (:require [promesa.core :as p] - [logseq.common.util :as common-util] + #?(:cljs (:require [cljs.core.async.impl.channels :refer [ManyToManyChannel]] [clojure.core.async :as async] - [cljs.core.async.impl.channels :refer [ManyToManyChannel]]))) + [logseq.common.util :as common-util]))) #?(:cljs (defn throw-err @@ -15,20 +14,6 @@ [port] `(throw-err (cljs.core.async/p - "Converts a Core.async channel to a Promise" - [chan] - (let [d (p/deferred)] - (if chan - (async/go - (let [result (async/ (p/do (state/set-state! :rtc/uploading? true) - (js/Promise. (rtc-handler/new-task--rtc-create-graph! repo)) + (rtc-handler/ - (when (not= result :timeout) - (assert (some? download-info-s3-url) result) - (.rtc-download-graph-from-s3 worker graph-uuid graph-name download-info-s3-url)) - (p/finally - #(state/set-state! :rtc/downloading-graph-uuid nil))))))) + (p/let [_ (js/Promise. user-handler/task--ensure-id&access-token) + token (state/get-auth-id-token) + download-info-uuid* (.rtc-request-download-graph worker token graph-uuid) + download-info-uuid (ldb/read-transit-str download-info-uuid*) + result (.rtc-wait-download-graph-info-ready worker token download-info-uuid graph-uuid timeout-ms) + {:keys [_download-info-uuid + download-info-s3-url + _download-info-tx-instant + _download-info-t + _download-info-created-at] + :as result} (ldb/read-transit-str result)] + (-> + (when (not= result :timeout) + (assert (some? download-info-s3-url) result) + (.rtc-download-graph-from-s3 worker graph-uuid graph-name download-info-s3-url)) + (p/finally + #(state/set-state! :rtc/downloading-graph-uuid nil)))))) (defn > graphs - (remove (fn [graph] (= (:graph-status graph) "deleting"))) - (mapv (fn [graph] - (merge - (let [url (str config/db-version-prefix (:graph-name graph))] - {:url url - :GraphName (:graph-name graph) - :GraphUUID (:graph-uuid graph) - :rtc-graph? true}) - (dissoc graph :graph-uuid :graph-name)))))] - (state/set-state! :rtc/graphs result))))))) + (when-let [^js worker @state/*db-worker] + (p/let [_ (js/Promise. user-handler/task--ensure-id&access-token) + token (state/get-auth-id-token) + result (.rtc-get-graphs worker token) + graphs (ldb/read-transit-str result) + result (->> graphs + (remove (fn [graph] (= (:graph-status graph) "deleting"))) + (mapv (fn [graph] + (merge + (let [url (str config/db-version-prefix (:graph-name graph))] + {:url url + :GraphName (:graph-name graph) + :GraphUUID (:graph-uuid graph) + :rtc-graph? true}) + (dissoc graph :graph-uuid :graph-name)))))] + (state/set-state! :rtc/graphs result)))) (defn