♻️ Refactor thumbnail rendering on workspace

This commit is contained in:
Aitor 2023-05-12 13:38:29 +02:00 committed by Alonso Torres
parent 1d69da1ca5
commit 48834f96d3
29 changed files with 644 additions and 616 deletions

View file

@ -57,7 +57,7 @@
(-> (fonts/ensure-loaded! font-id)
(p/then #(when (not (dom/check-font? font))
(load-font font)))
(p/catch #(.error js/console (dm/str "Cannot load font" font-id) %)))))
(p/catch #(.error js/console (dm/str "Cannot load font " font-id) %)))))
(defn- calc-text-node-positions
[shape-id]

View file

@ -51,8 +51,8 @@
(defn revoke-uri
[url]
(assert (string? url) "invalid arguments")
(js/URL.revokeObjectURL url))
(when ^boolean (str/starts-with? url "blob:")
(js/URL.revokeObjectURL url)))
(defn create-uri
"Create a url from blob."

View file

@ -8,6 +8,7 @@
"A lightweight layer on top of webworkers api."
(:require
[app.common.uuid :as uuid]
[app.util.object :as obj]
[app.worker.messages :as wm]
[beicon.core :as rx]))
@ -25,11 +26,14 @@
(rx/take-while #(not (:completed %)) ob)
(rx/take 1 ob)))
data (wm/encode message)
transfer (:transfer message)
data (cond-> (wm/encode (dissoc message :transfer))
(some? transfer)
(obj/set! "transfer" transfer))
instance (:instance worker)]
(if (some? instance)
(do (.postMessage instance data)
(do (.postMessage instance data transfer)
(->> (:stream worker)
(rx/filter #(= (:reply-to %) sender-id))
(take-messages)
@ -38,27 +42,36 @@
(rx/empty)))))
(defn ask!
[worker message]
(send-message!
worker
{:sender-id (uuid/next)
:payload message}))
([worker message]
(ask! worker message nil))
([worker message transfer]
(send-message!
worker
{:sender-id (uuid/next)
:payload message
:transfer transfer})))
(defn ask-many!
[worker message]
(send-message!
worker
{:sender-id (uuid/next)
:payload message}
{:many? true}))
([worker message]
(ask-many! worker message nil))
([worker message transfer]
(send-message!
worker
{:sender-id (uuid/next)
:payload message
:transfer transfer}
{:many? true})))
(defn ask-buffered!
[worker message]
(send-message!
worker
{:sender-id (uuid/next)
:payload message
:buffer? true}))
([worker message]
(ask-buffered! worker message nil))
([worker message transfer]
(send-message!
worker
{:sender-id (uuid/next)
:payload message
:buffer? true
:transfer transfer})))
(defn init
"Return a initialized webworker instance."