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 statuses
local
Eugen Rochko 8 years ago
parent 0895ff414e
commit f0f791bb76
  1. 6
      app/assets/javascripts/components/containers/mastodon.jsx
  2. 12
      app/assets/javascripts/components/features/home_timeline/index.jsx
  3. 12
      app/assets/javascripts/components/features/mentions_timeline/index.jsx
  4. 4
      app/assets/javascripts/components/features/public_timeline/index.jsx
  5. 8
      app/helpers/home_helper.rb

@ -41,12 +41,6 @@ const Mastodon = React.createClass({
store.dispatch(setAccessToken(this.props.token)); store.dispatch(setAccessToken(this.props.token));
store.dispatch(setAccountSelf(JSON.parse(this.props.account))); 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') { if (typeof App !== 'undefined') {
this.subscription = App.cable.subscriptions.create('TimelineChannel', { this.subscription = App.cable.subscriptions.create('TimelineChannel', {

@ -1,11 +1,21 @@
import { connect } from 'react-redux';
import PureRenderMixin from 'react-addons-pure-render-mixin'; import PureRenderMixin from 'react-addons-pure-render-mixin';
import StatusListContainer from '../ui/containers/status_list_container'; import StatusListContainer from '../ui/containers/status_list_container';
import Column from '../ui/components/column'; import Column from '../ui/components/column';
import { refreshTimeline } from '../../actions/timelines';
const HomeTimeline = React.createClass({ const HomeTimeline = React.createClass({
propTypes: {
dispatch: React.PropTypes.func.isRequired
},
mixins: [PureRenderMixin], mixins: [PureRenderMixin],
componentWillMount () {
this.props.dispatch(refreshTimeline('home'));
},
render () { render () {
return ( return (
<Column icon='home' heading='Home'> <Column icon='home' heading='Home'>
@ -16,4 +26,4 @@ const HomeTimeline = React.createClass({
}); });
export default HomeTimeline; export default connect()(HomeTimeline);

@ -1,11 +1,21 @@
import { connect } from 'react-redux';
import PureRenderMixin from 'react-addons-pure-render-mixin'; import PureRenderMixin from 'react-addons-pure-render-mixin';
import StatusListContainer from '../ui/containers/status_list_container'; import StatusListContainer from '../ui/containers/status_list_container';
import Column from '../ui/components/column'; import Column from '../ui/components/column';
import { refreshTimeline } from '../../actions/timelines';
const MentionsTimeline = React.createClass({ const MentionsTimeline = React.createClass({
propTypes: {
dispatch: React.PropTypes.func.isRequired
},
mixins: [PureRenderMixin], mixins: [PureRenderMixin],
componentWillMount () {
this.props.dispatch(refreshTimeline('mentions'));
},
render () { render () {
return ( return (
<Column icon='at' heading='Mentions'> <Column icon='at' heading='Mentions'>
@ -16,4 +26,4 @@ const MentionsTimeline = React.createClass({
}); });
export default MentionsTimeline; export default connect()(MentionsTimeline);

@ -9,6 +9,10 @@ import {
const PublicTimeline = React.createClass({ const PublicTimeline = React.createClass({
propTypes: {
dispatch: React.PropTypes.func.isRequired
},
mixins: [PureRenderMixin], mixins: [PureRenderMixin],
componentWillMount () { componentWillMount () {

@ -2,13 +2,7 @@ module HomeHelper
def default_props def default_props
{ {
token: @token, token: @token,
account: render(file: 'api/v1/accounts/show', locals: { account: current_user.account }, formats: :json)
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)
}
} }
end end
end end

Loading…
Cancel
Save