diff --git a/backend/src/app/rpc.clj b/backend/src/app/rpc.clj index 2e06aa942..53dda5bdb 100644 --- a/backend/src/app/rpc.clj +++ b/backend/src/app/rpc.clj @@ -339,6 +339,7 @@ 'app.rpc.commands.management 'app.rpc.commands.media 'app.rpc.commands.profile + 'app.rpc.commands.projects 'app.rpc.commands.search 'app.rpc.commands.teams 'app.rpc.commands.verify-token @@ -356,8 +357,7 @@ ::sto/storage ::mtx/metrics ::main/props - ::wrk/executor - ] + ::wrk/executor] :opt [::climit ::rlimit] :req-un [::db/pool])) diff --git a/backend/src/app/rpc/commands/binfile.clj b/backend/src/app/rpc/commands/binfile.clj index f521be1a9..10385915e 100644 --- a/backend/src/app/rpc/commands/binfile.clj +++ b/backend/src/app/rpc/commands/binfile.clj @@ -21,9 +21,9 @@ [app.media :as media] [app.rpc :as-alias rpc] [app.rpc.commands.files :as files] + [app.rpc.commands.projects :as projects] [app.rpc.doc :as-alias doc] [app.rpc.helpers :as rph] - [app.rpc.queries.projects :as projects] [app.storage :as sto] [app.storage.tmp :as tmp] [app.tasks.file-gc] diff --git a/backend/src/app/rpc/commands/files.clj b/backend/src/app/rpc/commands/files.clj index 25688cd08..a7067ee1c 100644 --- a/backend/src/app/rpc/commands/files.clj +++ b/backend/src/app/rpc/commands/files.clj @@ -22,12 +22,12 @@ [app.loggers.webhooks :as-alias webhooks] [app.rpc :as-alias rpc] [app.rpc.commands.files.thumbnails :as-alias thumbs] + [app.rpc.commands.projects :as projects] [app.rpc.commands.teams :as teams] [app.rpc.cond :as-alias cond] [app.rpc.doc :as-alias doc] [app.rpc.helpers :as rph] [app.rpc.permissions :as perms] - [app.rpc.queries.projects :as projects] [app.rpc.queries.share-link :refer [retrieve-share-link]] [app.util.blob :as blob] [app.util.pointer-map :as pmap] diff --git a/backend/src/app/rpc/commands/files_create.clj b/backend/src/app/rpc/commands/files_create.clj index 19bef5768..c6e904672 100644 --- a/backend/src/app/rpc/commands/files_create.clj +++ b/backend/src/app/rpc/commands/files_create.clj @@ -15,9 +15,9 @@ [app.loggers.webhooks :as-alias webhooks] [app.rpc :as-alias rpc] [app.rpc.commands.files :as files] + [app.rpc.commands.projects :as projects] [app.rpc.doc :as-alias doc] [app.rpc.permissions :as perms] - [app.rpc.queries.projects :as proj] [app.rpc.quotes :as quotes] [app.util.blob :as blob] [app.util.objects-map :as omap] @@ -82,7 +82,7 @@ ::webhooks/event? true} [{:keys [pool] :as cfg} {:keys [::rpc/profile-id project-id] :as params}] (db/with-atomic [conn pool] - (proj/check-edition-permissions! conn profile-id project-id) + (projects/check-edition-permissions! conn profile-id project-id) (let [team-id (files/get-team-id conn project-id) params (assoc params :profile-id profile-id)] diff --git a/backend/src/app/rpc/commands/files_temp.clj b/backend/src/app/rpc/commands/files_temp.clj index 78fabfd04..ed3405d17 100644 --- a/backend/src/app/rpc/commands/files_temp.clj +++ b/backend/src/app/rpc/commands/files_temp.clj @@ -15,8 +15,8 @@ [app.rpc.commands.files :as files] [app.rpc.commands.files-create :refer [create-file]] [app.rpc.commands.files-update :as-alias files.update] + [app.rpc.commands.projects :as projects] [app.rpc.doc :as-alias doc] - [app.rpc.queries.projects :as proj] [app.util.blob :as blob] [app.util.services :as sv] [app.util.time :as dt] @@ -39,7 +39,7 @@ {::doc/added "1.17"} [{:keys [pool] :as cfg} {:keys [::rpc/profile-id project-id] :as params}] (db/with-atomic [conn pool] - (proj/check-edition-permissions! conn profile-id project-id) + (projects/check-edition-permissions! conn profile-id project-id) (create-file conn (assoc params :profile-id profile-id :deleted-at (dt/in-future {:days 1}))))) ;; --- MUTATION COMMAND: update-temp-file diff --git a/backend/src/app/rpc/commands/management.clj b/backend/src/app/rpc/commands/management.clj index 2337ff844..e0ed3d2d6 100644 --- a/backend/src/app/rpc/commands/management.clj +++ b/backend/src/app/rpc/commands/management.clj @@ -17,9 +17,9 @@ [app.rpc :as-alias rpc] [app.rpc.commands.binfile :as binfile] [app.rpc.commands.files :as files] + [app.rpc.commands.projects :as proj] [app.rpc.commands.teams :as teams :refer [create-project-role create-project]] [app.rpc.doc :as-alias doc] - [app.rpc.queries.projects :as proj] [app.util.blob :as blob] [app.util.pointer-map :as pmap] [app.util.services :as sv] diff --git a/backend/src/app/rpc/commands/projects.clj b/backend/src/app/rpc/commands/projects.clj new file mode 100644 index 000000000..518aec84a --- /dev/null +++ b/backend/src/app/rpc/commands/projects.clj @@ -0,0 +1,268 @@ +;; 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) KALEIDOS INC + +(ns app.rpc.commands.projects + (:require + [app.common.spec :as us] + [app.db :as db] + [app.loggers.audit :as-alias audit] + [app.loggers.webhooks :as webhooks] + [app.rpc :as-alias rpc] + [app.rpc.commands.teams :as teams] + [app.rpc.doc :as-alias doc] + [app.rpc.helpers :as rph] + [app.rpc.permissions :as perms] + [app.rpc.quotes :as quotes] + [app.util.services :as sv] + [app.util.time :as dt] + [clojure.spec.alpha :as s])) + +(s/def ::id ::us/uuid) +(s/def ::name ::us/string) + +;; --- Check Project Permissions + +(def ^:private sql:project-permissions + "select tpr.is_owner, + tpr.is_admin, + tpr.can_edit + from team_profile_rel as tpr + inner join project as p on (p.team_id = tpr.team_id) + where p.id = ? + and tpr.profile_id = ? + union all + select ppr.is_owner, + ppr.is_admin, + ppr.can_edit + from project_profile_rel as ppr + where ppr.project_id = ? + and ppr.profile_id = ?") + +(defn- get-permissions + [conn profile-id project-id] + (let [rows (db/exec! conn [sql:project-permissions + project-id profile-id + project-id profile-id]) + is-owner (boolean (some :is-owner rows)) + is-admin (boolean (some :is-admin rows)) + can-edit (boolean (some :can-edit rows))] + (when (seq rows) + {:is-owner is-owner + :is-admin (or is-owner is-admin) + :can-edit (or is-owner is-admin can-edit) + :can-read true}))) + +(def has-edit-permissions? + (perms/make-edition-predicate-fn get-permissions)) + +(def has-read-permissions? + (perms/make-read-predicate-fn get-permissions)) + +(def check-edition-permissions! + (perms/make-check-fn has-edit-permissions?)) + +(def check-read-permissions! + (perms/make-check-fn has-read-permissions?)) + +;; --- QUERY: Get projects + +(declare get-projects) + +(s/def ::team-id ::us/uuid) +(s/def ::get-projects + (s/keys :req [::rpc/profile-id] + :req-un [::team-id])) + +(sv/defmethod ::get-projects + {::doc/added "1.18"} + [{:keys [::db/pool]} {:keys [::rpc/profile-id team-id]}] + (with-open [conn (db/open pool)] + (teams/check-read-permissions! conn profile-id team-id) + (get-projects conn profile-id team-id))) + +(def sql:projects + "select p.*, + coalesce(tpp.is_pinned, false) as is_pinned, + (select count(*) from file as f + where f.project_id = p.id + and deleted_at is null) as count + from project as p + inner join team as t on (t.id = p.team_id) + left join team_project_profile_rel as tpp + on (tpp.project_id = p.id and + tpp.team_id = p.team_id and + tpp.profile_id = ?) + where p.team_id = ? + and p.deleted_at is null + and t.deleted_at is null + order by p.modified_at desc") + +(defn get-projects + [conn profile-id team-id] + (db/exec! conn [sql:projects profile-id team-id])) + +;; --- QUERY: Get all projects + +(declare get-all-projects) + +(s/def ::get-all-projects + (s/keys :req [::rpc/profile-id])) + +(sv/defmethod ::get-all-projects + {::doc/added "1.18"} + [{:keys [::db/pool]} {:keys [::rpc/profile-id]}] + (with-open [conn (db/open pool)] + (get-all-projects conn profile-id))) + +(def sql:all-projects + "select p1.*, t.name as team_name, t.is_default as is_default_team + from project as p1 + inner join team as t on (t.id = p1.team_id) + where t.id in (select team_id + from team_profile_rel as tpr + where tpr.profile_id = ? + and (tpr.can_edit = true or + tpr.is_owner = true or + tpr.is_admin = true)) + and t.deleted_at is null + and p1.deleted_at is null + union + select p2.*, t.name as team_name, t.is_default as is_default_team + from project as p2 + inner join team as t on (t.id = p2.team_id) + where p2.id in (select project_id + from project_profile_rel as ppr + where ppr.profile_id = ? + and (ppr.can_edit = true or + ppr.is_owner = true or + ppr.is_admin = true)) + and t.deleted_at is null + and p2.deleted_at is null + order by team_name, name;") + +(defn get-all-projects + [conn profile-id] + (db/exec! conn [sql:all-projects profile-id profile-id])) + + +;; --- QUERY: Get project + +(s/def ::get-project + (s/keys :req [::rpc/profile-id] + :req-un [::id])) + +(sv/defmethod ::get-project + {::doc/added "1.18"} + [{:keys [::db/pool]} {:keys [::rpc/profile-id id]}] + (with-open [conn (db/open pool)] + (let [project (db/get-by-id conn :project id)] + (check-read-permissions! conn profile-id id) + project))) + + + +;; --- MUTATION: Create Project + +(s/def ::create-project + (s/keys :req [::rpc/profile-id] + :req-un [::team-id ::name] + :opt-un [::id])) + +(sv/defmethod ::create-project + {::doc/added "1.18" + ::webhooks/event? true} + [{:keys [pool] :as cfg} {:keys [::rpc/profile-id team-id] :as params}] + (db/with-atomic [conn pool] + (teams/check-edition-permissions! conn profile-id team-id) + (quotes/check-quote! conn {::quotes/id ::quotes/projects-per-team + ::quotes/profile-id profile-id + ::quotes/team-id team-id}) + + (let [params (assoc params :profile-id profile-id) + project (teams/create-project conn params)] + (teams/create-project-role conn profile-id (:id project) :owner) + (db/insert! conn :team-project-profile-rel + {:project-id (:id project) + :profile-id profile-id + :team-id team-id + :is-pinned true}) + (assoc project :is-pinned true)))) + + +;; --- MUTATION: Toggle Project Pin + +(def ^:private + sql:update-project-pin + "insert into team_project_profile_rel (team_id, project_id, profile_id, is_pinned) + values (?, ?, ?, ?) + on conflict (team_id, project_id, profile_id) + do update set is_pinned=?") + +(s/def ::is-pinned ::us/boolean) +(s/def ::project-id ::us/uuid) +(s/def ::update-project-pin + (s/keys :req [::rpc/profile-id] + :req-un [::id ::team-id ::is-pinned])) + +(sv/defmethod ::update-project-pin + {::doc/added "1.18" + ::webhooks/batch-timeout (dt/duration "5s") + ::webhooks/batch-key (webhooks/key-fn ::rpc/profile-id :id) + ::webhooks/event? true} + [{:keys [pool] :as cfg} {:keys [::rpc/profile-id id team-id is-pinned] :as params}] + (db/with-atomic [conn pool] + (check-edition-permissions! conn profile-id id) + (db/exec-one! conn [sql:update-project-pin team-id id profile-id is-pinned is-pinned]) + nil)) + +;; --- MUTATION: Rename Project + +(declare rename-project) + +(s/def ::rename-project + (s/keys :req [::rpc/profile-id] + :req-un [::name ::id])) + +(sv/defmethod ::rename-project + {::doc/added "1.18" + ::webhooks/event? true} + [{:keys [pool] :as cfg} {:keys [::rpc/profile-id id name] :as params}] + (db/with-atomic [conn pool] + (check-edition-permissions! conn profile-id id) + (let [project (db/get-by-id conn :project id ::db/for-update? true)] + (db/update! conn :project + {:name name} + {:id id}) + (rph/with-meta (rph/wrap) + {::audit/props {:team-id (:team-id project) + :prev-name (:name project)}})))) + +;; --- MUTATION: Delete Project + +(s/def ::delete-project + (s/keys :req [::rpc/profile-id] + :req-un [::id])) + +;; TODO: right now, we just don't allow delete default projects, in a +;; future we need to ensure raise a correct exception signaling that +;; this is not allowed. + +(sv/defmethod ::delete-project + {::doc/added "1.18" + ::webhooks/event? true} + [{:keys [pool] :as cfg} {:keys [::rpc/profile-id id] :as params}] + (db/with-atomic [conn pool] + (check-edition-permissions! conn profile-id id) + (let [project (db/update! conn :project + {:deleted-at (dt/now)} + {:id id :is-default false})] + (rph/with-meta (rph/wrap) + {::audit/props {:team-id (:team-id project) + :name (:name project) + :created-at (:created-at project) + :modified-at (:modified-at project)}})))) + + diff --git a/backend/src/app/rpc/mutations/projects.clj b/backend/src/app/rpc/mutations/projects.clj index 1a49d4fc1..a400b9b6d 100644 --- a/backend/src/app/rpc/mutations/projects.clj +++ b/backend/src/app/rpc/mutations/projects.clj @@ -10,10 +10,10 @@ [app.db :as db] [app.loggers.audit :as-alias audit] [app.loggers.webhooks :as-alias webhooks] + [app.rpc.commands.projects :as projects] [app.rpc.commands.teams :as teams] [app.rpc.doc :as-alias doc] [app.rpc.helpers :as rph] - [app.rpc.queries.projects :as proj] [app.rpc.quotes :as quotes] [app.util.services :as sv] [app.util.time :as dt] @@ -34,6 +34,7 @@ (sv/defmethod ::create-project {::doc/added "1.0" + ::doc/deprecated "1.18" ::webhooks/event? true} [{:keys [pool] :as cfg} {:keys [profile-id team-id] :as params}] (db/with-atomic [conn pool] @@ -70,12 +71,13 @@ (sv/defmethod ::update-project-pin {::doc/added "1.0" + ::doc/deprecated "1.18" ::webhooks/batch-timeout (dt/duration "5s") ::webhooks/batch-key :id ::webhooks/event? true} [{:keys [pool] :as cfg} {:keys [id profile-id team-id is-pinned] :as params}] (db/with-atomic [conn pool] - (proj/check-edition-permissions! conn profile-id id) + (projects/check-edition-permissions! conn profile-id id) (db/exec-one! conn [sql:update-project-pin team-id id profile-id is-pinned is-pinned]) nil)) @@ -88,10 +90,11 @@ (sv/defmethod ::rename-project {::doc/added "1.0" + ::doc/deprecated "1.18" ::webhooks/event? true} [{:keys [pool] :as cfg} {:keys [id profile-id name] :as params}] (db/with-atomic [conn pool] - (proj/check-edition-permissions! conn profile-id id) + (projects/check-edition-permissions! conn profile-id id) (let [project (db/get-by-id conn :project id)] (db/update! conn :project {:name name} @@ -112,10 +115,11 @@ (sv/defmethod ::delete-project {::doc/added "1.0" + ::doc/deprecated "1.18" ::webhooks/event? true} [{:keys [pool] :as cfg} {:keys [id profile-id] :as params}] (db/with-atomic [conn pool] - (proj/check-edition-permissions! conn profile-id id) + (projects/check-edition-permissions! conn profile-id id) (let [project (db/update! conn :project {:deleted-at (dt/now)} {:id id :is-default false})] diff --git a/backend/src/app/rpc/queries/fonts.clj b/backend/src/app/rpc/queries/fonts.clj index 6c9623c54..b6c96c59a 100644 --- a/backend/src/app/rpc/queries/fonts.clj +++ b/backend/src/app/rpc/queries/fonts.clj @@ -9,9 +9,9 @@ [app.common.spec :as us] [app.db :as db] [app.rpc.commands.files :as files] + [app.rpc.commands.projects :as projects] [app.rpc.commands.teams :as teams] [app.rpc.doc :as-alias doc] - [app.rpc.queries.projects :as projects] [app.util.services :as sv] [clojure.spec.alpha :as s])) diff --git a/backend/src/app/rpc/queries/projects.clj b/backend/src/app/rpc/queries/projects.clj index 64c4a9b42..4329c13cb 100644 --- a/backend/src/app/rpc/queries/projects.clj +++ b/backend/src/app/rpc/queries/projects.clj @@ -8,135 +8,39 @@ (:require [app.common.spec :as us] [app.db :as db] + [app.rpc.commands.projects :as projects] [app.rpc.commands.teams :as teams] - [app.rpc.permissions :as perms] + [app.rpc.doc :as-alias doc] [app.util.services :as sv] [clojure.spec.alpha :as s])) -;; --- Check Project Permissions - -(def ^:private sql:project-permissions - "select tpr.is_owner, - tpr.is_admin, - tpr.can_edit - from team_profile_rel as tpr - inner join project as p on (p.team_id = tpr.team_id) - where p.id = ? - and tpr.profile_id = ? - union all - select ppr.is_owner, - ppr.is_admin, - ppr.can_edit - from project_profile_rel as ppr - where ppr.project_id = ? - and ppr.profile_id = ?") - -(defn- get-permissions - [conn profile-id project-id] - (let [rows (db/exec! conn [sql:project-permissions - project-id profile-id - project-id profile-id]) - is-owner (boolean (some :is-owner rows)) - is-admin (boolean (some :is-admin rows)) - can-edit (boolean (some :can-edit rows))] - (when (seq rows) - {:is-owner is-owner - :is-admin (or is-owner is-admin) - :can-edit (or is-owner is-admin can-edit) - :can-read true}))) - -(def has-edit-permissions? - (perms/make-edition-predicate-fn get-permissions)) - -(def has-read-permissions? - (perms/make-read-predicate-fn get-permissions)) - -(def check-edition-permissions! - (perms/make-check-fn has-edit-permissions?)) - -(def check-read-permissions! - (perms/make-check-fn has-read-permissions?)) - ;; --- Query: Projects -(declare retrieve-projects) - (s/def ::team-id ::us/uuid) (s/def ::profile-id ::us/uuid) (s/def ::projects (s/keys :req-un [::profile-id ::team-id])) (sv/defmethod ::projects + {::doc/added "1.0" + ::doc/deprecated "1.18"} [{:keys [pool]} {:keys [profile-id team-id]}] (with-open [conn (db/open pool)] (teams/check-read-permissions! conn profile-id team-id) - (retrieve-projects conn profile-id team-id))) - -(def sql:projects - "select p.*, - coalesce(tpp.is_pinned, false) as is_pinned, - (select count(*) from file as f - where f.project_id = p.id - and deleted_at is null) as count - from project as p - inner join team as t on (t.id = p.team_id) - left join team_project_profile_rel as tpp - on (tpp.project_id = p.id and - tpp.team_id = p.team_id and - tpp.profile_id = ?) - where p.team_id = ? - and p.deleted_at is null - and t.deleted_at is null - order by p.modified_at desc") - -(defn retrieve-projects - [conn profile-id team-id] - (db/exec! conn [sql:projects profile-id team-id])) - + (projects/get-projects conn profile-id team-id))) ;; --- Query: All projects -(declare retrieve-all-projects) - (s/def ::profile-id ::us/uuid) (s/def ::all-projects (s/keys :req-un [::profile-id])) (sv/defmethod ::all-projects + {::doc/added "1.0" + ::doc/deprecated "1.18"} [{:keys [pool]} {:keys [profile-id]}] (with-open [conn (db/open pool)] - (retrieve-all-projects conn profile-id))) - -(def sql:all-projects - "select p1.*, t.name as team_name, t.is_default as is_default_team - from project as p1 - inner join team as t on (t.id = p1.team_id) - where t.id in (select team_id - from team_profile_rel as tpr - where tpr.profile_id = ? - and (tpr.can_edit = true or - tpr.is_owner = true or - tpr.is_admin = true)) - and t.deleted_at is null - and p1.deleted_at is null - union - select p2.*, t.name as team_name, t.is_default as is_default_team - from project as p2 - inner join team as t on (t.id = p2.team_id) - where p2.id in (select project_id - from project_profile_rel as ppr - where ppr.profile_id = ? - and (ppr.can_edit = true or - ppr.is_owner = true or - ppr.is_admin = true)) - and t.deleted_at is null - and p2.deleted_at is null - order by team_name, name;") - -(defn retrieve-all-projects - [conn profile-id] - (db/exec! conn [sql:all-projects profile-id profile-id])) - + (projects/get-all-projects conn profile-id))) ;; --- Query: Project @@ -145,9 +49,11 @@ (s/keys :req-un [::profile-id ::id])) (sv/defmethod ::project + {::doc/added "1.0" + ::doc/deprecated "1.18"} [{:keys [pool]} {:keys [profile-id id]}] (with-open [conn (db/open pool)] (let [project (db/get-by-id conn :project id)] - (check-read-permissions! conn profile-id id) + (projects/check-read-permissions! conn profile-id id) project))) diff --git a/backend/test/backend_tests/rpc_font_test.clj b/backend/test/backend_tests/rpc_font_test.clj index bf27cba90..d1c3bdd60 100644 --- a/backend/test/backend_tests/rpc_font_test.clj +++ b/backend/test/backend_tests/rpc_font_test.clj @@ -9,6 +9,7 @@ [app.common.uuid :as uuid] [app.db :as db] [app.http :as http] + [app.rpc :as-alias rpc] [app.storage :as sto] [backend-tests.helpers :as th] [clojure.test :as t] @@ -31,14 +32,14 @@ io/read-as-bytes) params {::th/type :create-font-variant - :profile-id (:id prof) + ::rpc/profile-id (:id prof) :team-id team-id :font-id font-id :font-family "somefont" :font-weight 400 :font-style "normal" :data {"font/ttf" ttfdata}} - out (th/mutation! params)] + out (th/command! params)] (t/is (= 1 (:call-count @mock))) @@ -68,14 +69,14 @@ io/read-as-bytes) params {::th/type :create-font-variant - :profile-id (:id prof) + ::rpc/profile-id (:id prof) :team-id team-id :font-id font-id :font-family "somefont" :font-weight 400 :font-style "normal" :data {"font/woff" data}} - out (th/mutation! params)] + out (th/command! params)] ;; (th/print-result! out) (t/is (nil? (:error out))) @@ -91,8 +92,3 @@ :font-family :font-weight :font-style)))) - - - - - diff --git a/frontend/src/app/main/data/dashboard.cljs b/frontend/src/app/main/data/dashboard.cljs index 8e84b6a21..317d5a1d9 100644 --- a/frontend/src/app/main/data/dashboard.cljs +++ b/frontend/src/app/main/data/dashboard.cljs @@ -185,7 +185,7 @@ ptk/WatchEvent (watch [_ state _] (let [team-id (:current-team-id state)] - (->> (rp/query! :projects {:team-id team-id}) + (->> (rp/cmd! :get-projects {:team-id team-id}) (rx/map projects-fetched)))))) ;; --- EVENT: search @@ -671,7 +671,7 @@ {:keys [on-success on-error] :or {on-success identity on-error rx/throw}} (meta params)] - (->> (rp/mutation! :create-project params) + (->> (rp/cmd! :create-project params) (rx/tap on-success) (rx/map project-created) (rx/catch on-error)))))) @@ -733,7 +733,7 @@ (watch [_ state _] (let [project (get-in state [:dashboard-projects id]) params (select-keys project [:id :is-pinned :team-id])] - (->> (rp/mutation :update-project-pin params) + (->> (rp/cmd! :update-project-pin params) (rx/ignore)))))) ;; --- EVENT: rename-project @@ -751,7 +751,7 @@ ptk/WatchEvent (watch [_ _ _] (let [params {:id id :name name}] - (->> (rp/mutation :rename-project params) + (->> (rp/cmd! :rename-project params) (rx/ignore)))))) ;; --- EVENT: delete-project @@ -766,7 +766,7 @@ ptk/WatchEvent (watch [_ _ _] - (->> (rp/mutation :delete-project {:id id}) + (->> (rp/cmd! :delete-project {:id id}) (rx/ignore))))) ;; --- EVENT: delete-file @@ -1077,7 +1077,7 @@ action-name (if in-project? :create-file :create-project) action (if in-project? file-created project-created)] - (->> (rp/mutation! action-name params) + (->> (rp/cmd! action-name params) (rx/map action)))))) (defn open-selected-file diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index ff5ba2a52..b63c27304 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -267,7 +267,7 @@ (->> (rx/zip (rp/cmd! :get-file {:id file-id :features features}) (rp/cmd! :get-file-object-thumbnails {:file-id file-id}) - (rp/query! :project {:id project-id}) + (rp/cmd! :get-project {:id project-id}) (rp/cmd! :get-team-users {:file-id file-id}) (rp/cmd! :get-profiles-for-file-comments {:file-id file-id :share-id share-id})) (rx/take 1) @@ -1564,7 +1564,7 @@ (into (d/ordered-set))) undo-id (js/Symbol)] - (rx/of (dwu/start-undo-transaction undo-id) + (rx/of (dwu/start-undo-transaction undo-id) (dch/commit-changes changes) (dws/select-shapes selected) (ptk/data-event :layout/update [frame-id]) diff --git a/frontend/src/app/main/ui/dashboard/file_menu.cljs b/frontend/src/app/main/ui/dashboard/file_menu.cljs index 70f068e06..ccda8cca2 100644 --- a/frontend/src/app/main/ui/dashboard/file_menu.cljs +++ b/frontend/src/app/main/ui/dashboard/file_menu.cljs @@ -207,7 +207,7 @@ (mf/deps show?) (fn [] (when show? - (->> (rp/query! :all-projects) + (->> (rp/cmd! :get-all-projects) (rx/map group-by-team) (rx/subs #(when (mf/ref-val mounted-ref) (reset! teams %)))))))