diff --git a/app/components/gh-members-no-members.hbs b/app/components/gh-members-no-members.hbs index afaae21ca..456d739ed 100644 --- a/app/components/gh-members-no-members.hbs +++ b/app/components/gh-members-no-members.hbs @@ -1,14 +1,14 @@
{{!--

Get started with one of the following options

--}} - - +
Manually add a member - + Import members from CSV diff --git a/app/components/gh-members-no-members.js b/app/components/gh-members-no-members.js index 1eafbacdb..c4e37097f 100644 --- a/app/components/gh-members-no-members.js +++ b/app/components/gh-members-no-members.js @@ -1,38 +1,45 @@ -import Component from '@ember/component'; +import Component from '@glimmer/component'; +import {action} from '@ember/object'; import {inject as service} from '@ember/service'; -import {task} from 'ember-concurrency'; +import {task} from 'ember-concurrency-decorators'; -export default Component.extend({ - session: service(), - store: service(), - notifications: service(), +export default class GhMembersNoMembersComponent extends Component { + @service session; + @service store; + @service notifications; - actions: { - addYourself() { - return this.add.perform(); - } - }, + @action + addYourself() { + return this.addTask.perform(); + } + + @task({drop: true}) + *addTask() { + const user = yield this.session.user; - add: task(function* () { const member = this.store.createRecord('member', { - email: this.get('session.user.email'), - name: this.get('session.user.name') + email: user.get('email'), + name: user.get('name') }); try { - // NOTE: has to be before member.save() is performed otherwise component is - // destroyed before notification is shown + yield member.save(); + + if (this.args.afterCreate) { + this.args.afterCreate(); + } + this.notifications.showNotification('Member added'.htmlSafe(), { description: 'You\'ve successfully added yourself as a member.' } ); - return yield member.save(); + return member; } catch (error) { if (error) { this.notifications.showAPIError(error, {key: 'member.save'}); } } - }).drop() -}); + } +} diff --git a/app/controllers/members.js b/app/controllers/members.js index 29ed23d9d..0c08b7587 100644 --- a/app/controllers/members.js +++ b/app/controllers/members.js @@ -172,7 +172,7 @@ export default class MembersController extends Controller { } } - @task + @task({restartable: true}) *fetchMembersTask(params) { // params is undefined when called as a "refresh" of the model let {label, searchParam} = typeof params === 'undefined' ? this : params; diff --git a/app/templates/members.hbs b/app/templates/members.hbs index 82f5a954d..160024e16 100644 --- a/app/templates/members.hbs +++ b/app/templates/members.hbs @@ -71,7 +71,7 @@ {{svg-jar "members-placeholder" class="gh-members-placeholder"}} {{#if this.showingAll}}

No members yet

- + {{else}}

No members match the current filter

{{/if}}