mirror of
https://github.com/penpot/penpot.git
synced 2025-05-22 22:26:11 +02:00
✨ Change frontend-only features automatic team assignation rules
The frontend-only features are now ignored from files and from teams and they do not autoassigns automatically to team and file on file creation or update operations.
This commit is contained in:
parent
0e99b37c21
commit
b7573c0b72
7 changed files with 29 additions and 16 deletions
|
@ -445,8 +445,11 @@
|
||||||
(fn [features]
|
(fn [features]
|
||||||
(let [features (cfeat/check-supported-features! features)]
|
(let [features (cfeat/check-supported-features! features)]
|
||||||
(-> (::features cfg #{})
|
(-> (::features cfg #{})
|
||||||
(set/difference cfeat/frontend-only-features)
|
(set/union features)
|
||||||
(set/union features))))))
|
;; We never want to store
|
||||||
|
;; frontend-only features on file
|
||||||
|
(set/difference cfeat/frontend-only-features))))))
|
||||||
|
|
||||||
|
|
||||||
_ (when (contains? cf/flags :file-schema-validation)
|
_ (when (contains? cf/flags :file-schema-validation)
|
||||||
(fval/validate-file-schema! file))
|
(fval/validate-file-schema! file))
|
||||||
|
|
|
@ -514,6 +514,7 @@
|
||||||
(if (set? features)
|
(if (set? features)
|
||||||
(-> features
|
(-> features
|
||||||
(cfeat/migrate-legacy-features)
|
(cfeat/migrate-legacy-features)
|
||||||
|
(set/difference cfeat/frontend-only-features)
|
||||||
(set/difference cfeat/backend-only-features))
|
(set/difference cfeat/backend-only-features))
|
||||||
#{}))))
|
#{}))))
|
||||||
|
|
||||||
|
|
|
@ -111,13 +111,15 @@
|
||||||
;; features, because some features can be enabled
|
;; features, because some features can be enabled
|
||||||
;; globally, but the team is still not migrated properly.
|
;; globally, but the team is still not migrated properly.
|
||||||
features (-> (cfeat/get-team-enabled-features cf/flags team)
|
features (-> (cfeat/get-team-enabled-features cf/flags team)
|
||||||
(cfeat/check-client-features! (:features params)))
|
(cfeat/check-client-features! (:features params))
|
||||||
|
(set/difference cfeat/frontend-only-features))
|
||||||
|
|
||||||
;; We also include all no migration features declared by
|
;; We also include all no migration features declared by
|
||||||
;; client; that enables the ability to enable a runtime
|
;; client; that enables the ability to enable a runtime
|
||||||
;; feature on frontend and make it permanent on file
|
;; feature on frontend and make it permanent on file
|
||||||
features (-> (:features params #{})
|
features (-> (:features params #{})
|
||||||
(set/intersection cfeat/no-migration-features)
|
(set/intersection cfeat/no-migration-features)
|
||||||
|
(set/difference cfeat/frontend-only-features)
|
||||||
(set/union features))
|
(set/union features))
|
||||||
|
|
||||||
params (-> params
|
params (-> params
|
||||||
|
|
|
@ -139,7 +139,8 @@
|
||||||
|
|
||||||
features (-> (cfeat/get-team-enabled-features cf/flags team)
|
features (-> (cfeat/get-team-enabled-features cf/flags team)
|
||||||
(cfeat/check-client-features! (:features params))
|
(cfeat/check-client-features! (:features params))
|
||||||
(cfeat/check-file-features! (:features file) (:features params)))
|
(cfeat/check-file-features! (:features file) (:features params))
|
||||||
|
(set/difference cfeat/frontend-only-features))
|
||||||
|
|
||||||
changes (if changes-with-metadata
|
changes (if changes-with-metadata
|
||||||
(->> changes-with-metadata (mapcat :changes) vec)
|
(->> changes-with-metadata (mapcat :changes) vec)
|
||||||
|
|
|
@ -30,7 +30,8 @@
|
||||||
[app.storage :as sto]
|
[app.storage :as sto]
|
||||||
[app.util.services :as sv]
|
[app.util.services :as sv]
|
||||||
[app.util.time :as dt]
|
[app.util.time :as dt]
|
||||||
[app.worker :as wrk]))
|
[app.worker :as wrk]
|
||||||
|
[clojure.set :as set]))
|
||||||
|
|
||||||
;; --- Helpers & Specs
|
;; --- Helpers & Specs
|
||||||
|
|
||||||
|
@ -416,6 +417,7 @@
|
||||||
::quotes/profile-id profile-id})
|
::quotes/profile-id profile-id})
|
||||||
|
|
||||||
(let [features (-> (cfeat/get-enabled-features cf/flags)
|
(let [features (-> (cfeat/get-enabled-features cf/flags)
|
||||||
|
(set/difference cfeat/frontend-only-features)
|
||||||
(cfeat/check-client-features! (:features params)))
|
(cfeat/check-client-features! (:features params)))
|
||||||
params (-> params
|
params (-> params
|
||||||
(assoc :profile-id profile-id)
|
(assoc :profile-id profile-id)
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
[app.util.i18n :as i18n]
|
[app.util.i18n :as i18n]
|
||||||
[app.util.theme :as theme]
|
[app.util.theme :as theme]
|
||||||
[beicon.v2.core :as rx]
|
[beicon.v2.core :as rx]
|
||||||
|
[cuerdas.core :as str]
|
||||||
[debug]
|
[debug]
|
||||||
[features]
|
[features]
|
||||||
[potok.v2.core :as ptk]
|
[potok.v2.core :as ptk]
|
||||||
|
@ -38,11 +39,11 @@
|
||||||
(log/setup! {:app :info})
|
(log/setup! {:app :info})
|
||||||
|
|
||||||
(when (= :browser cf/target)
|
(when (= :browser cf/target)
|
||||||
(log/info :message "Welcome to penpot"
|
(log/info :version (:full cf/version)
|
||||||
:version (:full cf/version)
|
|
||||||
:asserts *assert*
|
:asserts *assert*
|
||||||
:build-date cf/build-date
|
:build-date cf/build-date
|
||||||
:public-uri (dm/str cf/public-uri)))
|
:public-uri (dm/str cf/public-uri))
|
||||||
|
(log/info :flags (str/join "," (map name cf/flags))))
|
||||||
|
|
||||||
(declare reinit)
|
(declare reinit)
|
||||||
|
|
||||||
|
|
|
@ -33,10 +33,13 @@
|
||||||
|
|
||||||
(defn get-team-enabled-features
|
(defn get-team-enabled-features
|
||||||
[state]
|
[state]
|
||||||
(-> global-enabled-features
|
(let [runtime-features (:features-runtime state #{})
|
||||||
(set/union (:features-runtime state #{}))
|
team-features (->> (:features-team state #{})
|
||||||
(set/intersection cfeat/no-migration-features)
|
(into #{} cfeat/xf-remove-ephimeral))]
|
||||||
(set/union (:features-team state #{}))))
|
(-> global-enabled-features
|
||||||
|
(set/union runtime-features)
|
||||||
|
(set/intersection cfeat/no-migration-features)
|
||||||
|
(set/union team-features))))
|
||||||
|
|
||||||
(def features-ref
|
(def features-ref
|
||||||
(l/derived get-team-enabled-features st/state =))
|
(l/derived get-team-enabled-features st/state =))
|
||||||
|
@ -124,9 +127,9 @@
|
||||||
(let [features (get-team-enabled-features state)]
|
(let [features (get-team-enabled-features state)]
|
||||||
(if (contains? features "render-wasm/v1")
|
(if (contains? features "render-wasm/v1")
|
||||||
(render.wasm/initialize true)
|
(render.wasm/initialize true)
|
||||||
(render.wasm/initialize false)))
|
(render.wasm/initialize false))
|
||||||
|
|
||||||
(log/trc :hint "initialized features"
|
(log/inf :hint "initialized"
|
||||||
:team (str/join "," (:features-team state))
|
:enabled (str/join "," features)
|
||||||
:runtime (str/join "," (:features-runtime state)))))))
|
:runtime (str/join "," (:features-runtime state))))))))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue