about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2016-10-16 19:23:17 +0200
committerEugen Rochko <eugen@zeonfederated.com>2016-10-16 19:23:17 +0200
commitf0f791bb76bbe1e8ea4329b3c5ebcbb9f7076b0d (patch)
tree266a5d59f806822914fb8e66aad4b9771376842e
parent0895ff414e73212e23c3d680846b5b8b7666bdfd (diff)
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
-rw-r--r--app/assets/javascripts/components/containers/mastodon.jsx6
-rw-r--r--app/assets/javascripts/components/features/home_timeline/index.jsx12
-rw-r--r--app/assets/javascripts/components/features/mentions_timeline/index.jsx12
-rw-r--r--app/assets/javascripts/components/features/public_timeline/index.jsx4
-rw-r--r--app/helpers/home_helper.rb8
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
index 1327dba3e..e5c0887a9 100644
--- 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
index 1f4b25450..9be3f3964 100644
--- 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
index d9d0963d0..a1b511d3e 100644
--- 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
index 7d3739214..8b2a86947 100644
--- 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
index 6b5151777..86cce4c01 100644
--- 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