When streaming API is disconnected, poll home/notifications (#2776)

* When streaming API is disconnected, poll home/notifications
Display slightly different empty home timeline message if user is following others
Cull notifications to 20 items when over 40 get added in real-time
Run manage:translations

* Optimize <HomeTimeline /> a little
This commit is contained in:
Eugen Rochko
2017-05-04 23:41:34 +02:00
committed by GitHub
parent 84eb425f38
commit eddb95b012
31 changed files with 124 additions and 45 deletions

View File

@ -217,20 +217,34 @@ Container.propTypes = {
children: PropTypes.node,
};
class Mastodon extends React.Component {
class Mastodon extends React.PureComponent {
componentDidMount() {
const { locale } = this.props;
const streamingAPIBaseURL = store.getState().getIn(['meta', 'streaming_api_base_url']);
const accessToken = store.getState().getIn(['meta', 'access_token']);
const setupPolling = () => {
this.polling = setInterval(() => {
store.dispatch(refreshTimeline('home'));
store.dispatch(refreshNotifications());
}, 20000);
};
const clearPolling = () => {
clearInterval(this.polling);
this.polling = undefined;
};
this.subscription = createStream(streamingAPIBaseURL, accessToken, 'user', {
connected () {
clearPolling();
store.dispatch(connectTimeline('home'));
},
disconnected () {
setupPolling();
store.dispatch(disconnectTimeline('home'));
},
@ -249,6 +263,7 @@ class Mastodon extends React.Component {
},
reconnected () {
clearPolling();
store.dispatch(connectTimeline('home'));
store.dispatch(refreshTimeline('home'));
store.dispatch(refreshNotifications());
@ -269,6 +284,11 @@ class Mastodon extends React.Component {
this.subscription.close();
this.subscription = null;
}
if (typeof this.polling !== 'undefined') {
clearInterval(this.polling);
this.polling = null;
}
}
render () {