|
@@ -1,6 +1,6 @@
|
|
|
import React from 'react';
|
|
|
import { connect } from 'react-redux';
|
|
|
-import { expandHomeTimeline } from '../../actions/timelines';
|
|
|
+import { expandHomeTimeline, refreshHomeTimeline } from '../../actions/timelines';
|
|
|
import PropTypes from 'prop-types';
|
|
|
import StatusListContainer from '../ui/containers/status_list_container';
|
|
|
import Column from '../../components/column';
|
|
@@ -16,6 +16,7 @@ const messages = defineMessages({
|
|
|
|
|
|
const mapStateToProps = state => ({
|
|
|
hasUnread: state.getIn(['timelines', 'home', 'unread']) > 0,
|
|
|
+ isPartial: state.getIn(['timelines', 'home', 'isPartial'], false),
|
|
|
});
|
|
|
|
|
|
@connect(mapStateToProps)
|
|
@@ -26,6 +27,7 @@ export default class HomeTimeline extends React.PureComponent {
|
|
|
dispatch: PropTypes.func.isRequired,
|
|
|
intl: PropTypes.object.isRequired,
|
|
|
hasUnread: PropTypes.bool,
|
|
|
+ isPartial: PropTypes.bool,
|
|
|
columnId: PropTypes.string,
|
|
|
multiColumn: PropTypes.bool,
|
|
|
};
|
|
@@ -57,6 +59,39 @@ export default class HomeTimeline extends React.PureComponent {
|
|
|
this.props.dispatch(expandHomeTimeline());
|
|
|
}
|
|
|
|
|
|
+ componentDidMount () {
|
|
|
+ this._checkIfReloadNeeded(false, this.props.isPartial);
|
|
|
+ }
|
|
|
+
|
|
|
+ componentDidUpdate (prevProps) {
|
|
|
+ this._checkIfReloadNeeded(prevProps.isPartial, this.props.isPartial);
|
|
|
+ }
|
|
|
+
|
|
|
+ componentWillUnmount () {
|
|
|
+ this._stopPolling();
|
|
|
+ }
|
|
|
+
|
|
|
+ _checkIfReloadNeeded (wasPartial, isPartial) {
|
|
|
+ const { dispatch } = this.props;
|
|
|
+
|
|
|
+ if (wasPartial === isPartial) {
|
|
|
+ return;
|
|
|
+ } else if (!wasPartial && isPartial) {
|
|
|
+ this.polling = setInterval(() => {
|
|
|
+ dispatch(refreshHomeTimeline());
|
|
|
+ }, 3000);
|
|
|
+ } else if (wasPartial && !isPartial) {
|
|
|
+ this._stopPolling();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ _stopPolling () {
|
|
|
+ if (this.polling) {
|
|
|
+ clearInterval(this.polling);
|
|
|
+ this.polling = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
render () {
|
|
|
const { intl, hasUnread, columnId, multiColumn } = this.props;
|
|
|
const pinned = !!columnId;
|