Refresh subscription info when member role is updated

This commit is contained in:
Andrey Antukh 2025-08-22 08:42:53 +02:00
parent 854f286364
commit f223831766
2 changed files with 27 additions and 25 deletions

View File

@ -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}]

View File

@ -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