🐛 Return back to use blob uris for transient thumbnails

This commit is contained in:
Andrey Antukh 2024-06-21 12:09:50 +02:00
parent 7b8d127583
commit b25a9f8626

View file

@ -11,7 +11,6 @@
[app.common.logging :as l] [app.common.logging :as l]
[app.common.thumbnails :as thc] [app.common.thumbnails :as thc]
[app.common.uuid :as uuid] [app.common.uuid :as uuid]
[app.config :as cf]
[app.main.data.changes :as dch] [app.main.data.changes :as dch]
[app.main.data.persistence :as-alias dps] [app.main.data.persistence :as-alias dps]
[app.main.data.workspace.notifications :as-alias wnt] [app.main.data.workspace.notifications :as-alias wnt]
@ -20,7 +19,6 @@
[app.main.refs :as refs] [app.main.refs :as refs]
[app.main.render :as render] [app.main.render :as render]
[app.main.repo :as rp] [app.main.repo :as rp]
[app.util.http :as http]
[app.util.queue :as q] [app.util.queue :as q]
[app.util.time :as tp] [app.util.time :as tp]
[app.util.timers :as tm] [app.util.timers :as tm]
@ -150,34 +148,34 @@
ptk/WatchEvent ptk/WatchEvent
(watch [_ state stream] (watch [_ state stream]
(l/dbg :hint "update thumbnail" :requester requester :object-id object-id :tag tag) (l/dbg :hint "update thumbnail" :requester requester :object-id object-id :tag tag)
;; Send the update to the back-end (let [tp (tp/tpoint-ms)]
(->> (request-thumbnail state file-id page-id frame-id tag) ;; Send the update to the back-end
(rx/mapcat (fn [blob] (->> (request-thumbnail state file-id page-id frame-id tag)
;; Send the data to backend (rx/mapcat (fn [blob]
(let [params {:file-id file-id (let [uri (wapi/create-uri blob)
:object-id object-id params {:file-id file-id
:media blob :object-id object-id
:tag (or tag "frame")}] :media blob
(rp/cmd! :create-file-object-thumbnail params)))) :tag (or tag "frame")}]
(rx/mapcat (fn [{:keys [object-id media-id]}] (rx/merge
(let [uri (cf/resolve-media media-id)] (rx/of (assoc-thumbnail object-id uri))
;; We perform this request just for (->> (rp/cmd! :create-file-object-thumbnail params)
;; populate the browser CACHE and avoid (rx/catch rx/empty)
;; unnecesary image flickering (rx/ignore))))))
(->> (http/send! {:uri uri :method :get})
(rx/map #(assoc-thumbnail object-id uri))))))
(rx/catch (fn [cause] (rx/catch (fn [cause]
(.error js/console cause) (.error js/console cause)
(rx/empty))) (rx/empty)))
;; We cancel all the stream if user starts editing while (rx/tap #(l/trc :hint "thumbnail updated" :elapsed (dm/str (tp) "ms")))
;; thumbnail is generating
(rx/take-until ;; We cancel all the stream if user starts editing while
(->> stream ;; thumbnail is generating
(rx/filter (ptk/type? ::clear-thumbnail)) (rx/take-until
(rx/filter #(= (deref %) object-id))))))))) (->> stream
(rx/filter (ptk/type? ::clear-thumbnail))
(rx/filter #(= (deref %) object-id))))))))))
(defn- extract-root-frame-changes (defn- extract-root-frame-changes
"Process a changes set in a commit to extract the frames that are changing" "Process a changes set in a commit to extract the frames that are changing"