@ -1,6 +1,6 @@
import React from 'react' ;
import React from 'react' ;
import { connect } from 'react-redux' ;
import { connect } from 'react-redux' ;
import { expandHomeTimeline } from '../../actions/timelines' ;
import { expandHomeTimeline , refreshHomeTimeline } from '../../actions/timelines' ;
import PropTypes from 'prop-types' ;
import PropTypes from 'prop-types' ;
import StatusListContainer from '../ui/containers/status_list_container' ;
import StatusListContainer from '../ui/containers/status_list_container' ;
import Column from '../../components/column' ;
import Column from '../../components/column' ;
@ -16,6 +16,7 @@ const messages = defineMessages({
const mapStateToProps = state => ( {
const mapStateToProps = state => ( {
hasUnread : state . getIn ( [ 'timelines' , 'home' , 'unread' ] ) > 0 ,
hasUnread : state . getIn ( [ 'timelines' , 'home' , 'unread' ] ) > 0 ,
isPartial : state . getIn ( [ 'timelines' , 'home' , 'isPartial' ] , false ) ,
} ) ;
} ) ;
@ connect ( mapStateToProps )
@ connect ( mapStateToProps )
@ -26,6 +27,7 @@ export default class HomeTimeline extends React.PureComponent {
dispatch : PropTypes . func . isRequired ,
dispatch : PropTypes . func . isRequired ,
intl : PropTypes . object . isRequired ,
intl : PropTypes . object . isRequired ,
hasUnread : PropTypes . bool ,
hasUnread : PropTypes . bool ,
isPartial : PropTypes . bool ,
columnId : PropTypes . string ,
columnId : PropTypes . string ,
multiColumn : PropTypes . bool ,
multiColumn : PropTypes . bool ,
} ;
} ;
@ -57,6 +59,39 @@ export default class HomeTimeline extends React.PureComponent {
this . props . dispatch ( expandHomeTimeline ( ) ) ;
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 ( ) {
render ( ) {
const { intl , hasUnread , columnId , multiColumn } = this . props ;
const { intl , hasUnread , columnId , multiColumn } = this . props ;
const pinned = ! ! columnId ;
const pinned = ! ! columnId ;