commit: f0f791bb76bbe1e8ea4329b3c5ebcbb9f7076b0d parent: 0895ff414e73212e23c3d680846b5b8b7666bdfd Author: Eugen Rochko <eugen@zeonfederated.com> Date: Sun, 16 Oct 2016 19:23:17 +0200 Don't preload timelines as props, load them when timeline component is mounted This prevents the bug where if you go "back" to the UI after navigating to another page it loads with the old set of statusesDiffstat:
5 files changed, 27 insertions(+), 15 deletions(-)
diff --git a/app/assets/javascripts/components/containers/mastodon.jsx b/app/assets/javascripts/components/containers/mastodon.jsx @@ -41,12 +41,6 @@ const Mastodon = React.createClass({ store.dispatch(setAccessToken(this.props.token)); store.dispatch(setAccountSelf(JSON.parse(this.props.account))); - for (var timelineType in this.props.timelines) { - if (this.props.timelines.hasOwnProperty(timelineType)) { - store.dispatch(refreshTimelineSuccess(timelineType, JSON.parse(this.props.timelines[timelineType]))); - } - } - if (typeof App !== 'undefined') { this.subscription = App.cable.subscriptions.create('TimelineChannel', { diff --git a/app/assets/javascripts/components/features/home_timeline/index.jsx b/app/assets/javascripts/components/features/home_timeline/index.jsx @@ -1,11 +1,21 @@ +import { connect } from 'react-redux'; import PureRenderMixin from 'react-addons-pure-render-mixin'; import StatusListContainer from '../ui/containers/status_list_container'; import Column from '../ui/components/column'; +import { refreshTimeline } from '../../actions/timelines'; const HomeTimeline = React.createClass({ + propTypes: { + dispatch: React.PropTypes.func.isRequired + }, + mixins: [PureRenderMixin], + componentWillMount () { + this.props.dispatch(refreshTimeline('home')); + }, + render () { return ( <Column icon='home' heading='Home'> @@ -16,4 +26,4 @@ const HomeTimeline = React.createClass({ }); -export default HomeTimeline; +export default connect()(HomeTimeline); diff --git a/app/assets/javascripts/components/features/mentions_timeline/index.jsx b/app/assets/javascripts/components/features/mentions_timeline/index.jsx @@ -1,11 +1,21 @@ +import { connect } from 'react-redux'; import PureRenderMixin from 'react-addons-pure-render-mixin'; import StatusListContainer from '../ui/containers/status_list_container'; import Column from '../ui/components/column'; +import { refreshTimeline } from '../../actions/timelines'; const MentionsTimeline = React.createClass({ + propTypes: { + dispatch: React.PropTypes.func.isRequired + }, + mixins: [PureRenderMixin], + componentWillMount () { + this.props.dispatch(refreshTimeline('mentions')); + }, + render () { return ( <Column icon='at' heading='Mentions'> @@ -16,4 +26,4 @@ const MentionsTimeline = React.createClass({ }); -export default MentionsTimeline; +export default connect()(MentionsTimeline); diff --git a/app/assets/javascripts/components/features/public_timeline/index.jsx b/app/assets/javascripts/components/features/public_timeline/index.jsx @@ -9,6 +9,10 @@ import { const PublicTimeline = React.createClass({ + propTypes: { + dispatch: React.PropTypes.func.isRequired + }, + mixins: [PureRenderMixin], componentWillMount () { diff --git a/app/helpers/home_helper.rb b/app/helpers/home_helper.rb @@ -2,13 +2,7 @@ module HomeHelper def default_props { token: @token, - - account: render(file: 'api/v1/accounts/show', locals: { account: current_user.account }, formats: :json), - - timelines: { - home: render(file: 'api/v1/statuses/index', locals: { statuses: @home }, formats: :json), - mentions: render(file: 'api/v1/statuses/index', locals: { statuses: @mentions }, formats: :json) - } + account: render(file: 'api/v1/accounts/show', locals: { account: current_user.account }, formats: :json) } end end