Skip to content

Commit eb44b50

Browse files
committed
Auto merge of #4129 - Turbo87:tasks, r=Mikek2252
Use ember-concurrency v2 decorator syntax This is similar to #4069, but converts all the remaining tasks that had concurrency modifiers attached to them.
2 parents 7f450e8 + 98e39b2 commit eb44b50

File tree

7 files changed

+30
-47
lines changed

7 files changed

+30
-47
lines changed

app/components/follow-button.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { inject as service } from '@ember/service';
22
import Component from '@glimmer/component';
33
import { tracked } from '@glimmer/tracking';
44

5-
import { didCancel, task } from 'ember-concurrency';
5+
import { didCancel, dropTask, task } from 'ember-concurrency';
66

77
import ajax from '../utils/ajax';
88

@@ -23,11 +23,10 @@ export default class extends Component {
2323
});
2424
}
2525

26-
@(task(function* () {
26+
@dropTask *followStateTask() {
2727
let d = yield ajax(`/api/v1/crates/${this.args.crate.name}/following`);
2828
this.following = d.following;
29-
}).drop())
30-
followStateTask;
29+
}
3130

3231
@task *toggleFollowTask() {
3332
let crate = this.args.crate;

app/controllers/index.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Controller from '@ember/controller';
22
import { action } from '@ember/object';
33
import { inject as service } from '@ember/service';
44

5-
import { task } from 'ember-concurrency';
5+
import { dropTask } from 'ember-concurrency';
66
import { reads } from 'macro-decorators';
77

88
export default class IndexController extends Controller {
@@ -21,7 +21,7 @@ export default class IndexController extends Controller {
2121
});
2222
}
2323

24-
@(task(function* () {
24+
@dropTask *dataTask() {
2525
let data = yield this.fetcher.ajax('/api/v1/summary');
2626

2727
addCrates(this.store, data.new_crates);
@@ -30,8 +30,7 @@ export default class IndexController extends Controller {
3030
addCrates(this.store, data.most_recently_downloaded);
3131

3232
return data;
33-
}).drop())
34-
dataTask;
33+
}
3534
}
3635

3736
function addCrates(store, crates) {

app/controllers/search.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { action } from '@ember/object';
33
import { inject as service } from '@ember/service';
44
import { tracked } from '@glimmer/tracking';
55

6-
import { task } from 'ember-concurrency';
6+
import { restartableTask } from 'ember-concurrency';
77
import { bool, reads } from 'macro-decorators';
88

99
import { pagination } from '../utils/pagination';
@@ -54,16 +54,15 @@ export default class SearchController extends Controller {
5454
});
5555
}
5656

57-
@(task(function* () {
57+
@restartableTask *dataTask() {
5858
let { all_keywords, page, per_page, q, sort } = this;
5959

6060
if (q !== null) {
6161
q = q.trim();
6262
}
6363

6464
return yield this.store.query('crate', { all_keywords, page, per_page, q, sort });
65-
}).restartable())
66-
dataTask;
65+
}
6766

