Merge branch 'staging' into develop

This commit is contained in:
Andrey Antukh 2022-01-26 12:16:50 +01:00
commit e1a88ae899
9 changed files with 110 additions and 51 deletions

View file

@ -316,6 +316,11 @@
(->> (rx/of node)
(rx/observe-on :async))))
(defn media-node? [node]
(and (cip/shape? node)
(cip/has-image? node)
(not (cip/close? node))))
(defn import-page
[context file [page-id page-name content]]
(let [nodes (->> content cip/node-seq)
@ -326,18 +331,29 @@
(assoc :id (resolve page-id)))
flows (->> (get-in page-data [:options :flows])
(mapv #(update % :starting-frame resolve)))
guides (->> (get-in page-data [:options :guides])
(d/mapm #(update %2 :frame-id resolve)))
page-data (d/assoc-in-when page-data [:options :flows] flows)
file (-> file (fb/add-page page-data))
page-data (-> page-data
(d/assoc-in-when [:options :flows] flows)
(d/assoc-in-when [:options :guides] guides))
file (-> file (fb/add-page page-data))]
(->> (rx/from nodes)
(rx/filter cip/shape?)
(rx/merge-map (partial resolve-media context file-id))
(rx/reduce (partial process-import-node context) file)
(rx/map (comp fb/close-page setup-interactions)))))
;; Preprocess nodes to parallel upload the images. Store the result in a table
;; old-node => node with image
;; that will be used in the second pass immediately
pre-process-images
(->> (rx/from nodes)
(rx/filter media-node?)
(rx/merge-map
(fn [node]
(->> (resolve-media context file-id node)
(rx/map (fn [result] [node result])))))
(rx/reduce conj {}))]
(->> pre-process-images
(rx/flat-map
(fn [pre-proc]
(->> (rx/from nodes)
(rx/filter cip/shape?)
(rx/map (fn [node] (or (get pre-proc node) node)))
(rx/reduce (partial process-import-node context) file)
(rx/map (comp fb/close-page setup-interactions))))))))
(defn import-component [context file node]
(let [resolve (:resolve context)
@ -357,7 +373,7 @@
(rx/filter cip/shape?)
(rx/skip 1)
(rx/skip-last 1)
(rx/merge-map (partial resolve-media context file-id))
(rx/mapcat (partial resolve-media context file-id))
(rx/reduce (partial process-import-node context) file)
(rx/map fb/finish-component))))
@ -377,7 +393,6 @@
(fn [[page-id page-name]]
(->> (get-file context :page page-id)
(rx/map (fn [page-data] [page-id page-name page-data])))))
(rx/concat-reduce (partial import-page context) file))))
(defn process-library-colors
@ -416,7 +431,7 @@
(let [resolve (:resolve context)]
(->> (get-file context :media-list)
(rx/flat-map (comp d/kebab-keys cip/string->uuid))
(rx/merge-map
(rx/mapcat
(fn [[id media]]
(let [media (assoc media :id (resolve id))]
(->> (get-file context :media id media)