mirror of
https://github.com/penpot/penpot.git
synced 2026-04-28 04:38:14 +00:00
✨ Refresh subscription info when member role is updated
This commit is contained in:
parent
854f286364
commit
f223831766
@ -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}]
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user