@@ -108,11 +108,11 @@ qx.Class.define("osparc.store.Groups", {
108108 . then ( orgMembers => {
109109 const group = this . getOrganization ( groupId ) ;
110110 if ( group ) {
111+ // reset group's group members
111112 group . setGroupMembers ( { } ) ;
112113 orgMembers . forEach ( orgMember => {
113114 const user = new osparc . data . model . User ( orgMember ) ;
114- group . getGroupMembers ( ) [ orgMember [ "gid" ] ] = user ;
115- this . getReachableUsers ( ) [ orgMember [ "gid" ] ] = user ;
115+ this . __addToUsersCache ( user , groupId ) ;
116116 } ) ;
117117 }
118118 } ) ;
@@ -122,6 +122,7 @@ qx.Class.define("osparc.store.Groups", {
122122 return new Promise ( resolve => {
123123 this . __fetchGroups ( )
124124 . then ( orgs => {
125+ // reset Reachable Users
125126 this . resetReachableUsers ( ) ;
126127 const promises = Object . keys ( orgs ) . map ( orgId => this . __fetchGroupMembers ( orgId ) ) ;
127128 Promise . all ( promises )
@@ -286,6 +287,28 @@ qx.Class.define("osparc.store.Groups", {
286287 . catch ( console . error ) ;
287288 } ,
288289
290+ postMember : function ( orgId , newMemberEmail ) {
291+ const params = {
292+ url : {
293+ "gid" : orgId
294+ } ,
295+ data : {
296+ "email" : newMemberEmail
297+ }
298+ } ;
299+ osparc . data . Resources . fetch ( "organizationMembers" , "post" , params )
300+ . then ( newMember => {
301+ const user = new osparc . data . model . User ( newMember ) ;
302+ this . __addToUsersCache ( user , orgId ) ;
303+ return user ;
304+ } )
305+ . catch ( err => {
306+ const errorMessage = err [ "message" ] || this . tr ( "Something went wrong adding the user" ) ;
307+ osparc . FlashMessenger . getInstance ( ) . logAs ( errorMessage , "ERROR" ) ;
308+ console . error ( err ) ;
309+ } ) ;
310+ } ,
311+
289312 __addToGroupsCache : function ( groupData , groupType ) {
290313 let group = this . groupsCached . find ( f => f . getGroupId ( ) === groupData [ "gid" ] ) ;
291314 if ( group ) {
@@ -313,6 +336,16 @@ qx.Class.define("osparc.store.Groups", {
313336 return true ;
314337 }
315338 return false ;
339+ } ,
340+
341+ __addToUsersCache : function ( user , orgId = null ) {
342+ if ( orgId ) {
343+ const organization = this . getOrganization ( orgId ) ;
344+ if ( organization ) {
345+ organization . getGroupMembers ( ) [ user . getGroupId ( ) ] = user ;
346+ }
347+ }
348+ this . getReachableUsers ( ) [ user . getGroupId ( ) ] = user ;
316349 }
317350 }
318351} ) ;
0 commit comments