@@ -11,6 +11,7 @@ import {
1111 NamespacesMembersBulkInvitePayload ,
1212 NamespacesMembersDeleteInput ,
1313 NamespacesMembersDeletePayload ,
14+ NamespaceRole ,
1415 Query , User
1516} from "@code0-tech/sagittarius-graphql-types"
1617import { GraphqlClient } from "@core/util/graphql-client"
@@ -89,18 +90,39 @@ export class MemberService extends ReactiveArrayService<NamespaceMember, MemberD
8990 const currentMember = this . getById ( payload . memberId )
9091 const index = super . values ( ) . findIndex ( m => m . id === payload . memberId )
9192
93+ if ( currentMember && index >= 0 ) {
94+ const newMember : NamespaceMember = {
95+ ...currentMember ,
96+ roles : {
97+ ...currentMember . roles ,
98+ count : payload . roleIds . length ,
99+ nodes : payload . roleIds . map ( roleId => ( { id : roleId } ) )
100+ }
101+ }
102+
103+ this . set ( index , new View ( newMember ) )
104+ }
105+ }
106+
107+ return result . data ?. namespacesMembersAssignRoles ?? undefined
108+ }
109+
110+ removeRoleFromMembers ( roleId : NamespaceRole [ 'id' ] ) : void {
111+ super . values ( ) . forEach ( ( member , index ) => {
112+ if ( ! member ?. roles ?. nodes ?. some ( role => role ?. id === roleId ) ) return
113+
114+ const nodes = member . roles . nodes . filter ( role => role ?. id !== roleId )
92115 const newMember : NamespaceMember = {
93- ...currentMember ,
116+ ...member ,
94117 roles : {
95- count : payload . roleIds . length ,
96- nodes : payload . roleIds . map ( roleId => ( { id : roleId } ) )
118+ ...member . roles ,
119+ count : nodes . length ,
120+ nodes : nodes
97121 }
98122 }
99123
100124 this . set ( index , new View ( newMember ) )
101- }
102-
103- return result . data ?. namespacesMembersAssignRoles ?? undefined
125+ } )
104126 }
105127
106128 async memberDelete ( payload : NamespacesMembersDeleteInput ) : Promise < NamespacesMembersDeletePayload | undefined > {
0 commit comments