mirror of
https://github.com/penpot/penpot.git
synced 2025-03-13 16:21:57 -05:00
✨ Fetch page data from backend (for thumbnails generation).
This commit is contained in:
parent
6a6ead0d63
commit
1e6ed35c77
2 changed files with 42 additions and 9 deletions
|
@ -28,11 +28,12 @@
|
|||
(mf/deps file)
|
||||
(fn []
|
||||
(-> (wrk/ask! {:cmd :thumbnails/generate
|
||||
:data (:data file)})
|
||||
:id (first (:pages file))
|
||||
})
|
||||
(rx/subscribe (fn [{:keys [svg fonts]}]
|
||||
(run! fonts/ensure-loaded! fonts)
|
||||
(let [node (mf/ref-val container)]
|
||||
(set! (.-innerHTML node) svg)))))))
|
||||
(when-let [node (mf/ref-val container)]
|
||||
(set! (.-innerHTML ^js node) svg)))))))
|
||||
[:div.grid-item-th {:ref container}]))
|
||||
|
||||
;; --- Grid Item
|
||||
|
|
|
@ -10,15 +10,47 @@
|
|||
(ns uxbox.worker.thumbnails
|
||||
(:require
|
||||
[rumext.alpha :as mf]
|
||||
[beicon.core :as rx]
|
||||
[promesa.core :as p]
|
||||
[uxbox.main.fonts :as fonts]
|
||||
[uxbox.main.exports :as exports]
|
||||
[uxbox.worker.impl :as impl]
|
||||
[uxbox.util.http-api :as http]
|
||||
["react-dom/server" :as rds]))
|
||||
|
||||
(defn- handle-response
|
||||
[response]
|
||||
(cond
|
||||
(http/success? response)
|
||||
(rx/of (:body response))
|
||||
|
||||
(http/client-error? response)
|
||||
(rx/throw (:body response))
|
||||
|
||||
:else
|
||||
(rx/throw {:type :unexpected
|
||||
:code (:error response)})))
|
||||
|
||||
(defn- request-page
|
||||
[id]
|
||||
(p/create
|
||||
(fn [resolve reject]
|
||||
(->> (http/send! {:url "http://localhost:6060/api/w/query/page"
|
||||
:query {:id id}
|
||||
:method :get})
|
||||
(rx/mapcat handle-response)
|
||||
(rx/subs (fn [body]
|
||||
(resolve (:data body)))
|
||||
(fn [error]
|
||||
(reject error)))))))
|
||||
|
||||
(defmethod impl/handler :thumbnails/generate
|
||||
[{:keys [data] :as message}]
|
||||
(let [elem (mf/element exports/page-svg #js {:data data
|
||||
:width "290"
|
||||
:height "150"})]
|
||||
{:svg (rds/renderToStaticMarkup elem)
|
||||
:fonts @fonts/loaded}))
|
||||
[{:keys [id] :as message}]
|
||||
(p/then
|
||||
(request-page id)
|
||||
(fn [data]
|
||||
(let [elem (mf/element exports/page-svg #js {:data data
|
||||
:width "290"
|
||||
:height "150"})]
|
||||
{:svg (rds/renderToStaticMarkup elem)
|
||||
:fonts @fonts/loaded}))))
|
||||
|
|
Loading…
Add table
Reference in a new issue