Browse Source

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
closed-social-glitch-2
Eugen Rochko 7 years ago
parent
commit
f0f791bb76
5 changed files with 27 additions and 15 deletions
  1. +0
    -6
      app/assets/javascripts/components/containers/mastodon.jsx
  2. +11
    -1
      app/assets/javascripts/components/features/home_timeline/index.jsx
  3. +11
    -1
      app/assets/javascripts/components/features/mentions_timeline/index.jsx
  4. +4
    -0
      app/assets/javascripts/components/features/public_timeline/index.jsx
  5. +1
    -7
      app/helpers/home_helper.rb

+ 0
- 6
app/assets/javascripts/components/containers/mastodon.jsx View File

@ -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', {

+ 11
- 1
app/assets/javascripts/components/features/home_timeline/index.jsx View File

@ -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);

+ 11
- 1
app/assets/javascripts/components/features/mentions_timeline/index.jsx View File

@ -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);

+ 4
- 0
app/assets/javascripts/components/features/public_timeline/index.jsx View File

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

+ 1
- 7
app/helpers/home_helper.rb View File

@ -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

Loading…
Cancel
Save