0
Fork 0
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:
Andrey Antukh 2020-05-11 08:09:37 +02:00 committed by Alonso Torres
parent 6a6ead0d63
commit 1e6ed35c77
2 changed files with 42 additions and 9 deletions

View file

@ -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

View file

@ -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}))))