about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2016-11-07 02:02:55 +0100
committerEugen Rochko <eugen@zeonfederated.com>2016-11-07 02:02:55 +0100
commit4a6cc46e8146ed65ad18e5b039993eda8cf26cce (patch)
tree5975c4fe232f0972de68656e9f00076e8d0d2344
parent23fc424b7aea139a0aff5cd347f46c81e50c2c56 (diff)
Keep scroll position when scrolled down and new content is added
-rw-r--r--app/assets/javascripts/components/components/status_list.jsx12
1 files changed, 12 insertions, 0 deletions
diff --git a/app/assets/javascripts/components/components/status_list.jsx b/app/assets/javascripts/components/components/status_list.jsx
index 488d42dba..633f06816 100644
--- a/app/assets/javascripts/components/components/status_list.jsx
+++ b/app/assets/javascripts/components/components/status_list.jsx
@@ -38,11 +38,23 @@ const StatusList = React.createClass({
   handleScroll (e) {
     const { scrollTop, scrollHeight, clientHeight } = e.target;
 
+    this._oldScrollPosition = scrollHeight - scrollTop;
+
     if (scrollTop === scrollHeight - clientHeight) {
       this.props.onScrollToBottom();
     }
   },
 
+  componentDidUpdate (prevProps) {
+    if (prevProps.statusIds.size < this.props.statusIds.size && this._oldScrollPosition) {
+      const node = ReactDOM.findDOMNode(this);
+
+      if (node.scrollTop > 0) {
+        node.scrollTop = node.scrollHeight - this._oldScrollPosition;
+      }
+    }
+  },
+
   render () {
     const { statusIds, onScrollToBottom, trackScroll } = this.props;