From 32520884948f747fa10bd899404b4fa8eb3edaf5 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Wed, 30 Nov 2022 13:56:44 +0100 Subject: [PATCH] :tada: Add support typography management via library --- common/src/app/common/file_builder.cljc | 8 ++++++++ frontend/src/app/libs/file_builder.cljs | 18 +++++++++++++++++- frontend/src/app/worker/export.cljs | 17 +++++++++-------- 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/common/src/app/common/file_builder.cljc b/common/src/app/common/file_builder.cljc index 0f04df9806..1706452c2d 100644 --- a/common/src/app/common/file_builder.cljc +++ b/common/src/app/common/file_builder.cljc @@ -532,6 +532,14 @@ :typography (assoc typography :id id)}) (assoc :last-id id)))) +(defn delete-library-typography + [file typography-id] + (let [id (uuid/uuid typography-id)] + (-> file + (commit-change + {:type :del-typography + :id id})))) + (defn add-library-media [file media] (let [id (or (:id media) (uuid/next))] diff --git a/frontend/src/app/libs/file_builder.cljs b/frontend/src/app/libs/file_builder.cljs index 0d4e723511..4c1e42adb6 100644 --- a/frontend/src/app/libs/file_builder.cljs +++ b/frontend/src/app/libs/file_builder.cljs @@ -91,6 +91,13 @@ (rx/filter #(d/not-empty? (second %))) (rx/map e/parse-library-color)) + typographies-stream + (->> files-stream + (rx/flat-map vals) + (rx/map #(vector (:id %) (get-in % [:data :typographies]))) + (rx/filter #(d/not-empty? (second %))) + (rx/map e/parse-library-typographies)) + media-stream (->> files-stream (rx/flat-map vals) @@ -120,7 +127,8 @@ pages-stream components-stream media-stream - colors-stream) + colors-stream + typographies-stream) (rx/reduce conj []) (rx/with-latest-from files-stream) (rx/flat-map (fn [[data _]] @@ -209,6 +217,14 @@ (set! file (fb/delete-library-media file (parse-data data))) (str (:last-id file))) + (addLibraryTypography [_ data] + (set! file (fb/add-library-typography file (parse-data data))) + (str (:last-id file))) + + (deleteLibraryTypography [_ data] + (set! file (fb/delete-library-typography file (parse-data data))) + (str (:last-id file))) + (startComponent [_ data] (set! file (fb/start-component file (parse-data data))) (str (:current-component-id file))) diff --git a/frontend/src/app/worker/export.cljs b/frontend/src/app/worker/export.cljs index ac3ecfac4b..c40a172b90 100644 --- a/frontend/src/app/worker/export.cljs +++ b/frontend/src/app/worker/export.cljs @@ -155,14 +155,15 @@ (->> (r/render-components (:data file) :deleted-components) (rx/map #(vector (str (:id file) "/deleted-components.svg") %)))) -(defn fetch-file-with-libraries [file-id components-v2] - (->> (rx/zip (rp/query :file {:id file-id :components-v2 components-v2}) - (rp/query :file-libraries {:file-id file-id})) - (rx/map - (fn [[file file-libraries]] - (let [libraries-ids (->> file-libraries (map :id) (filterv #(not= (:id file) %)))] - (-> file - (assoc :libraries libraries-ids))))))) +(defn fetch-file-with-libraries + [file-id components-v2] + (let [features (cond-> #{} components-v2 (conj "components/v2"))] + (->> (rx/zip (rp/cmd! :get-file {:id file-id :features features}) + (rp/cmd! :get-file-libraries {:file-id file-id})) + (rx/map + (fn [[file file-libraries]] + (let [libraries-ids (->> file-libraries (map :id) (filterv #(not= (:id file) %)))] + (assoc file :libraries libraries-ids))))))) (defn get-component-ref-file [objects shape]