Skip to content

Commit a093b70

Browse files
authored
Merge pull request #1195 from tchak/ember-fetch
Replace `ember-ajax` with `ember-fetch`
2 parents 8d266d0 + 8996fef commit a093b70

File tree

13 files changed

+178
-57
lines changed

13 files changed

+178
-57
lines changed

app/adapters/application.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import DS from 'ember-data';
2+
import AdapterFetch from 'ember-fetch/mixins/adapter-fetch';
23

3-
export default DS.RESTAdapter.extend({
4+
export default DS.RESTAdapter.extend(AdapterFetch, {
45
namespace: 'api/v1',
56
});

app/components/email-input.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import Component from '@ember/component';
22
import { empty } from '@ember/object/computed';
33
import { computed } from '@ember/object';
44
import { inject as service } from '@ember/service';
5+
import ajax from 'ember-fetch/ajax';
56

67
export default Component.extend({
7-
ajax: service(),
88
flashMessages: service(),
99

1010
type: '',
@@ -96,7 +96,7 @@ export default Component.extend({
9696
let user = this.get('user');
9797

9898
try {
99-
await this.get('ajax').raw(`/api/v1/users/${user.id}/resend`, { method: 'PUT' });
99+
await ajax(`/api/v1/users/${user.id}/resend`, { method: 'PUT' });
100100
this.set('disableResend', true);
101101
} catch(error) {
102102
if (error.payload) {

app/controllers/dashboard.js

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
import Controller from '@ember/controller';
22
import { A } from '@ember/array';
33
import { computed } from '@ember/object';
4-
import { inject as service } from '@ember/service';
4+
import ajax from 'ember-fetch/ajax';
55

66
const TO_SHOW = 5;
77

88
export default Controller.extend({
9-
10-
ajax: service(),
11-
129
init() {
1310
this._super(...arguments);
1411

@@ -46,8 +43,7 @@ export default Controller.extend({
4643
let page = (this.get('myFeed').length / 10) + 1;
4744

4845
try {
49-
let data = await this.get('ajax').request(`/api/v1/me/updates?page=${page}`);
50-
46+
let data = await ajax(`/api/v1/me/updates?page=${page}`);
5147
let versions = data.versions.map(version => this.store.push(this.store.normalize('version', version)));
5248

5349
this.get('myFeed').pushObjects(versions);

app/controllers/index.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
import Controller from '@ember/controller';
22
import { computed } from '@ember/object';
33
import { readOnly } from '@ember/object/computed';
4-
import { inject as service } from '@ember/service';
54

5+
import ajax from 'ember-fetch/ajax';
66
import { task } from 'ember-concurrency';
77

88
export default Controller.extend({
9-
ajax: service(),
10-
119
model: readOnly('dataTask.lastSuccessful.value'),
1210

1311
hasData: computed('dataTask.{lastSuccessful,isRunning}', function() {
1412
return this.get('dataTask.lastSuccessful') || !this.get('dataTask.isRunning');
1513
}),
1614

1715
dataTask: task(function* () {
18-
let data = yield this.get('ajax').request('/api/v1/summary');
16+
let data = yield ajax('/api/v1/summary');
1917

2018
addCrates(this.store, data.new_crates);
2119
addCrates(this.store, data.most_downloaded);

app/controllers/me/index.js

-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ export default Controller.extend({
88

99
sortedTokens: sort('model.api_tokens', 'tokenSort'),
1010

11-
ajax: service(),
12-
1311
flashMessages: service(),
1412

1513
isResetting: false,

app/routes/confirm.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import Route from '@ember/routing/route';
22
import { inject as service } from '@ember/service';
3+
import ajax from 'ember-fetch/ajax';
34

45
export default Route.extend({
56
flashMessages: service(),
6-
ajax: service(),
77
session: service(),
88

99
async model(params) {
1010
try {
11-
await this.get('ajax').raw(`/api/v1/confirm/${params.email_token}`, { method: 'PUT', data: {} });
11+
await ajax(`/api/v1/confirm/${params.email_token}`, { method: 'PUT', body: '{}' });
1212

1313
/* We need this block to reload the user model from the database,
1414
without which if we haven't submitted another GET /me after
@@ -21,7 +21,7 @@ export default Route.extend({
2121
Suggestions of a more ideomatic way to fix/test this are welcome!
2222
*/
2323
if (this.get('session.isLoggedIn')) {
24-
this.get('ajax').request('/api/v1/me').then((response) => {
24+
ajax('/api/v1/me').then((response) => {
2525
this.get('session').set('currentUser', this.store.push(this.store.normalize('user', response.user)));
2626
});
2727
}

app/routes/crate/version.js

+12-15
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ import { observer } from '@ember/object';
22
import Route from '@ember/routing/route';
33
import { inject as service } from '@ember/service';
44

5+
import fetch from 'fetch';
6+
import ajax from 'ember-fetch/ajax';
7+
58
export default Route.extend({
6-
ajax: service(),
79
session: service(),
810

911
flashMessages: service(),
@@ -45,7 +47,7 @@ export default Route.extend({
4547
crate.get('documentation').substr(0, 16) === 'https://docs.rs/') {
4648
let crateName = crate.get('name');
4749
let crateVersion = params.version_num;
48-
this.get('ajax').request(`https://docs.rs/crate/${crateName}/${crateVersion}/builds.json`)
50+
ajax(`https://docs.rs/crate/${crateName}/${crateVersion}/builds.json`, { mode: 'cors' })
4951
.then((r) => {
5052
if (r.length > 0 && r[0].build_status === true) {
5153
crate.set('documentation', `https://docs.rs/${crateName}/${crateVersion}/`);
@@ -85,7 +87,7 @@ export default Route.extend({
8587
controller.set('fetchingFollowing', true);
8688

8789
if (this.get('session.currentUser')) {
88-
this.get('ajax').request(`/api/v1/crates/${crate.get('name')}/following`)
90+
ajax(`/api/v1/crates/${crate.get('name')}/following`)
8991
.then((d) => controller.set('following', d.following))
9092
.finally(() => controller.set('fetchingFollowing', false));
9193
}
@@ -104,18 +106,13 @@ export default Route.extend({
104106
versions.objectAt(0);
105107

106108
if (result.get('readme_path')) {
107-
this.get('ajax').request(result.get('readme_path'))
108-
.then((r) => this.get('ajax').raw(r.url, {
109-
method: 'GET',
110-
dataType: 'html',
111-
headers: {
112-
// We need to force the Accept header, otherwise crates.io won't return
113-
// the readme file when not using S3.
114-
Accept: '*/*',
115-
},
116-
}))
117-
.then((r) => {
118-
crate.set('readme', r.payload);
109+
fetch(result.get('readme_path'))
110+
.then(async (r) => {
111+
if (r.ok) {
112+
crate.set('readme', await r.text());
113+
} else {
114+
crate.set('readme', null);
115+
}
119116
})
120117
.catch(() => {
121118
crate.set('readme', null);

app/routes/github-authorize.js

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Route from '@ember/routing/route';
2-
import { inject as service } from '@ember/service';
2+
import ajax from 'ember-fetch/ajax';
3+
import { serializeQueryParams } from 'ember-fetch/mixins/adapter-fetch';
34

45
/**
56
* This route will be called from the GitHub OAuth flow once the user has
@@ -15,12 +16,10 @@ import { inject as service } from '@ember/service';
1516
* @see `/login` route
1617
*/
1718
export default Route.extend({
18-
19-
ajax: service(),
20-
2119
async beforeModel(transition) {
2220
try {
23-
let d = await this.get('ajax').request(`/authorize`, { data: transition.queryParams });
21+
let queryParams = serializeQueryParams(transition.queryParams);
22+
let d = await ajax(`/authorize?${queryParams}`);
2423
let item = JSON.stringify({ ok: true, data: d });
2524
if (window.opener) {
2625
window.opener.github_response = item;

app/routes/github-login.js

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Route from '@ember/routing/route';
2-
import { inject as service } from '@ember/service';
2+
import ajax from 'ember-fetch/ajax';
33

44
/**
55
* Calling this route will query the `/authorize_url` API endpoint
@@ -15,11 +15,8 @@ import { inject as service } from '@ember/service';
1515
* @see `github-authorize` route
1616
*/
1717
export default Route.extend({
18-
19-
ajax: service(),
20-
2118
async beforeModel() {
22-
let url = await this.get('ajax').request(`/authorize_url`);
19+
let url = await ajax(`/authorize_url`);
2320
window.location = url.url;
2421
},
2522
});

app/routes/logout.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import { run } from '@ember/runloop';
22
import Route from '@ember/routing/route';
33
import { inject as service } from '@ember/service';
4+
import ajax from 'ember-fetch/ajax';
45

56
export default Route.extend({
6-
ajax: service(),
77
session: service(),
88

99
async activate() {
10-
await this.get('ajax').delete(`/logout`);
10+
await ajax(`/logout`, { method: 'DELETE' });
1111
run(() => {
1212
this.get('session').logoutUser();
1313
this.transitionTo('index');

app/services/session.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Service, { inject as service } from '@ember/service';
2+
import ajax from 'ember-fetch/ajax';
23

34
export default Service.extend({
45
savedTransition: null,
@@ -7,7 +8,6 @@ export default Service.extend({
78
currentUser: null,
89
currentUserDetected: false,
910

10-
ajax: service(),
1111
store: service(),
1212
router: service(),
1313

@@ -64,7 +64,7 @@ export default Service.extend({
6464
},
6565

6666
fetchUser() {
67-
return this.get('ajax').request('/api/v1/me')
67+
return ajax('/api/v1/me')
6868
.then((response) => {
6969
this.set('currentUser', this.get('store').push(this.get('store').normalize('user', response.user)));
7070
});

0 commit comments

Comments
 (0)