From 496ba433e9d089360888908bae9d6974edd9eaf1 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 23 Feb 2022 12:16:51 +0100 Subject: [PATCH 1/9] :paperclip: Fix linter issues --- backend/src/app/http/feedback.clj | 3 +-- backend/src/app/loggers/audit.clj | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/backend/src/app/http/feedback.clj b/backend/src/app/http/feedback.clj index a402b4bd1..1f7e92a03 100644 --- a/backend/src/app/http/feedback.clj +++ b/backend/src/app/http/feedback.clj @@ -28,8 +28,7 @@ (defmethod ig/init-key ::handler [_ {:keys [executor] :as cfg}] - (let [ftoken (cf/get :feedback-token ::no-token) - enabled? (contains? cf/flags :user-feedback)] + (let [enabled? (contains? cf/flags :user-feedback)] (if enabled? (fn [request respond raise] (-> (px/submit! executor #(handler cfg request)) diff --git a/backend/src/app/loggers/audit.clj b/backend/src/app/loggers/audit.clj index 60ef42abd..661b824b0 100644 --- a/backend/src/app/loggers/audit.clj +++ b/backend/src/app/loggers/audit.clj @@ -22,10 +22,9 @@ [clojure.core.async :as a] [clojure.spec.alpha :as s] [cuerdas.core :as str] - [promesa.core :as p] - [promesa.exec :as px] [integrant.core :as ig] [lambdaisland.uri :as u] + [promesa.core :as p] [promesa.exec :as px])) (defn parse-client-ip @@ -110,7 +109,7 @@ (l/error ::l/raw (str "spec validation on persist-events:\n" (us/pretty-explain xdata))) (l/error :hint "error on persist-events" :cause cause))))] - (fn [request respond raise] + (fn [request respond _] ;; Fire and forget, log error in case of errro (-> (px/submit! executor #(handler request)) (p/catch handle-error)) From e15f5bb4329592ed22d87cc188a5c4f8c3c7d544 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 23 Feb 2022 12:34:08 +0100 Subject: [PATCH 2/9] :bug: Fix issues with not authenticated requests Related to concurrency model refactor. --- backend/src/app/rpc.clj | 18 ++++++++---------- backend/src/app/rpc/retry.clj | 11 ++--------- 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/backend/src/app/rpc.clj b/backend/src/app/rpc.clj index 312fa657a..e9ef65a25 100644 --- a/backend/src/app/rpc.clj +++ b/backend/src/app/rpc.clj @@ -114,10 +114,7 @@ (if (= :none dname) (with-meta (fn [cfg params] - (try - (p/wrap (f cfg params)) - (catch Throwable cause - (p/rejected cause)))) + (p/do! (f cfg params))) mdata) (let [executor (get executors dname)] @@ -173,13 +170,14 @@ (fn [{:keys [::request] :as params}] ;; Raise authentication error when rpc method requires auth but ;; no profile-id is found in the request. - (when (and auth? (not (uuid? (:profile-id params)))) - (ex/raise :type :authentication - :code :authentication-required - :hint "authentication required for this endpoint")) + (p/do! + (if (and auth? (not (uuid? (:profile-id params)))) + (ex/raise :type :authentication + :code :authentication-required + :hint "authentication required for this endpoint") + (let [params (us/conform spec (dissoc params ::request))] + (f cfg (assoc params ::request request)))))) - (let [params (us/conform spec (dissoc params ::request))] - (f cfg (assoc params ::request request)))) mdata))) (defn- process-method diff --git a/backend/src/app/rpc/retry.clj b/backend/src/app/rpc/retry.clj index f63cb90d9..471bc526d 100644 --- a/backend/src/app/rpc/retry.clj +++ b/backend/src/app/rpc/retry.clj @@ -29,17 +29,10 @@ (if-let [max-retries (::max-retries mdata)] (fn [cfg params] (letfn [(run [retry] - (prn "wrap-retry" "run" retry) - (try - (-> (f cfg params) - (p/catch (partial handle-error retry))) - (catch Throwable cause - (prn cause) - (throw cause)))) - + (-> (f cfg params) + (p/catch (partial handle-error retry)))) (handle-error [retry cause] - (prn "FOOFOFOF" retry (matches cause)) (if (matches cause) (let [current-retry (inc retry)] (l/trace :hint "running retry algorithm" :retry current-retry) From 87c1bc4bdbeb65da071ddd1a5d6fe479ff1cfbe0 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 23 Feb 2022 12:40:28 +0100 Subject: [PATCH 3/9] :bug: Fix incorrect error id reporting on mattermost webhook --- common/src/app/common/logging.cljc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/common/src/app/common/logging.cljc b/common/src/app/common/logging.cljc index b9331834c..f96c6cb04 100644 --- a/common/src/app/common/logging.cljc +++ b/common/src/app/common/logging.cljc @@ -7,6 +7,7 @@ (ns app.common.logging (:require [app.common.exceptions :as ex] + [app.common.uuid :as uuid] [clojure.pprint :refer [pprint]] [cuerdas.core :as str] [fipp.edn :as fpp] @@ -175,7 +176,7 @@ `(->> (ThreadContext/getImmutableContext) (send-off logging-agent (fn [_# cdata#] - (with-context (-> {} (into cdata#) (into ~context)) + (with-context (-> {:id (uuid/next)} (into cdata#) (into ~context)) (->> (or ~raw (build-map-message ~props)) (write-log! ~logger-sym ~level-sym ~cause)))))) From 24a0b4445eb838b6c8e04b0e124f91efe460477b Mon Sep 17 00:00:00 2001 From: Eva Date: Wed, 23 Feb 2022 09:31:23 +0100 Subject: [PATCH 4/9] :sparkles: Open feedback page in a new tab --- CHANGES.md | 1 + frontend/src/app/main/ui/workspace/header.cljs | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index dbc43f80a..05fa25ce0 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,7 @@ ### :sparkles: New features +- Open feedback in a new window [Taiga #2901](https://tree.taiga.io/project/penpot/us/2901) - Improve usage of file menu [Taiga #2853](https://tree.taiga.io/project/penpot/us/2853) - Rotation to snap to 15ยบ intervals with shift [Taiga #2437](https://tree.taiga.io/project/penpot/issue/2437) - Support border radius and stroke properties for images [Taiga #497](https://tree.taiga.io/project/penpot/us/497) diff --git a/frontend/src/app/main/ui/workspace/header.cljs b/frontend/src/app/main/ui/workspace/header.cljs index 3d5169fb2..91dbaae85 100644 --- a/frontend/src/app/main/ui/workspace/header.cljs +++ b/frontend/src/app/main/ui/workspace/header.cljs @@ -252,8 +252,7 @@ [:span (tr "workspace.header.menu.option.preferences")] [:span i/arrow-slide]] (when (contains? @cf/flags :user-feedback) [:* - [:li.feedback {:on-click (st/emitf (rt/nav :settings-feedback)) - :on-pointer-enter (st/emitf (rt/nav :settings-feedback))} + [:li.feedback {:on-click (st/emitf (rt/nav-new-window* {:rname :settings-feedback}))} [:span (tr "labels.give-feedback")]]])]] [:& dropdown {:show (= @show-sub-menu? :file) From 37a35b18272b509c51479198026a2737c79d751d Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 24 Feb 2022 09:09:46 +0100 Subject: [PATCH 5/9] :sparkles: Minor improvements on telemetry task --- backend/src/app/tasks/telemetry.clj | 36 ++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/backend/src/app/tasks/telemetry.clj b/backend/src/app/tasks/telemetry.clj index 812e36f97..7b208cb00 100644 --- a/backend/src/app/tasks/telemetry.clj +++ b/backend/src/app/tasks/telemetry.clj @@ -38,14 +38,17 @@ (defmethod ig/init-key ::handler [_ {:keys [pool sprops version] :as cfg}] - (fn [_] + (fn [{:keys [send?] :or {send? true}}] ;; Sleep randomly between 0 to 10s - (thread-sleep (rand-int 10000)) + (when send? + (thread-sleep (rand-int 10000))) - (let [instance-id (:instance-id sprops)] - (-> (get-stats pool version) - (assoc :instance-id instance-id) - (send! cfg))))) + (let [instance-id (:instance-id sprops) + stats (-> (get-stats pool version) + (assoc :instance-id instance-id))] + (when send? + (send! stats cfg)) + stats))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; IMPL @@ -137,12 +140,28 @@ (->> [sql:team-averages] (db/exec-one! conn))) +(defn- retrieve-enabled-auth-providers + [conn] + (let [sql (str "select auth_backend as backend, count(*) as total " + " from profile group by 1") + rows (db/exec! conn [sql])] + (->> rows + (map (fn [{:keys [backend total]}] + (let [backend (or backend "penpot")] + [(keyword (str "auth-backend-" backend)) + total]))) + (into {})))) + (defn- retrieve-jvm-stats [] (let [^Runtime runtime (Runtime/getRuntime)] {:jvm-heap-current (.totalMemory runtime) :jvm-heap-max (.maxMemory runtime) - :jvm-cpus (.availableProcessors runtime)})) + :jvm-cpus (.availableProcessors runtime) + :os-arch (System/getProperty "os.arch") + :os-name (System/getProperty "os.name") + :os-version (System/getProperty "os.version") + :user-tz (System/getProperty "user.timezone")})) (defn get-stats [conn version] @@ -161,6 +180,7 @@ :total-touched-files (retrieve-num-touched-files conn)} (d/merge (retrieve-team-averages conn) - (retrieve-jvm-stats)) + (retrieve-jvm-stats) + (retrieve-enabled-auth-providers conn)) (d/without-nils)))) From b4c87ad0b9642527d9cacbf26abb69c2bd0f1e40 Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Thu, 24 Feb 2022 11:45:56 +0100 Subject: [PATCH 6/9] :bug: Fix font for guides and rulese --- frontend/src/app/main/ui/workspace/viewport/guides.cljs | 8 ++++---- frontend/src/app/main/ui/workspace/viewport/rules.cljs | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/src/app/main/ui/workspace/viewport/guides.cljs b/frontend/src/app/main/ui/workspace/viewport/guides.cljs index 6aebf468a..7bfde052a 100644 --- a/frontend/src/app/main/ui/workspace/viewport/guides.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/guides.cljs @@ -196,13 +196,13 @@ (if (= axis :x) {:rect-x (- pos (/ guide-pill-width 2)) - :rect-y (+ (:y vbox) rules-pos (- (/ guide-pill-width 2)) (/ 2 zoom)) + :rect-y (+ (:y vbox) rules-pos (- (/ guide-pill-width 2)) (/ 3 zoom)) :rect-width guide-pill-width :rect-height guide-pill-height :text-x pos :text-y (+ (:y vbox) rules-pos (- (/ 3 zoom)))} - {:rect-x (+ (:x vbox) rules-pos (- (/ guide-pill-height 2)) (- (/ 5 zoom))) + {:rect-x (+ (:x vbox) rules-pos (- (/ guide-pill-height 2)) (- (/ 4 zoom))) :rect-y (- pos (/ guide-pill-width 2)) :rect-width guide-pill-height :rect-height guide-pill-width @@ -363,8 +363,8 @@ :text-anchor "middle" :dominant-baseline "middle" :transform (when (= axis :y) (str "rotate(-90 " text-x "," text-y ")")) - :style {:font-size (/ 13 zoom) - :font-family "sourcesanspro" + :style {:font-size (/ rules/font-size zoom) + :font-family rules/font-family :fill colors/black}} (str (mth/round pos))]]))]))) diff --git a/frontend/src/app/main/ui/workspace/viewport/rules.cljs b/frontend/src/app/main/ui/workspace/viewport/rules.cljs index eac032403..57a27c106 100644 --- a/frontend/src/app/main/ui/workspace/viewport/rules.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/rules.cljs @@ -25,8 +25,8 @@ (def over-number-size 50) (def over-number-opacity 0.7) -(def font-size 13) -(def font-family "sourcesanspro") +(def font-size 12) +(def font-family "worksans") ;; ---------------- ;; RULES From d2590c7651edbcfd457a2ed482a59b3041e51056 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Fri, 25 Feb 2022 11:40:25 +0100 Subject: [PATCH 7/9] :bug: [Prototype] Prototype mode should not allow edits --- frontend/src/app/main/data/workspace.cljs | 8 ++++++-- frontend/src/app/main/data/workspace/interactions.cljs | 9 +++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index ebbb1c692..3c896d322 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -754,9 +754,13 @@ ptk/WatchEvent (watch [_ state _] (let [selected (wsh/lookup-selected state) - hover-guides (get-in state [:workspace-guides :hover])] + hover-guides (get-in state [:workspace-guides :hover]) + options-mode (get-in state [:workspace-global :options-mode])] (cond - (d/not-empty? selected) + (and (= options-mode :prototype) (d/not-empty? selected)) + (rx/of (dwi/remove-interactions selected)) + + (and (= options-mode :design) (d/not-empty? selected)) (rx/of (dwc/delete-shapes selected) (dws/deselect-all)) diff --git a/frontend/src/app/main/data/workspace/interactions.cljs b/frontend/src/app/main/data/workspace/interactions.cljs index cf71f907b..93331bd30 100644 --- a/frontend/src/app/main/data/workspace/interactions.cljs +++ b/frontend/src/app/main/data/workspace/interactions.cljs @@ -171,6 +171,15 @@ (update shape :interactions csi/remove-interaction index))))))) +(defn remove-interactions + [ids] + (ptk/reify ::remove-interactions + ptk/WatchEvent + (watch [_ _ _] + (rx/of (dch/update-shapes ids + (fn [shape] + (assoc shape :interactions []))))))) + (defn update-interaction [shape index update-fn] (ptk/reify ::update-interaction From 2fc4c30bedc25245a139aceaeb0d923757018086 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Fri, 25 Feb 2022 12:41:19 +0100 Subject: [PATCH 8/9] :bug: [Prototype] Prototype mode should not allow edits --- frontend/src/app/main/data/workspace.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 3c896d322..15c46bfdb 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -755,7 +755,7 @@ (watch [_ state _] (let [selected (wsh/lookup-selected state) hover-guides (get-in state [:workspace-guides :hover]) - options-mode (get-in state [:workspace-global :options-mode])] + options-mode (get-in state [:workspace-local :options-mode])] (cond (and (= options-mode :prototype) (d/not-empty? selected)) (rx/of (dwi/remove-interactions selected)) From 05c77d0248743ca00064076e2ac0169099c186f6 Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Fri, 25 Feb 2022 12:33:19 +0100 Subject: [PATCH 9/9] :bug: Fix problem with collapsing pages --- frontend/src/app/main/ui/workspace.cljs | 2 +- .../app/main/ui/workspace/sidebar/sitemap.cljs | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/frontend/src/app/main/ui/workspace.cljs b/frontend/src/app/main/ui/workspace.cljs index e9d06b920..bf9f519c7 100644 --- a/frontend/src/app/main/ui/workspace.cljs +++ b/frontend/src/app/main/ui/workspace.cljs @@ -52,7 +52,7 @@ (mf/use-callback (mf/deps (:vport local)) (fn [resize-type size] - (when (:vport local) + (when (and (:vport local) (not= size (:vport local))) (st/emit! (dw/update-viewport-size resize-type size))))) node-ref (use-resize-observer on-resize)] diff --git a/frontend/src/app/main/ui/workspace/sidebar/sitemap.cljs b/frontend/src/app/main/ui/workspace/sidebar/sitemap.cljs index 56ed2bf76..942c75ea5 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/sitemap.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/sitemap.cljs @@ -209,6 +209,7 @@ {:keys [on-pointer-down on-lost-pointer-capture on-mouse-move parent-ref size]} (use-resize-hook :sitemap 200 38 400 :y false nil) + size (if @show-pages? size 38) toggle-pages (mf/use-callback #(reset! show-pages? not))] @@ -217,12 +218,13 @@ [:div.tool-window-bar [:span (tr "workspace.sidebar.sitemap")] [:div.add-page {:on-click create} i/close] - [:div.collapse-pages {:on-click toggle-pages} i/arrow-slide]] + [:div.collapse-pages {:on-click toggle-pages + :style {:transform (when (not @show-pages?) "rotate(-90deg)")}} i/arrow-slide]] + + [:div.tool-window-content + [:& pages-list {:file file :key (:id file)}]] (when @show-pages? - [:div.tool-window-content - [:& pages-list {:file file :key (:id file)}]]) - - [:div.resize-area {:on-pointer-down on-pointer-down - :on-lost-pointer-capture on-lost-pointer-capture - :on-mouse-move on-mouse-move}]])) + [:div.resize-area {:on-pointer-down on-pointer-down + :on-lost-pointer-capture on-lost-pointer-capture + :on-mouse-move on-mouse-move}])]))