mirror of
https://github.com/penpot/penpot.git
synced 2025-01-24 07:29:08 -05:00
✨ Emit create-file action events on clone-template
This commit is contained in:
parent
d1e9ea372a
commit
8da153f604
1 changed files with 24 additions and 9 deletions
|
@ -16,6 +16,7 @@
|
||||||
[app.config :as cf]
|
[app.config :as cf]
|
||||||
[app.db :as db]
|
[app.db :as db]
|
||||||
[app.http.sse :as sse]
|
[app.http.sse :as sse]
|
||||||
|
[app.loggers.audit :as audit]
|
||||||
[app.loggers.webhooks :as-alias webhooks]
|
[app.loggers.webhooks :as-alias webhooks]
|
||||||
[app.rpc :as-alias rpc]
|
[app.rpc :as-alias rpc]
|
||||||
[app.rpc.commands.files :as files]
|
[app.rpc.commands.files :as files]
|
||||||
|
@ -397,17 +398,33 @@
|
||||||
;; --- COMMAND: Clone Template
|
;; --- COMMAND: Clone Template
|
||||||
|
|
||||||
(defn- clone-template
|
(defn- clone-template
|
||||||
[{:keys [::wrk/executor ::bf.v1/project-id] :as cfg} template]
|
[cfg {:keys [project-id ::rpc/profile-id ::rpc/external-session-id] :as params} template]
|
||||||
(db/tx-run! cfg (fn [{:keys [::db/conn] :as cfg}]
|
(db/tx-run! cfg (fn [{:keys [::db/conn ::wrk/executor] :as cfg}]
|
||||||
;; NOTE: the importation process performs some operations that
|
;; NOTE: the importation process performs some operations that
|
||||||
;; are not very friendly with virtual threads, and for avoid
|
;; are not very friendly with virtual threads, and for avoid
|
||||||
;; unexpected blocking of other concurrent operations we
|
;; unexpected blocking of other concurrent operations we
|
||||||
;; dispatch that operation to a dedicated executor.
|
;; dispatch that operation to a dedicated executor.
|
||||||
(let [result (px/submit! executor (partial bf.v1/import-files! cfg template))]
|
(let [cfg (-> cfg
|
||||||
|
(assoc ::bf.v1/project-id project-id)
|
||||||
|
(assoc ::bf.v1/profile-id profile-id))
|
||||||
|
result (px/invoke! executor (partial bf.v1/import-files! cfg template))]
|
||||||
|
|
||||||
(db/update! conn :project
|
(db/update! conn :project
|
||||||
{:modified-at (dt/now)}
|
{:modified-at (dt/now)}
|
||||||
{:id project-id})
|
{:id project-id})
|
||||||
(deref result)))))
|
|
||||||
|
(let [props (-> (audit/clean-props params)
|
||||||
|
(assoc :triggered-by "clone-template"))
|
||||||
|
context {:external-session-id external-session-id}]
|
||||||
|
(doseq [file-id result]
|
||||||
|
(audit/submit! cfg
|
||||||
|
{::audit/type "action"
|
||||||
|
::audit/name "create-file"
|
||||||
|
::audit/profile-id profile-id
|
||||||
|
::audit/props (assoc props :id file-id)
|
||||||
|
::audit/context context})))
|
||||||
|
|
||||||
|
result))))
|
||||||
|
|
||||||
(def ^:private
|
(def ^:private
|
||||||
schema:clone-template
|
schema:clone-template
|
||||||
|
@ -425,16 +442,14 @@
|
||||||
[{:keys [::db/pool] :as cfg} {:keys [::rpc/profile-id project-id template-id] :as params}]
|
[{:keys [::db/pool] :as cfg} {:keys [::rpc/profile-id project-id template-id] :as params}]
|
||||||
(let [project (db/get-by-id pool :project project-id {:columns [:id :team-id]})
|
(let [project (db/get-by-id pool :project project-id {:columns [:id :team-id]})
|
||||||
_ (teams/check-edition-permissions! pool profile-id (:team-id project))
|
_ (teams/check-edition-permissions! pool profile-id (:team-id project))
|
||||||
template (tmpl/get-template-stream cfg template-id)
|
template (tmpl/get-template-stream cfg template-id)]
|
||||||
params (-> cfg
|
|
||||||
(assoc ::bf.v1/project-id (:id project))
|
|
||||||
(assoc ::bf.v1/profile-id profile-id))]
|
|
||||||
(when-not template
|
(when-not template
|
||||||
(ex/raise :type :not-found
|
(ex/raise :type :not-found
|
||||||
:code :template-not-found
|
:code :template-not-found
|
||||||
:hint "template not found"))
|
:hint "template not found"))
|
||||||
|
|
||||||
(sse/response #(clone-template params template))))
|
(sse/response #(clone-template cfg params template))))
|
||||||
|
|
||||||
;; --- COMMAND: Get list of builtin templates
|
;; --- COMMAND: Get list of builtin templates
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue