From f22383176685ec840df67bc939a88c249296c797 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 22 Aug 2025 08:42:53 +0200 Subject: [PATCH] :sparkles: Refresh subscription info when member role is updated --- frontend/src/app/main/data/team.cljs | 18 ++++++----- frontend/src/app/main/ui/dashboard/team.cljs | 34 ++++++++++---------- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/frontend/src/app/main/data/team.cljs b/frontend/src/app/main/data/team.cljs index e98dddca3a..3b63bdd5af 100644 --- a/frontend/src/app/main/data/team.cljs +++ b/frontend/src/app/main/data/team.cljs @@ -16,6 +16,7 @@ [app.config :as cf] [app.main.data.event :as ev] [app.main.data.media :as di] + [app.main.data.profile :as dp] [app.main.features :as features] [app.main.repo :as rp] [app.main.router :as rt] @@ -142,8 +143,9 @@ (defn update-member-role [{:keys [role member-id] :as params}] - (dm/assert! (uuid? member-id)) - (dm/assert! (contains? ctt/valid-roles role)) + + (assert (uuid? member-id)) + (assert (contains? ctt/valid-roles role)) (ptk/reify ::update-member-role ptk/WatchEvent @@ -152,13 +154,13 @@ params (assoc params :team-id team-id)] (->> (rp/cmd! :update-team-member-role params) (rx/mapcat (fn [_] - (rx/of (fetch-members team-id) + (rx/of (dp/refresh-profile) + (fetch-members team-id) (fetch-teams) - (ptk/data-event ::ev/event - {::ev/name "update-team-member-role" - :team-id team-id - :role role - :member-id member-id}))))))))) + (ev/event {::ev/name "update-team-member-role" + :team-id team-id + :role role + :member-id member-id}))))))))) (defn delete-member [{:keys [member-id] :as params}] diff --git a/frontend/src/app/main/ui/dashboard/team.cljs b/frontend/src/app/main/ui/dashboard/team.cljs index b279bb8c66..fbfafefd4d 100644 --- a/frontend/src/app/main/ui/dashboard/team.cljs +++ b/frontend/src/app/main/ui/dashboard/team.cljs @@ -266,8 +266,7 @@ [:span {:class (stl/css :you)} (tr "labels.you")])] [:div {:class (stl/css :member-email)} (:email member)]]])) -(mf/defc rol-info - {::mf/props :obj} +(mf/defc rol-info* [{:keys [member team on-set-admin on-set-editor on-set-owner on-set-viewer profile]}] (let [member-is-owner (:is-owner member) member-is-admin (and (:is-admin member) (not member-is-owner)) @@ -282,13 +281,15 @@ is-you (= (:id profile) (:id member)) can-change-rol (or is-owner is-admin) - not-superior (or (and (not member-is-owner) is-admin) (and can-change-rol (or member-is-admin member-is-editor member-is-viewer))) + not-superior (or (and (not member-is-owner) is-admin) + (and can-change-rol (or member-is-admin member-is-editor member-is-viewer))) role (cond member-is-owner "labels.owner" member-is-admin "labels.admin" member-is-editor "labels.editor" :else "labels.viewer") + on-show (mf/use-fn #(reset! show? true)) on-hide (mf/use-fn #(reset! show? false))] [:* @@ -320,8 +321,7 @@ :class (stl/css :rol-dropdown-item)} (tr "labels.owner")])]]])) -(mf/defc member-actions - {::mf/props :obj} +(mf/defc member-actions* [{:keys [member team on-delete on-leave profile]}] (let [is-owner? (:is-owner member) owner? (dm/get-in team [:permissions :is-owner]) @@ -470,20 +470,20 @@ [:& member-info {:member member :profile profile}]] [:div {:class (stl/css :table-field :field-roles)} - [:& rol-info {:member member - :team team - :on-set-admin on-set-admin - :on-set-editor on-set-editor - :on-set-viewer on-set-viewer - :on-set-owner on-set-owner - :profile profile}]] + [:> rol-info* {:member member + :team team + :on-set-admin on-set-admin + :on-set-editor on-set-editor + :on-set-viewer on-set-viewer + :on-set-owner on-set-owner + :profile profile}]] [:div {:class (stl/css :table-field :field-actions)} - [:& member-actions {:member member - :profile profile - :team team - :on-delete on-delete - :on-leave on-leave'}]]])) + [:> member-actions* {:member member + :profile profile + :team team + :on-delete on-delete + :on-leave on-leave'}]]])) (mf/defc team-members* {::mf/props :obj