From 4a6cc46e8146ed65ad18e5b039993eda8cf26cce Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 7 Nov 2016 02:02:55 +0100 Subject: [PATCH] Keep scroll position when scrolled down and new content is added --- .../components/components/status_list.jsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/assets/javascripts/components/components/status_list.jsx b/app/assets/javascripts/components/components/status_list.jsx index 488d42dbab5..633f068168d 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;