6867
get exactMatch() {
6968
return this.model.find(it => it.exact_match);

app/models/version.js

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Model, { attr, belongsTo, hasMany } from '@ember-data/model';
22

3-
import { task } from 'ember-concurrency';
3+
import { keepLatestTask, task } from 'ember-concurrency';
44
import { alias } from 'macro-decorators';
55
import semverParse from 'semver/functions/parse';
66
import { cached } from 'tracked-toolbox';
@@ -98,7 +98,7 @@ export default class Version extends Model {
9898
@alias('loadDepsTask.last.value.build') buildDependencies;
9999
@alias('loadDepsTask.last.value.dev') devDependencies;
100100

101-
@(task(function* () {
101+
@keepLatestTask *loadDepsTask() {
102102
// trigger the async relationship to load the content
103103
let dependencies = yield this.dependencies;
104104

@@ -107,10 +107,9 @@ export default class Version extends Model {
107107
let dev = dependencies.filterBy('kind', 'dev').uniqBy('crate_id');
108108

109109
return { normal, build, dev };
110-
}).keepLatest())
111-
loadDepsTask;
110+
}
112111

113-
@(task(function* () {
112+
@keepLatestTask *loadReadmeTask() {
114113
if (this.readme_path) {
115114
let response = yield fetch(this.readme_path);
116115
if (!response.ok) {
@@ -119,8 +118,7 @@ export default class Version extends Model {
119118

120119
return yield response.text();
121120
}
122-
}).keepLatest())
123-
loadReadmeTask;
121+
}
124122

125123
@task *loadDocsBuildsTask() {
126124
return yield ajax(`https://docs.rs/crate/${this.crateName}/${this.num}/builds.json`);
@@ -159,25 +157,23 @@ export default class Version extends Model {
159157
return null;
160158
}
161159

162-
@(task(function* () {
160+
@keepLatestTask *yankTask() {
163161
let response = yield fetch(`/api/v1/crates/${this.crate.id}/${this.num}/yank`, { method: 'DELETE' });
164162
if (!response.ok) {
165163
throw new Error(`Yank request for ${this.crateName} v${this.num} failed`);
166164
}
167165
this.set('yanked', true);
168166

169167
return yield response.text();
170-
}).keepLatest())
171-
yankTask;
168+
}
172169

173-
@(task(function* () {
170+
@keepLatestTask *unyankTask() {
174171
let response = yield fetch(`/api/v1/crates/${this.crate.id}/${this.num}/unyank`, { method: 'PUT' });
175172
if (!response.ok) {
176173
throw new Error(`Unyank request for ${this.crateName} v${this.num} failed`);
177174
}
178175
this.set('yanked', false);
179176

180177
return yield response.text();
181-
}).keepLatest())
182-
unyankTask;
178+
}
183179
}

app/services/chartjs.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import differenceInDays from 'date-fns/differenceInDays';
66
import endOfDay from 'date-fns/endOfDay';
77
import format from 'date-fns/format';
88
import startOfDay from 'date-fns/startOfDay';
9-
import { task } from 'ember-concurrency';
9+
import { dropTask } from 'ember-concurrency';
1010

1111
export default class ChartJsLoader extends Service {
12-
@(task(function* () {
12+
@dropTask *loadTask() {
1313
let {
1414
Chart,
1515
LineController,
@@ -66,6 +66,5 @@ export default class ChartJsLoader extends Service {
6666
});
6767

6868
return Chart;
69-
}).drop())
70-
loadTask;
69+
}
7170
}

app/services/playground.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
import Service from '@ember/service';
22

3-
import { task } from 'ember-concurrency';
3+
import { dropTask } from 'ember-concurrency';
44
import { alias } from 'macro-decorators';
55

66
import ajax from '../utils/ajax';
77

88
export default class PlaygroundService extends Service {
99
@alias('loadCratesTask.lastSuccessful.value') crates;
1010

11-
@(task(function* () {
11+
@dropTask *loadCratesTask() {
1212
let response = yield ajax('https://play.rust-lang.org/meta/crates');
1313
return response.crates;
14-
}).drop())
15-
loadCratesTask;
14+
}
1615
}

tests/components/download-graph-test.js

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import Service from '@ember/service';
55
import { defer } from 'rsvp';
66

77
import { hbs } from 'ember-cli-htmlbars';
8-
import { task } from 'ember-concurrency';
8+
import { dropTask } from 'ember-concurrency';
99
import window from 'ember-window-mock';
1010
import { setupWindowMock } from 'ember-window-mock/test-support';
1111
import timekeeper from 'timekeeper';
@@ -35,17 +35,10 @@ module('Component | DownloadGraph', function (hooks) {
3535
let deferred = defer();
3636

3737
class MockService extends ChartJsLoader {
38-
constructor() {
39-
super(...arguments);
40-
this.originalLoadTask = this.loadTask;
41-
this.loadTask = this.mockLoadTask;
42-
}
43-
44-
@(task(function* () {
38+
@dropTask *loadTask() {
4539
yield deferred.promise;
46-
return yield this.originalLoadTask.perform();
47-
}).drop())
48-
mockLoadTask;
40+
return yield super.loadTask.perform();
41+
}
4942
}
5043

5144
this.owner.register('service:chartjs', MockService);
@@ -68,10 +61,9 @@ module('Component | DownloadGraph', function (hooks) {
6861
test('error behavior', async function (assert) {
6962
class MockService extends Service {
7063
// eslint-disable-next-line require-yield
71-
@(task(function* () {
64+
@dropTask *loadTask() {
7265
throw new Error('nope');
73-
}).drop())
74-
loadTask;
66+
}
7567
}
7668

7769
this.owner.register('service:chartjs', MockService);

0 commit comments

Comments
 (0)