@@ -17,6 +17,7 @@ limitations under the License.
1717var Matrix = require ( "matrix-js-sdk" ) ;
1818var MatrixClientPeg = require ( "matrix-react-sdk/lib/MatrixClientPeg" ) ;
1919var React = require ( "react" ) ;
20+ var ReactDOM = require ( "react-dom" ) ;
2021var q = require ( "q" ) ;
2122var ContentMessages = require ( "matrix-react-sdk/lib//ContentMessages" ) ;
2223var WhoIsTyping = require ( "matrix-react-sdk/lib/WhoIsTyping" ) ;
@@ -60,7 +61,7 @@ module.exports = {
6061
6162 componentWillUnmount : function ( ) {
6263 if ( this . refs . messageWrapper ) {
63- var messageWrapper = this . refs . messageWrapper ;
64+ var messageWrapper = ReactDOM . findDOMNode ( this . refs . messageWrapper ) ;
6465 messageWrapper . removeEventListener ( 'drop' , this . onDrop ) ;
6566 messageWrapper . removeEventListener ( 'dragover' , this . onDragOver ) ;
6667 messageWrapper . removeEventListener ( 'dragleave' , this . onDragLeaveOrEnd ) ;
@@ -99,7 +100,8 @@ module.exports = {
99100 // scroll to bottom
100101 var messageWrapper = this . refs . messageWrapper ;
101102 if ( messageWrapper ) {
102- messageWrapper . scrollTop = messageWrapper . scrollHeight ;
103+ var messageWrapperScroll = ReactDOM . findDOMNode ( messageWrapper ) . children [ 2 ] ;
104+ messageWrapperScroll . scrollTop = messageWrapperScroll . scrollHeight ;
103105 }
104106 }
105107
@@ -125,7 +127,7 @@ module.exports = {
125127 onRoomTimeline : function ( ev , room , toStartOfTimeline ) {
126128 if ( ! this . isMounted ( ) ) return ;
127129
128- // ignore anything that comes in whilst pagingating : we get one
130+ // ignore anything that comes in whilst paginating : we get one
129131 // event for each new matrix event so this would cause a huge
130132 // number of UI updates. Just update the UI when the paginate
131133 // call returns.
@@ -137,10 +139,10 @@ module.exports = {
137139 if ( room . roomId != this . props . roomId ) return ;
138140
139141 if ( this . refs . messageWrapper ) {
140- var messageWrapper = this . refs . messageWrapper ;
142+ var messageWrapperScroll = ReactDOM . findDOMNode ( this . refs . messageWrapper ) . children [ 2 ] ;
141143 this . atBottom = (
142- messageWrapper . scrollHeight - messageWrapper . scrollTop <=
143- ( messageWrapper . clientHeight + 150 )
144+ messageWrapperScroll . scrollHeight - messageWrapperScroll . scrollTop <=
145+ ( messageWrapperScroll . clientHeight + 150 )
144146 ) ;
145147 }
146148
@@ -224,14 +226,16 @@ module.exports = {
224226
225227 componentDidMount : function ( ) {
226228 if ( this . refs . messageWrapper ) {
227- var messageWrapper = this . refs . messageWrapper ;
229+ var messageWrapper = ReactDOM . findDOMNode ( this . refs . messageWrapper ) ;
228230
229231 messageWrapper . addEventListener ( 'drop' , this . onDrop ) ;
230232 messageWrapper . addEventListener ( 'dragover' , this . onDragOver ) ;
231233 messageWrapper . addEventListener ( 'dragleave' , this . onDragLeaveOrEnd ) ;
232234 messageWrapper . addEventListener ( 'dragend' , this . onDragLeaveOrEnd ) ;
233235
234- messageWrapper . scrollTop = messageWrapper . scrollHeight ;
236+ var messageWrapperScroll = messageWrapper . children [ 2 ] ;
237+
238+ messageWrapperScroll . scrollTop = messageWrapperScroll . scrollHeight ;
235239
236240 this . fillSpace ( ) ;
237241 }
@@ -242,17 +246,17 @@ module.exports = {
242246 componentDidUpdate : function ( ) {
243247 if ( ! this . refs . messageWrapper ) return ;
244248
245- var messageWrapper = this . refs . messageWrapper ;
249+ var messageWrapperScroll = ReactDOM . findDOMNode ( this . refs . messageWrapper ) . children [ 2 ] ;
246250
247251 if ( this . state . paginating && ! this . waiting_for_paginate ) {
248- var heightGained = messageWrapper . scrollHeight - this . oldScrollHeight ;
249- messageWrapper . scrollTop += heightGained ;
252+ var heightGained = messageWrapperScroll . scrollHeight - this . oldScrollHeight ;
253+ messageWrapperScroll . scrollTop += heightGained ;
250254 this . oldScrollHeight = undefined ;
251255 if ( ! this . fillSpace ( ) ) {
252256 this . setState ( { paginating : false } ) ;
253257 }
254258 } else if ( this . atBottom ) {
255- messageWrapper . scrollTop = messageWrapper . scrollHeight ;
259+ messageWrapperScroll . scrollTop = messageWrapperScroll . scrollHeight ;
256260 if ( this . state . numUnreadMessages !== 0 ) {
257261 this . setState ( { numUnreadMessages : 0 } ) ;
258262 }
@@ -261,11 +265,11 @@ module.exports = {
261265
262266 fillSpace : function ( ) {
263267 if ( ! this . refs . messageWrapper ) return ;
264- var messageWrapper = this . refs . messageWrapper ;
265- if ( messageWrapper . scrollTop < messageWrapper . clientHeight && this . state . room . oldState . paginationToken ) {
268+ var messageWrapperScroll = ReactDOM . findDOMNode ( this . refs . messageWrapper ) . children [ 2 ] ;
269+ if ( messageWrapperScroll . scrollTop < messageWrapperScroll . clientHeight && this . state . room . oldState . paginationToken ) {
266270 this . setState ( { paginating : true } ) ;
267271
268- this . oldScrollHeight = messageWrapper . scrollHeight ;
272+ this . oldScrollHeight = messageWrapperScroll . scrollHeight ;
269273
270274 if ( this . state . messageCap < this . state . room . timeline . length ) {
271275 this . waiting_for_paginate = false ;
@@ -319,9 +323,9 @@ module.exports = {
319323
320324 onMessageListScroll : function ( ev ) {
321325 if ( this . refs . messageWrapper ) {
322- var messageWrapper = this . refs . messageWrapper ;
326+ var messageWrapperScroll = ReactDOM . findDOMNode ( this . refs . messageWrapper ) . children [ 2 ] ;
323327 var wasAtBottom = this . atBottom ;
324- this . atBottom = messageWrapper . scrollHeight - messageWrapper . scrollTop <= messageWrapper . clientHeight ;
328+ this . atBottom = messageWrapperScroll . scrollHeight - messageWrapperScroll . scrollTop <= messageWrapperScroll . clientHeight ;
325329 if ( this . atBottom && ! wasAtBottom ) {
326330 this . forceUpdate ( ) ; // remove unread msg count
327331 }
0 commit comments