From d175c96871c85cbf95cd21db9f7e11c31925b568 Mon Sep 17 00:00:00 2001 From: Pablo Alba Date: Tue, 30 Aug 2022 12:34:29 +0200 Subject: [PATCH 1/2] :bug: Fix on color-picker, click+drag adds lots of recent colors --- CHANGES.md | 1 + .../src/app/main/data/workspace/colors.cljs | 4 +--- .../src/app/main/ui/workspace/colorpicker.cljs | 17 +++++++++++++---- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 157fa194c..24301e1cc 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -10,6 +10,7 @@ - Fix mismatch between editor and displayed text in workspace [Taiga #3975](https://tree.taiga.io/project/penpot/issue/3975) - Fix validation error on text position [Taiga #4010](https://tree.taiga.io/project/penpot/issue/4010) - Fix objects jitter while scrolling [Github #2167](https://github.com/penpot/penpot/issues/2167) +- Fix on color-picker, click+drag adds lots of recent colors [Taiga #4013](https://tree.taiga.io/project/penpot/issue/4013) ## 1.15.0-beta diff --git a/frontend/src/app/main/data/workspace/colors.cljs b/frontend/src/app/main/data/workspace/colors.cljs index 61f91a062..e6915bf1d 100644 --- a/frontend/src/app/main/data/workspace/colors.cljs +++ b/frontend/src/app/main/data/workspace/colors.cljs @@ -13,7 +13,6 @@ [app.main.data.modal :as md] [app.main.data.workspace.changes :as dch] [app.main.data.workspace.layout :as layout] - [app.main.data.workspace.libraries :as dwl] [app.main.data.workspace.state-helpers :as wsh] [app.main.data.workspace.texts :as dwt] [app.util.color :as uc] @@ -430,8 +429,7 @@ ptk/WatchEvent (watch [_ state _] (when-let [color (some-> state :colorpicker get-color-from-colorpicker-state)] - (on-change color) - (rx/of (dwl/add-recent-color color)))))) + (on-change color))))) (defn initialize-colorpicker [on-change] diff --git a/frontend/src/app/main/ui/workspace/colorpicker.cljs b/frontend/src/app/main/ui/workspace/colorpicker.cljs index da975ea1d..16fbf2b47 100644 --- a/frontend/src/app/main/ui/workspace/colorpicker.cljs +++ b/frontend/src/app/main/ui/workspace/colorpicker.cljs @@ -94,7 +94,16 @@ (mf/use-fn #(st/emit! (dc/activate-colorpicker-gradient :linear-gradient))) on-activate-radial-gradient - (mf/use-fn #(st/emit! (dc/activate-colorpicker-gradient :radial-gradient)))] + (mf/use-fn #(st/emit! (dc/activate-colorpicker-gradient :radial-gradient))) + + on-finish-drag + (mf/use-fn + (mf/deps state) + (fn [] + (let [color (dc/get-color-from-colorpicker-state state)] + (st/emit! + (dwl/add-recent-color color) + (dwu/commit-undo-transaction)))))] ;; Initialize colorpicker state (mf/with-effect [] @@ -186,21 +195,21 @@ :disable-opacity disable-opacity :on-change handle-change-color :on-start-drag #(st/emit! (dwu/start-undo-transaction)) - :on-finish-drag #(st/emit! (dwu/commit-undo-transaction))}] + :on-finish-drag on-finish-drag}] :harmony [:& harmony-selector {:color current-color :disable-opacity disable-opacity :on-change handle-change-color :on-start-drag #(st/emit! (dwu/start-undo-transaction)) - :on-finish-drag #(st/emit! (dwu/commit-undo-transaction))}] + :on-finish-drag on-finish-drag}] :hsva [:& hsva-selector {:color current-color :disable-opacity disable-opacity :on-change handle-change-color :on-start-drag #(st/emit! (dwu/start-undo-transaction)) - :on-finish-drag #(st/emit! (dwu/commit-undo-transaction))}] + :on-finish-drag on-finish-drag}] nil)) [:& color-inputs From 1bb83b3019ad03005dbe56a3375b4db9f85d021b Mon Sep 17 00:00:00 2001 From: Pablo Alba Date: Thu, 25 Aug 2022 17:02:06 +0200 Subject: [PATCH 2/2] :bug: Fix bringing complete file data when launching the export dialog --- CHANGES.md | 1 + backend/src/app/http/middleware.clj | 2 +- backend/src/app/rpc.clj | 3 +- backend/src/app/rpc/commands/files.clj | 50 +++++++++++++++++++ .../src/app/main/ui/dashboard/file_menu.cljs | 5 +- .../src/app/main/ui/workspace/header.cljs | 8 ++- 6 files changed, 59 insertions(+), 10 deletions(-) create mode 100644 backend/src/app/rpc/commands/files.clj diff --git a/CHANGES.md b/CHANGES.md index 157fa194c..5416b7d5d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -69,6 +69,7 @@ - Fix unexpected exception and behavior on colorpicker with gradients [Taiga #3448](https://tree.taiga.io/project/penpot/issue/3448) - Fix multiselection with shift not working inside a library group [Taiga #3532](https://tree.taiga.io/project/penpot/issue/3532) - Fix drag and drop graphic assets in groups [Taiga #4002](https://tree.taiga.io/project/penpot/issue/4002) +- Fix bringing complete file data when launching the export dialog [Taiga #4006](https://tree.taiga.io/project/penpot/issue/4006) diff --git a/backend/src/app/http/middleware.clj b/backend/src/app/http/middleware.clj index 626f5a375..95c3a6b17 100644 --- a/backend/src/app/http/middleware.clj +++ b/backend/src/app/http/middleware.clj @@ -115,7 +115,7 @@ (format-response [response request] (let [body (yrs/body response)] - (if (coll? body) + (if (or (boolean? body) (coll? body)) (let [qs (yrq/query request) opts (if (or (contains? cf/flags :transit-readable-response) (str/includes? qs "transit_verbose")) diff --git a/backend/src/app/rpc.clj b/backend/src/app/rpc.clj index 66ffacc52..0f1e61abe 100644 --- a/backend/src/app/rpc.clj +++ b/backend/src/app/rpc.clj @@ -243,7 +243,8 @@ 'app.rpc.commands.comments 'app.rpc.commands.auth 'app.rpc.commands.ldap - 'app.rpc.commands.demo) + 'app.rpc.commands.demo + 'app.rpc.commands.files) (map (partial process-method cfg)) (into {})))) diff --git a/backend/src/app/rpc/commands/files.clj b/backend/src/app/rpc/commands/files.clj new file mode 100644 index 000000000..5231b1a47 --- /dev/null +++ b/backend/src/app/rpc/commands/files.clj @@ -0,0 +1,50 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) UXBOX Labs SL + +(ns app.rpc.commands.files + (:require + [app.common.spec :as us] + [app.db :as db] + [app.rpc.doc :as-alias doc] + [app.rpc.queries.files :as files] + [app.util.services :as sv] + [clojure.spec.alpha :as s])) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; QUERY COMMANDS +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; --- Query: File Libraries used by a File + +(declare retrieve-has-file-libraries) + +(s/def ::file-id ::us/uuid) +(s/def ::profile-id ::us/uuid) + +(s/def ::has-file-libraries + (s/keys :req-un [::profile-id ::file-id])) + +(sv/defmethod ::has-file-libraries + "Checks if the file has libraries. Returns a boolean" + {::doc/added "1.15.1"} + [{:keys [pool] :as cfg} {:keys [profile-id file-id] :as params}] + (with-open [conn (db/open pool)] + (files/check-read-permissions! pool profile-id file-id) + (retrieve-has-file-libraries conn params))) + +(def ^:private sql:has-file-libraries + "SELECT COUNT(*) > 0 AS has_libraries + FROM file_library_rel AS flr + JOIN file AS fl ON (flr.library_file_id = fl.id) + WHERE flr.file_id = ?::uuid + AND (fl.deleted_at IS NULL OR + fl.deleted_at > now())") + +(defn- retrieve-has-file-libraries + [conn {:keys [file-id]}] + (let [row (db/exec-one! conn [sql:has-file-libraries file-id])] + (:has-libraries row))) + diff --git a/frontend/src/app/main/ui/dashboard/file_menu.cljs b/frontend/src/app/main/ui/dashboard/file_menu.cljs index 7903f591a..0ca0b535f 100644 --- a/frontend/src/app/main/ui/dashboard/file_menu.cljs +++ b/frontend/src/app/main/ui/dashboard/file_menu.cljs @@ -6,7 +6,6 @@ (ns app.main.ui.dashboard.file-menu (:require - [app.common.data :as d] [app.main.data.dashboard :as dd] [app.main.data.events :as ev] [app.main.data.messages :as dm] @@ -166,8 +165,8 @@ (->> (rx/from files) (rx/flat-map (fn [file] - (->> (rp/query :file-libraries {:file-id (:id file)}) - (rx/map #(assoc file :has-libraries? (d/not-empty? %)))))) + (->> (rp/command :has-file-libraries {:file-id (:id file)}) + (rx/map #(assoc file :has-libraries? %))))) (rx/reduce conj []) (rx/subs (fn [files] diff --git a/frontend/src/app/main/ui/workspace/header.cljs b/frontend/src/app/main/ui/workspace/header.cljs index 5f93e4def..bd1228255 100644 --- a/frontend/src/app/main/ui/workspace/header.cljs +++ b/frontend/src/app/main/ui/workspace/header.cljs @@ -6,7 +6,6 @@ (ns app.main.ui.workspace.header (:require - [app.common.data :as d] [app.config :as cf] [app.main.data.events :as ev] [app.main.data.exports :as de] @@ -32,7 +31,6 @@ [potok.core :as ptk] [rumext.alpha :as mf])) - (def workspace-persistence-ref (l/derived :workspace-persistence st/state)) @@ -168,8 +166,8 @@ (->> (rx/of file) (rx/flat-map (fn [file] - (->> (rp/query :file-libraries {:file-id (:id file)}) - (rx/map #(assoc file :has-libraries? (d/not-empty? %)))))) + (->> (rp/command :has-file-libraries {:file-id (:id file)}) + (rx/map #(assoc file :has-libraries? %))))) (rx/reduce conj []) (rx/subs (fn [files] @@ -341,7 +339,7 @@ (if (contains? layout :textpalette) (tr "workspace.header.menu.hide-textpalette") (tr "workspace.header.menu.show-textpalette"))] - [:span.shortcut (sc/get-tooltip :toggle-textpalette)]] + [:span.shortcut (sc/get-tooltip :toggle-textpalette)]] [:li {:on-click #(st/emit! (toggle-flag :display-artboard-names))} [:span