mirror of
https://github.com/penpot/penpot.git
synced 2025-03-14 08:41:48 -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)
|
(mf/deps file)
|
||||||
(fn []
|
(fn []
|
||||||
(-> (wrk/ask! {:cmd :thumbnails/generate
|
(-> (wrk/ask! {:cmd :thumbnails/generate
|
||||||
:data (:data file)})
|
:id (first (:pages file))
|
||||||
|
})
|
||||||
(rx/subscribe (fn [{:keys [svg fonts]}]
|
(rx/subscribe (fn [{:keys [svg fonts]}]
|
||||||
(run! fonts/ensure-loaded! fonts)
|
(run! fonts/ensure-loaded! fonts)
|
||||||
(let [node (mf/ref-val container)]
|
(when-let [node (mf/ref-val container)]
|
||||||
(set! (.-innerHTML node) svg)))))))
|
(set! (.-innerHTML ^js node) svg)))))))
|
||||||
[:div.grid-item-th {:ref container}]))
|
[:div.grid-item-th {:ref container}]))
|
||||||
|
|
||||||
;; --- Grid Item
|
;; --- Grid Item
|
||||||
|
|
|
@ -10,15 +10,47 @@
|
||||||
(ns uxbox.worker.thumbnails
|
(ns uxbox.worker.thumbnails
|
||||||
(:require
|
(:require
|
||||||
[rumext.alpha :as mf]
|
[rumext.alpha :as mf]
|
||||||
|
[beicon.core :as rx]
|
||||||
|
[promesa.core :as p]
|
||||||
[uxbox.main.fonts :as fonts]
|
[uxbox.main.fonts :as fonts]
|
||||||
[uxbox.main.exports :as exports]
|
[uxbox.main.exports :as exports]
|
||||||
[uxbox.worker.impl :as impl]
|
[uxbox.worker.impl :as impl]
|
||||||
|
[uxbox.util.http-api :as http]
|
||||||
["react-dom/server" :as rds]))
|
["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
|
(defmethod impl/handler :thumbnails/generate
|
||||||
[{:keys [data] :as message}]
|
[{:keys [id] :as message}]
|
||||||
(let [elem (mf/element exports/page-svg #js {:data data
|
(p/then
|
||||||
:width "290"
|
(request-page id)
|
||||||
:height "150"})]
|
(fn [data]
|
||||||
{:svg (rds/renderToStaticMarkup elem)
|
(let [elem (mf/element exports/page-svg #js {:data data
|
||||||
:fonts @fonts/loaded}))
|
:width "290"
|
||||||
|
:height "150"})]
|
||||||
|
{:svg (rds/renderToStaticMarkup elem)
|
||||||
|
:fonts @fonts/loaded}))))
|
||||||
|
|
Loading…
Add table
Reference in a new issue