Refactor .then()s to async functions

This commit is contained in:
Aarni Koskela
2019-10-24 18:28:21 +03:00
parent 543c1311ad
commit 7deb14d14a
3 changed files with 33 additions and 38 deletions

View File

@@ -5,37 +5,29 @@ import timeago from "timeago";
import api from "./api";
import transformers from "./feed-transformers";
function throwError(err) {
setTimeout(() => {
console.log(err.stack);
throw err;
});
}
export default class Feed extends React.Component {
state = {
messages: [],
};
componentDidMount() {
request
.get(api("feeds"))
this.updateFeed();
}
.then(res => {
const messages = _(res.data)
.map((messages, type) => transformers[type](messages))
.flatten()
.value();
async updateFeed() {
const res = await request.get(api("feeds"));
const messages = _(res.data)
.map((messages, type) => transformers[type](messages))
.flatten()
.value();
this.setState({
messages: _(messages)
.sortBy("timestamp")
.reverse()
.value()
.slice(0, 40),
});
})
.catch(throwError);
this.setState({
messages: _(messages)
.sortBy("timestamp")
.reverse()
.value()
.slice(0, 40),
});
}
render() {

View File

@@ -12,7 +12,7 @@ export default class InviteForm extends React.Component {
error: null,
};
onSubmit = e => {
onSubmit = async e => {
e.preventDefault();
this.setState({
@@ -21,12 +21,14 @@ export default class InviteForm extends React.Component {
error: null,
});
request
.post(api("invites"), {
try {
await request.post(api("invites"), {
email: this.state.email.trim(),
})
.then(this.handleSuccess)
.catch(this.handleError);
});
this.handleSuccess();
} catch (error) {
this.handleError(error);
}
};
handleSuccess = () => {

View File

@@ -9,19 +9,20 @@ export default class Members extends React.Component {
};
componentDidMount() {
request.get(api("members")).then(
function(res) {
this.setState({
members: _.shuffle(res.data),
});
}.bind(this)
);
this.refreshMembers();
}
async refreshMembers() {
const res = await request.get(api("members"));
this.setState({
members: _.shuffle(res.data),
});
}
render() {
var members = this.state.members.map(function(member, i) {
var members = this.state.members.map(member => {
var src = `${member.avatar_url}&s=120`;
return <img className="member" key={i} src={src} />;
return <img className="member" key={member.avatar_url} src={src} />;
});
return (