Skip to content

Commit 821a83d

Browse files
committed
move to async / await
1 parent f5941fc commit 821a83d

File tree

15 files changed

+164
-172
lines changed

15 files changed

+164
-172
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ npm-debug.log
1010
.happypack
1111
webpack/dlls/*.json
1212
api/**/*.nedb
13-
*.report.html
13+
*.report.html
14+
coverage

api/actions/__tests__/widget-load-test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ describe('widget load', () => {
3131
sinon.stub(Math, 'random').returns(0.2);
3232
});
3333

34-
it('rejects the call', () => {
34+
it('rejects the call', async () => {
3535
try {
36-
load({ session: { user: {} } }, undefined);
36+
await load({ session: { user: {} } }, undefined);
3737
} catch (err) {
3838
expect(err).to.equal('Widget load fails 33% of the time. You were unlucky.');
3939
}

api/actions/__tests__/widget-update-test.js

Lines changed: 25 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -23,45 +23,30 @@ describe('widget update', () => {
2323
}
2424
});
2525

26-
it('does not accept green widgets', () => {
27-
sinon.stub(load, 'default').returns(
28-
new Promise(resolve => {
29-
resolve(widgets);
30-
})
31-
);
32-
return update({ session: {}, body: { color: 'Green' } }).then(
33-
() => {},
34-
err => {
35-
expect(err.color).to.equal('We do not accept green widgets');
36-
}
37-
);
26+
it('does not accept green widgets', async () => {
27+
sinon.stub(load, 'default').resolves(widgets);
28+
try {
29+
await update({ session: {}, body: { color: 'Green' } });
30+
} catch (err) {
31+
expect(err.color).to.equal('We do not accept green widgets');
32+
}
3833
});
3934

40-
it('fails to load widgets', () => {
41-
sinon.stub(load, 'default').returns(
42-
new Promise((resolve, reject) => {
43-
reject('Widget fail to load.');
44-
})
45-
);
46-
return update({ session: {}, body: { color: 'Blue' } }).then(
47-
() => {},
48-
err => {
49-
expect(err).to.equal('Widget fail to load.');
50-
}
51-
);
35+
it('fails to load widgets', async () => {
36+
sinon.stub(load, 'default').rejects(new Error('Widget fail to load.'));
37+
try {
38+
await update({ session: {}, body: { color: 'Blue' } });
39+
} catch (err) {
40+
expect(err.message).to.equal('Widget fail to load.');
41+
}
5242
});
5343

54-
it('updates a widget', () => {
55-
sinon.stub(load, 'default').returns(
56-
new Promise(resolve => {
57-
resolve(widgets);
58-
})
59-
);
44+
it('updates a widget', async () => {
45+
sinon.stub(load, 'default').resolves(widgets);
6046
const widget = { id: 2, color: 'Blue' };
61-
return update({ session: {}, body: widget }).then(res => {
62-
expect(res).to.deep.equal(widget);
63-
expect(widgets[1]).to.deep.equal(widget);
64-
});
47+
const res = await update({ session: {}, body: widget });
48+
expect(res).to.deep.equal(widget);
49+
expect(widgets[1]).to.deep.equal(widget);
6550
});
6651
});
6752

@@ -70,13 +55,12 @@ describe('widget update', () => {
7055
sinon.stub(Math, 'random').returns(0.1);
7156
});
7257

73-
it('rejects the call in 20% of the time', () => {
74-
update().then(
75-
() => {},
76-
err => {
77-
expect(err).to.equal('Oh no! Widget save fails 20% of the time. Try again.');
78-
}
79-
);
58+
it('rejects the call in 20% of the time', async () => {
59+
try {
60+
update();
61+
} catch (err) {
62+
expect(err).to.equal('Oh no! Widget save fails 20% of the time. Try again.');
63+
}
8064
});
8165
});
8266
});

api/services/authentication/index.js

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,11 @@ import { discard } from 'feathers-hooks-common';
99
export socketAuth from './socketAuth';
1010

1111
function populateUser(authConfig) {
12-
return hook =>
13-
hook.app.passport
14-
.verifyJWT(hook.result.accessToken, authConfig)
15-
.then(payload => hook.app.service('users').get(payload.userId))
16-
.then(user => {
17-
hook.result.user = user;
18-
});
12+
return async hook => {
13+
const payload = await hook.app.passport.verifyJWT(hook.result.accessToken, authConfig);
14+
const user = await hook.app.service('users').get(payload.userId);
15+
hook.result.user = user;
16+
};
1917
}
2018

2119
function restToSocketAuth() {
Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export default function socketAuth(app) {
2-
return (socket, next) => {
2+
return async (socket, next) => {
33
const { cookie } = socket.request.headers;
44
const cookies =
55
cookie &&
@@ -17,17 +17,17 @@ export default function socketAuth(app) {
1717

1818
if (!accessToken) return next();
1919

20-
app.passport
21-
.verifyJWT(accessToken, app.get('auth'))
22-
.then(payload => app.service('users').get(payload.userId))
23-
.then(user => {
24-
Object.assign(socket.feathers, {
25-
accessToken,
26-
user,
27-
authenticated: true
28-
});
29-
next();
30-
})
31-
.catch(() => next());
20+
try {
21+
const payload = await app.passport.verifyJWT(accessToken, app.get('auth'));
22+
const user = await app.service('users').get(payload.userId);
23+
Object.assign(socket.feathers, {
24+
accessToken,
25+
user,
26+
authenticated: true
27+
});
28+
next();
29+
} catch (e) {
30+
next();
31+
}
3232
};
3333
}

api/utils/validation.js

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,21 @@ function createAsyncValidator(rules, params) {
1313
}
1414
}, {});
1515

16-
return (await Object.keys(finalErrors).length) ? Promise.reject(finalErrors) : data;
16+
if (Object.keys(finalErrors).length) {
17+
throw finalErrors;
18+
}
19+
20+
return data;
1721
};
1822
}
1923

2024
function unique(field) {
21-
return (value, data, { hook }) =>
22-
hook.service.find({ query: { [field]: value } }).then(result => {
23-
if (result.total !== 0) {
24-
return Promise.reject('Already exist');
25-
}
26-
});
25+
return async (value, data, { hook }) => {
26+
const result = await hook.service.find({ query: { [field]: value } });
27+
if (result.total !== 0) {
28+
return Promise.reject('Already exist');
29+
}
30+
};
2731
}
2832

2933
module.exports = {

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,6 @@
139139
"feathers-rest": "^1.7.3",
140140
"feathers-socketio": "^2.0.0",
141141
"http-proxy": "^1.16.2",
142-
"is-promise": "^2.1.0",
143142
"js-cookie": "^2.1.3",
144143
"localforage": "^1.4.3",
145144
"lru-memoize": "^1.0.1",

src/client.js

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,10 @@ function initSocket() {
4343

4444
global.socket = initSocket();
4545

46-
Promise.all([window.__data ? true : isOnline(), getStoredState(offlinePersistConfig)]).then(([online, storedData]) => {
46+
(async () => {
47+
const storedData = await getStoredState(offlinePersistConfig);
48+
const online = await (window.__data ? true : isOnline());
49+
4750
if (online) socket.open();
4851

4952
// if your server doesn't authenticate socket connexion by cookie
@@ -55,13 +58,14 @@ Promise.all([window.__data ? true : isOnline(), getStoredState(offlinePersistCon
5558

5659
const redirect = bindActionCreators(replace, store.dispatch);
5760

58-
const renderRouter = props =>
59-
(<ReduxAsyncConnect
61+
const renderRouter = props => (
62+
<ReduxAsyncConnect
6063
{...props}
6164
helpers={{ client, app, restApp, redirect }}
6265
filter={item => !item.deferred}
6366
render={applyRouterMiddleware(useScroll())}
64-
/>);
67+
/>
68+
);
6569

6670
const render = routes => {
6771
match({ history, routes }, (error, redirectLocation, renderProps) => {
@@ -116,21 +120,16 @@ Promise.all([window.__data ? true : isOnline(), getStoredState(offlinePersistCon
116120
}
117121

118122
if (online && !__DEVELOPMENT__ && 'serviceWorker' in navigator) {
119-
window.addEventListener('load', () => {
120-
navigator.serviceWorker
121-
.register('/dist/service-worker.js', { scope: '/' })
122-
.then(() => {
123-
console.log('Service worker registered!');
124-
})
125-
.catch(error => {
126-
console.log('Error registering service worker: ', error);
127-
});
128-
129-
navigator.serviceWorker.ready.then(
130-
(/* registration */) => {
131-
console.log('Service Worker Ready');
132-
}
133-
);
123+
window.addEventListener('load', async () => {
124+
try {
125+
await navigator.serviceWorker.register('/dist/service-worker.js', { scope: '/' });
126+
console.log('Service worker registered!');
127+
} catch (error) {
128+
console.log('Error registering service worker: ', error);
129+
}
130+
131+
await navigator.serviceWorker.ready;
132+
console.log('Service Worker Ready');
134133
});
135134
}
136-
});
135+
})();

src/containers/ChatFeathers/ChatFeathers.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ export default class ChatFeathers extends Component {
5454

5555
try {
5656
await this.props.app.service('messages').create({ text: this.state.message });
57-
5857
this.setState({ message: '', error: false });
5958
} catch (error) {
6059
console.log(error);

src/containers/Login/Login.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,30 +30,32 @@ export default class Login extends Component {
3030
if (err) return;
3131

3232
try {
33-
const result = await this.props.login('facebook', data, false);
34-
this.successLogin(result);
33+
await this.props.login('facebook', data, false);
34+
this.successLogin();
3535
} catch (error) {
3636
if (error.message === 'Incomplete oauth registration') {
3737
this.context.router.push({
3838
pathname: '/register',
3939
state: { oauth: error.data }
4040
});
41+
} else {
42+
throw error;
4143
}
4244
}
4345
};
4446

4547
login = async data => {
4648
const result = await this.props.login('local', data);
47-
return this.successLogin(result);
49+
this.successLogin();
50+
return result;
4851
};
4952

50-
successLogin = data => {
53+
successLogin = () => {
5154
this.props.notifSend({
5255
message: "You'r logged !",
5356
kind: 'success',
5457
dismissAfter: 2000
5558
});
56-
return data;
5759
};
5860

5961
FacebookLoginButton = ({ facebookLogin }) => (

0 commit comments

Comments
 (0)