From 2217b14d03e5b2e6140fa929976d92af60063d2a Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Wed, 2 Sep 2020 16:20:12 -0400 Subject: [PATCH 1/2] =?UTF-8?q?chore:=20=F0=9F=A4=96=20fixes=20a=20brief?= =?UTF-8?q?=20flash=20of=20empty=20list=20after=20adding=20members?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scopes/scope/groups/group/members.js | 19 +++++++++---------- .../scopes/scope/groups/group/members.hbs | 2 +- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/ui/core/app/routes/scopes/scope/groups/group/members.js b/ui/core/app/routes/scopes/scope/groups/group/members.js index 7e2dc6658..47854dae1 100644 --- a/ui/core/app/routes/scopes/scope/groups/group/members.js +++ b/ui/core/app/routes/scopes/scope/groups/group/members.js @@ -1,6 +1,7 @@ import Route from '@ember/routing/route'; import { action } from '@ember/object'; import { inject as service } from '@ember/service'; +import { hash, all } from 'rsvp'; export default class ScopesScopeGroupsGroupMembersRoute extends Route { @@ -11,22 +12,19 @@ export default class ScopesScopeGroupsGroupMembersRoute extends Route { // =methods - /** - * Empty out all users before loading members. - */ - beforeModel() { - this.store.unloadAll('user'); - } - /** * Returns users associated with this group. - * @return {Promise{[UserModel]}} + * @return {Promise{group: GroupModel, members: Promise{[UserModel]}}} */ async model() { const { id: scopeID } = this.modelFor('scopes.scope'); const group = this.modelFor('scopes.scope.groups.group'); - await this.store.findAll('user', { adapterOptions: { scopeID } }); - return group; + return hash({ + group, + members: all(group.member_ids.map(id => + this.store.findRecord('user', id, { adapterOptions: { scopeID } }) + )) + }); } // =actions @@ -40,6 +38,7 @@ export default class ScopesScopeGroupsGroupMembersRoute extends Route { async removeMember(group, member) { try { await group.removeMember(member.id); + await this.refresh(); this.notify.success(this.intl.t('notify.delete-success')); } catch (error) { // TODO: replace with translated strings diff --git a/ui/core/app/templates/scopes/scope/groups/group/members.hbs b/ui/core/app/templates/scopes/scope/groups/group/members.hbs index a2445b90d..fb562164b 100644 --- a/ui/core/app/templates/scopes/scope/groups/group/members.hbs +++ b/ui/core/app/templates/scopes/scope/groups/group/members.hbs @@ -29,7 +29,7 @@ > {{t "actions.remove"}} From 198ce0838873a278041b285e0f244ec4f5e563c9 Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Wed, 2 Sep 2020 16:45:43 -0400 Subject: [PATCH 2/2] chore: remove unnecessary async --- ui/core/app/routes/scopes/scope/groups/group/members.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/core/app/routes/scopes/scope/groups/group/members.js b/ui/core/app/routes/scopes/scope/groups/group/members.js index 47854dae1..eb3fe8eb2 100644 --- a/ui/core/app/routes/scopes/scope/groups/group/members.js +++ b/ui/core/app/routes/scopes/scope/groups/group/members.js @@ -16,7 +16,7 @@ export default class ScopesScopeGroupsGroupMembersRoute extends Route { * Returns users associated with this group. * @return {Promise{group: GroupModel, members: Promise{[UserModel]}}} */ - async model() { + model() { const { id: scopeID } = this.modelFor('scopes.scope'); const group = this.modelFor('scopes.scope.groups.group'); return hash({