From 455b0efa71e0728c7183f034c34ba48f3f245c97 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 15 Jul 2021 16:40:00 +0200 Subject: [PATCH 1/5] :bug: Add migration for fix some inconsistencies on page data. --- backend/dev/user.clj | 30 +++++++++++++++++++++ common/src/app/common/pages/migrations.cljc | 27 +++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/backend/dev/user.clj b/backend/dev/user.clj index 4f47934a8b..2b881cc4a9 100644 --- a/backend/dev/user.clj +++ b/backend/dev/user.clj @@ -95,3 +95,33 @@ [{:v1 (alength (blob/encode data {:version 1})) :v2 (alength (blob/encode data {:version 2})) :v3 (alength (blob/encode data {:version 3}))}])) + +(defn update-page-1 + [data] + (letfn [(find-empty-groups [objects] + (->> (vals objects) + (filter (fn [shape] + (and (= :group (:type shape)) + (or (empty? (:shapes shape)) + (every? (fn [child-id] + (not (contains? objects child-id))) + (:shapes shape)))))) + (map :id))) + + (update-page [[page-id page]] + (let [objects (:objects page) + eids (find-empty-groups objects)] + + (map (fn [id] + {:type :del-obj + :page-id page-id + :id id}) + eids)))] + (loop [i 0 data data] + (let [changes (mapcat update-page (:pages-index data))] + (prn "==== loop " i " ====") + (clojure.pprint/pprint changes) + (if (seq changes) + (recur (inc i) + (app.common.pages.changes/process-changes data changes)) + data))))) diff --git a/common/src/app/common/pages/migrations.cljc b/common/src/app/common/pages/migrations.cljc index 7a12167807..861b5c0b4d 100644 --- a/common/src/app/common/pages/migrations.cljc +++ b/common/src/app/common/pages/migrations.cljc @@ -222,3 +222,30 @@ (update :pages-index #(d/mapm clean-container %)) (d/update-when :components #(d/mapm clean-container %))))) +(defmethod migrate 9 + [data] + (letfn [(find-empty-groups [objects] + (->> (vals objects) + (filter (fn [shape] + (and (= :group (:type shape)) + (or (empty? (:shapes shape)) + (every? (fn [child-id] + (not (contains? objects child-id))) + (:shapes shape)))))) + (map :id))) + + (update-page [[page-id page]] + (let [objects (:objects page) + eids (find-empty-groups objects)] + + (map (fn [id] + {:type :del-obj + :page-id page-id + :id id}) + eids)))] + + (loop [data data] + (let [changes (mapcat update-page (:pages-index data))] + (if (seq changes) + (recur (cp/process-changes data changes)) + data))))) From 7c983361487e38f68e5f5ac16bf2f4fe4ea22d21 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 15 Jul 2021 16:50:32 +0200 Subject: [PATCH 2/5] :paperclip: Improve error reporting. --- backend/dev/user.clj | 30 -------------------------- backend/src/app/loggers/mattermost.clj | 15 ++++++------- 2 files changed, 6 insertions(+), 39 deletions(-) diff --git a/backend/dev/user.clj b/backend/dev/user.clj index 2b881cc4a9..4f47934a8b 100644 --- a/backend/dev/user.clj +++ b/backend/dev/user.clj @@ -95,33 +95,3 @@ [{:v1 (alength (blob/encode data {:version 1})) :v2 (alength (blob/encode data {:version 2})) :v3 (alength (blob/encode data {:version 3}))}])) - -(defn update-page-1 - [data] - (letfn [(find-empty-groups [objects] - (->> (vals objects) - (filter (fn [shape] - (and (= :group (:type shape)) - (or (empty? (:shapes shape)) - (every? (fn [child-id] - (not (contains? objects child-id))) - (:shapes shape)))))) - (map :id))) - - (update-page [[page-id page]] - (let [objects (:objects page) - eids (find-empty-groups objects)] - - (map (fn [id] - {:type :del-obj - :page-id page-id - :id id}) - eids)))] - (loop [i 0 data data] - (let [changes (mapcat update-page (:pages-index data))] - (prn "==== loop " i " ====") - (clojure.pprint/pprint changes) - (if (seq changes) - (recur (inc i) - (app.common.pages.changes/process-changes data changes)) - data))))) diff --git a/backend/src/app/loggers/mattermost.clj b/backend/src/app/loggers/mattermost.clj index 34120a3604..fc0109bdda 100644 --- a/backend/src/app/loggers/mattermost.clj +++ b/backend/src/app/loggers/mattermost.clj @@ -63,15 +63,12 @@ [cfg {:keys [host version id] :as cdata}] (try (let [uri (:uri cfg) - text (str "Unhandled exception:\n" - "- detail: " (cfg/get :public-uri) "/dbg/error-by-id/" id "\n" - "- profile-id: `" (:profile-id cdata) "`\n" - "- host: `" host "`\n" - "- version: `" version "`\n") - rsp (http/send! {:uri uri - :method :post - :headers {"content-type" "application/json"} - :body (json/encode-str {:text text})})] + text (str "Unhandled exception (host: " host ", url: " (cfg/get :public-uri) "/dbg/error-by-id/" id "\n" + "- profile-id: #" (:profile-id cdata) "\n") + rsp (http/send! {:uri uri + :method :post + :headers {"content-type" "application/json"} + :body (json/encode-str {:text text})})] (when (not= (:status rsp) 200) (l/error :hint "error on sending data to mattermost" :response (pr-str rsp)))) From 946309a485ef483b3b93910d82c4376daf1a8913 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 15 Jul 2021 16:50:56 +0200 Subject: [PATCH 3/5] :paperclip: Add migration for cleaning unused props on file data. --- common/src/app/common/pages/common.cljc | 2 +- common/src/app/common/pages/migrations.cljc | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/common/src/app/common/pages/common.cljc b/common/src/app/common/pages/common.cljc index 29319abef4..cda7ad1a92 100644 --- a/common/src/app/common/pages/common.cljc +++ b/common/src/app/common/pages/common.cljc @@ -8,7 +8,7 @@ (:require [app.common.uuid :as uuid])) -(def file-version 8) +(def file-version 10) (def default-color "#b1b2b5") ;; $color-gray-20 (def root uuid/zero) diff --git a/common/src/app/common/pages/migrations.cljc b/common/src/app/common/pages/migrations.cljc index 861b5c0b4d..1c3ab69ab1 100644 --- a/common/src/app/common/pages/migrations.cljc +++ b/common/src/app/common/pages/migrations.cljc @@ -234,7 +234,7 @@ (:shapes shape)))))) (map :id))) - (update-page [[page-id page]] + (calculate-changes [[page-id page]] (let [objects (:objects page) eids (find-empty-groups objects)] @@ -245,7 +245,15 @@ eids)))] (loop [data data] - (let [changes (mapcat update-page (:pages-index data))] + (let [changes (mapcat calculate-changes (:pages-index data))] (if (seq changes) (recur (cp/process-changes data changes)) data))))) + +(defmethod migrate 10 + [data] + (letfn [(update-page [_ page] + (d/update-in-when page [:objects uuid/zero] dissoc :points :selrect))] + (update data :pages-index #(d/mapm update-page %)))) + + From f29d54ad0dcc339ec79a78dded71ebc570b19d61 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 15 Jul 2021 17:23:51 +0200 Subject: [PATCH 4/5] :bug: Add migration for fix unreferenced shapes on frames. --- common/src/app/common/pages/common.cljc | 2 +- common/src/app/common/pages/migrations.cljc | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/common/src/app/common/pages/common.cljc b/common/src/app/common/pages/common.cljc index cda7ad1a92..8a99ac3f3c 100644 --- a/common/src/app/common/pages/common.cljc +++ b/common/src/app/common/pages/common.cljc @@ -8,7 +8,7 @@ (:require [app.common.uuid :as uuid])) -(def file-version 10) +(def file-version 11) (def default-color "#b1b2b5") ;; $color-gray-20 (def root uuid/zero) diff --git a/common/src/app/common/pages/migrations.cljc b/common/src/app/common/pages/migrations.cljc index 1c3ab69ab1..61d8d87884 100644 --- a/common/src/app/common/pages/migrations.cljc +++ b/common/src/app/common/pages/migrations.cljc @@ -256,4 +256,15 @@ (d/update-in-when page [:objects uuid/zero] dissoc :points :selrect))] (update data :pages-index #(d/mapm update-page %)))) +(defmethod migrate 11 + [data] + (letfn [(update-object [objects id shape] + (if (= :frame (:type shape)) + (d/update-when shape :shapes (fn [shapes] + (filterv (fn [id] (contains? objects id)) shapes))) + shape)) + (update-page [id {:keys [objects] :as page}] + (d/mapm (partial update-object objects) objects))] + + (update data :pages-index #(d/mapm update-page %)))) From 768216d9bc01873b99a51b9c35c95cb808bbb105 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 15 Jul 2021 17:39:56 +0200 Subject: [PATCH 5/5] :bug: Fix previous migration. --- common/src/app/common/pages/migrations.cljc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/src/app/common/pages/migrations.cljc b/common/src/app/common/pages/migrations.cljc index 61d8d87884..f06c79563f 100644 --- a/common/src/app/common/pages/migrations.cljc +++ b/common/src/app/common/pages/migrations.cljc @@ -264,7 +264,7 @@ (filterv (fn [id] (contains? objects id)) shapes))) shape)) - (update-page [id {:keys [objects] :as page}] - (d/mapm (partial update-object objects) objects))] + (update-page [_ page] + (update page :objects #(d/mapm (partial update-object %) %)))] (update data :pages-index #(d/mapm update-page %))))