|
1 | 1 | import Controller from '@ember/controller';
|
2 | 2 |
|
| 3 | +import { task } from 'ember-concurrency'; |
| 4 | + |
3 | 5 | export default Controller.extend({
|
4 | 6 | crate: null,
|
5 | 7 | error: false,
|
6 | 8 | invited: false,
|
7 | 9 | removed: false,
|
8 | 10 | username: '',
|
9 | 11 |
|
10 |
| - actions: { |
11 |
| - async addOwner() { |
12 |
| - this.set('error', false); |
13 |
| - this.set('invited', false); |
| 12 | + addOwnerTask: task(function* (event) { |
| 13 | + event.preventDefault(); |
| 14 | + |
| 15 | + this.set('error', false); |
| 16 | + this.set('invited', false); |
| 17 | + |
| 18 | + const username = this.username; |
14 | 19 |
|
15 |
| - const username = this.username; |
| 20 | + if (!username) { |
| 21 | + this.set('error', 'Please enter a username'); |
| 22 | + return false; |
| 23 | + } |
16 | 24 |
|
17 |
| - if (!username) { |
18 |
| - this.set('error', 'Please enter a username'); |
19 |
| - return false; |
| 25 | + try { |
| 26 | + yield this.crate.inviteOwner(username); |
| 27 | + this.set('invited', `An invite has been sent to ${username}`); |
| 28 | + } catch (error) { |
| 29 | + if (error.errors) { |
| 30 | + this.set('error', `Error sending invite: ${error.errors[0].detail}`); |
| 31 | + } else { |
| 32 | + this.set('error', 'Error sending invite'); |
20 | 33 | }
|
| 34 | + } |
| 35 | + }), |
21 | 36 |
|
22 |
| - try { |
23 |
| - await this.crate.inviteOwner(username); |
24 |
| - this.set('invited', `An invite has been sent to ${username}`); |
25 |
| - } catch (error) { |
26 |
| - if (error.errors) { |
27 |
| - this.set('error', `Error sending invite: ${error.errors[0].detail}`); |
28 |
| - } else { |
29 |
| - this.set('error', 'Error sending invite'); |
30 |
| - } |
| 37 | + removeOwnerTask: task(function* (owner) { |
| 38 | + this.set('removed', false); |
| 39 | + try { |
| 40 | + yield this.crate.removeOwner(owner.get('login')); |
| 41 | + switch (owner.kind) { |
| 42 | + case 'user': |
| 43 | + this.set('removed', `User ${owner.get('login')} removed as crate owner`); |
| 44 | + this.get('crate.owner_user').removeObject(owner); |
| 45 | + break; |
| 46 | + case 'team': |
| 47 | + this.set('removed', `Team ${owner.get('display_name')} removed as crate owner`); |
| 48 | + this.get('crate.owner_team').removeObject(owner); |
| 49 | + break; |
31 | 50 | }
|
32 |
| - }, |
33 |
| - |
34 |
| - async removeOwner(owner) { |
35 |
| - this.set('removed', false); |
36 |
| - try { |
37 |
| - await this.crate.removeOwner(owner.get('login')); |
38 |
| - switch (owner.kind) { |
39 |
| - case 'user': |
40 |
| - this.set('removed', `User ${owner.get('login')} removed as crate owner`); |
41 |
| - this.get('crate.owner_user').removeObject(owner); |
42 |
| - break; |
43 |
| - case 'team': |
44 |
| - this.set('removed', `Team ${owner.get('display_name')} removed as crate owner`); |
45 |
| - this.get('crate.owner_team').removeObject(owner); |
46 |
| - break; |
47 |
| - } |
48 |
| - } catch (error) { |
49 |
| - if (error.errors) { |
50 |
| - this.set('removed', `Error removing owner: ${error.errors[0].detail}`); |
51 |
| - } else { |
52 |
| - this.set('removed', 'Error removing owner'); |
53 |
| - } |
| 51 | + } catch (error) { |
| 52 | + if (error.errors) { |
| 53 | + this.set('removed', `Error removing owner: ${error.errors[0].detail}`); |
| 54 | + } else { |
| 55 | + this.set('removed', 'Error removing owner'); |
54 | 56 | }
|
55 |
| - }, |
56 |
| - }, |
| 57 | + } |
| 58 | + }), |
57 | 59 | });
|
0 commit comments