Skip to content

Commit 1d5173e

Browse files
committed
Auto merge of #2448 - Turbo87:e-c, r=locks
crate.owners: Replace async actions with ember-concurrency tasks r? @locks
2 parents 8421062 + e329366 commit 1d5173e

File tree

2 files changed

+46
-44
lines changed

2 files changed

+46
-44
lines changed

app/controllers/crate/owners.js

Lines changed: 43 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,59 @@
11
import Controller from '@ember/controller';
22

3+
import { task } from 'ember-concurrency';
4+
35
export default Controller.extend({
46
crate: null,
57
error: false,
68
invited: false,
79
removed: false,
810
username: '',
911

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;
1419

15-
const username = this.username;
20+
if (!username) {
21+
this.set('error', 'Please enter a username');
22+
return false;
23+
}
1624

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');
2033
}
34+
}
35+
}),
2136

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;
3150
}
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');
5456
}
55-
},
56-
},
57+
}
58+
}),
5759
});

app/templates/crate/owners.hbs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<p data-test-invited-message>{{this.invited}}</p>
1818
{{/if}}
1919

20-
<form local-class="email-form" {{action 'addOwner' on='submit'}}>
20+
<form local-class="email-form" {{on "submit" (perform this.addOwnerTask)}}>
2121
<label local-class="email-input-label" for='new-owner-username'>
2222
Username
2323
</label>
@@ -44,7 +44,7 @@
4444
<div local-class="email-column">
4545
{{team.email}}
4646
</div>
47-
<button type="button" local-class="remove-button" data-test-remove-owner-button {{action 'removeOwner' team}}>Remove</button>
47+
<button type="button" local-class="remove-button" data-test-remove-owner-button {{on "click" (perform this.removeOwnerTask team)}}>Remove</button>
4848
</div>
4949
{{/each}}
5050
{{#each this.crate.owner_user as |user|}}
@@ -58,7 +58,7 @@
5858
<div local-class="email-column">
5959
{{user.email}}
6060
</div>
61-
<button type="button" local-class="remove-button" data-test-remove-owner-button {{action 'removeOwner' user}}>Remove</button>
61+
<button type="button" local-class="remove-button" data-test-remove-owner-button {{on "click" (perform this.removeOwnerTask user)}}>Remove</button>
6262
</div>
6363
{{/each}}
6464
</div>

0 commit comments

Comments
 (0)