mirror of https://github.com/logseq/logseq
refactor(rtc): remake rtc-wait-download-graph-info-ready
parent
91a1372dfb
commit
d3f135c4c2
|
@ -150,7 +150,7 @@
|
|||
^object worker @db-browser/*worker
|
||||
download-info-uuid (.rtc-request-download-graph worker token graph-uuid)
|
||||
result (.rtc-wait-download-graph-info-ready
|
||||
worker nil token download-info-uuid graph-uuid 60000)
|
||||
worker token download-info-uuid graph-uuid 60000)
|
||||
{:keys [_download-info-uuid
|
||||
download-info-s3-url
|
||||
_download-info-tx-instant
|
||||
|
|
|
@ -610,16 +610,14 @@
|
|||
;; ================================================================
|
||||
(rtc-request-download-graph
|
||||
[this token graph-uuid]
|
||||
(js/Promise. (rtc-core2/new-task--request-download-graph token graph-uuid)))
|
||||
(with-write-transit-str
|
||||
(js/Promise. (rtc-core2/new-task--request-download-graph token graph-uuid))))
|
||||
|
||||
(rtc-wait-download-graph-info-ready
|
||||
[this repo token download-info-uuid graph-uuid timeout-ms]
|
||||
(async-util/c->p
|
||||
(async/go
|
||||
(let [state (or @rtc-core/*state
|
||||
(<! (rtc-core/<init-state token false)))]
|
||||
(ldb/write-transit-str
|
||||
(<? (rtc-updown/<wait-download-info-ready state download-info-uuid graph-uuid timeout-ms)))))))
|
||||
[this token download-info-uuid graph-uuid timeout-ms]
|
||||
(with-write-transit-str
|
||||
(js/Promise.
|
||||
(rtc-core2/new-task--wait-download-info-ready token download-info-uuid graph-uuid timeout-ms))))
|
||||
|
||||
(rtc-download-graph-from-s3
|
||||
[this graph-uuid graph-name s3-url]
|
||||
|
@ -629,15 +627,18 @@
|
|||
|
||||
(rtc-download-info-list
|
||||
[this token graph-uuid]
|
||||
(js/Promise. (rtc-core2/new-task--download-info-list token graph-uuid)))
|
||||
(with-write-transit-str
|
||||
(js/Promise. (rtc-core2/new-task--download-info-list token graph-uuid))))
|
||||
|
||||
(rtc-snapshot-graph
|
||||
[this token graph-uuid]
|
||||
(js/Promise. (rtc-core2/new-task--snapshot-graph token graph-uuid)))
|
||||
(with-write-transit-str
|
||||
(js/Promise. (rtc-core2/new-task--snapshot-graph token graph-uuid))))
|
||||
|
||||
(rtc-snapshot-list
|
||||
[this token graph-uuid]
|
||||
(js/Promise. (rtc-core2/new-task--snapshot-list token graph-uuid)))
|
||||
(with-write-transit-str
|
||||
(js/Promise. (rtc-core2/new-task--snapshot-list token graph-uuid))))
|
||||
|
||||
(rtc-get-block-update-log
|
||||
[_this block-uuid]
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
(user-handler/<wrap-ensure-id&access-token
|
||||
(p/let [token (state/get-auth-id-token)
|
||||
download-info-uuid (.rtc-request-download-graph worker token graph-uuid)
|
||||
result (.rtc-wait-download-graph-info-ready worker nil token download-info-uuid graph-uuid timeout-ms)
|
||||
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
|
||||
|
|
|
@ -318,6 +318,12 @@
|
|||
(let [{:keys [get-ws-create-task]} (new-task--get-ws-create--memoized (get-ws-url token))]
|
||||
(r.upload-download/new-task--download-info-list get-ws-create-task graph-uuid)))
|
||||
|
||||
(defn new-task--wait-download-info-ready
|
||||
[token download-info-uuid graph-uuid timeout-ms]
|
||||
(let [{:keys [get-ws-create-task]} (new-task--get-ws-create--memoized (get-ws-url token))]
|
||||
(r.upload-download/new-task--wait-download-info-ready
|
||||
get-ws-create-task download-info-uuid graph-uuid timeout-ms)))
|
||||
|
||||
;;; ================ API (ends) ================
|
||||
|
||||
;;; subscribe debug state ;;;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"- upload local graph to remote
|
||||
- download remote graph"
|
||||
(:require [cljs-http.client :as http]
|
||||
[cljs.core.async :as async :refer [<! go-loop]]
|
||||
[cljs.core.async :as async :refer [<!]]
|
||||
[cljs.core.async.interop :refer [p->c]]
|
||||
[clojure.string :as string]
|
||||
[cognitect.transit :as transit]
|
||||
|
@ -10,7 +10,6 @@
|
|||
[frontend.worker.async-util :include-macros true :refer [<? go-try]]
|
||||
[frontend.worker.rtc.client :as r.client]
|
||||
[frontend.worker.rtc.op-mem-layer :as op-mem-layer]
|
||||
[frontend.worker.rtc.ws :as ws]
|
||||
[frontend.worker.state :as worker-state]
|
||||
[frontend.worker.util :as worker-util]
|
||||
[logseq.common.missionary-util :as c.m]
|
||||
|
@ -188,33 +187,25 @@
|
|||
(r.client/send&recv get-ws-create-task {:action "download-info-list"
|
||||
:graph-uuid graph-uuid})))
|
||||
|
||||
(defn <wait-download-info-ready
|
||||
[state download-info-uuid graph-uuid timeout-ms]
|
||||
(let [init-interval 1000
|
||||
interval 3000
|
||||
timeout-ch (async/timeout timeout-ms)]
|
||||
(go-loop [interval-ch (async/timeout init-interval)]
|
||||
(let [{:keys [timeout retry]}
|
||||
(async/alt!
|
||||
timeout-ch {:timeout true}
|
||||
interval-ch {:retry true}
|
||||
:priority true)]
|
||||
(cond
|
||||
timeout :timeout
|
||||
retry
|
||||
(let [{:keys [download-info-list]}
|
||||
(<? (ws/<send&receive state {:action "download-info-list"
|
||||
:graph-uuid graph-uuid}))
|
||||
finished-download-info
|
||||
(some
|
||||
(fn [download-info]
|
||||
(when (and (= download-info-uuid (:download-info-uuid download-info))
|
||||
(:download-info-s3-url download-info))
|
||||
download-info))
|
||||
download-info-list)]
|
||||
(if finished-download-info
|
||||
finished-download-info
|
||||
(recur (async/timeout interval)))))))))
|
||||
(defn new-task--wait-download-info-ready
|
||||
[get-ws-create-task download-info-uuid graph-uuid timeout-ms]
|
||||
(->
|
||||
(m/sp
|
||||
(loop []
|
||||
(m/? (m/sleep 3000))
|
||||
(let [{:keys [download-info-list]}
|
||||
(m/? (r.client/send&recv get-ws-create-task {:action "download-info-list"
|
||||
:graph-uuid graph-uuid}))]
|
||||
(if-let [found-download-info
|
||||
(some
|
||||
(fn [download-info]
|
||||
(when (and (= download-info-uuid (:download-info-uuid download-info))
|
||||
(:download-info-s3-url download-info))
|
||||
download-info))
|
||||
download-info-list)]
|
||||
found-download-info
|
||||
(recur)))))
|
||||
(m/timeout timeout-ms :timeout)))
|
||||
|
||||
(defn <download-graph-from-s3
|
||||
[graph-uuid graph-name s3-url]
|
||||
|
|
Loading…
Reference in New Issue