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 statuses
Diffstat:
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