fix issue with scrolling on image preview

This commit is contained in:
or-else
2020-05-10 12:53:50 +03:00
parent 3410128d6f
commit c9d05642e2
5 changed files with 10 additions and 3 deletions
+3
View File
@@ -113,8 +113,10 @@ class MessagesView extends React.Component {
componentDidUpdate(prevProps, prevState) { componentDidUpdate(prevProps, prevState) {
if (this.messagesScroller) { if (this.messagesScroller) {
if (prevState.topic != this.state.topic || prevState.messages.length != this.state.messages.length) { if (prevState.topic != this.state.topic || prevState.messages.length != this.state.messages.length) {
// New message
this.messagesScroller.scrollTop = this.messagesScroller.scrollHeight - this.state.scrollPosition; this.messagesScroller.scrollTop = this.messagesScroller.scrollHeight - this.state.scrollPosition;
} else if (prevProps.viewportHeight > this.props.viewportHeight) { } else if (prevProps.viewportHeight > this.props.viewportHeight) {
// Componet changed height.
this.messagesScroller.scrollTop += prevProps.viewportHeight - this.props.viewportHeight; this.messagesScroller.scrollTop += prevProps.viewportHeight - this.props.viewportHeight;
} }
} }
@@ -332,6 +334,7 @@ class MessagesView extends React.Component {
if (node) { if (node) {
node.addEventListener('scroll', this.handleScrollEvent); node.addEventListener('scroll', this.handleScrollEvent);
this.messagesScroller = node; this.messagesScroller = node;
this.messagesScroller.scrollTop = this.messagesScroller.scrollHeight - this.state.scrollPosition;
} }
} }
+4
View File
@@ -2898,6 +2898,7 @@ function isPeerRestricted(acs) {
class MessagesView extends react__WEBPACK_IMPORTED_MODULE_0___default.a.Component { class MessagesView extends react__WEBPACK_IMPORTED_MODULE_0___default.a.Component {
constructor(props) { constructor(props) {
super(props); super(props);
console.log("Constructor call");
this.state = MessagesView.getDerivedStateFromProps(props, {}); this.state = MessagesView.getDerivedStateFromProps(props, {});
this.leave = this.leave.bind(this); this.leave = this.leave.bind(this);
this.sendImageAttachment = this.sendImageAttachment.bind(this); this.sendImageAttachment = this.sendImageAttachment.bind(this);
@@ -2927,12 +2928,14 @@ class MessagesView extends react__WEBPACK_IMPORTED_MODULE_0___default.a.Componen
componentDidMount() { componentDidMount() {
if (this.messagesScroller) { if (this.messagesScroller) {
console.log("componentDidMount addEventListener scroll");
this.messagesScroller.addEventListener('scroll', this.handleScrollEvent); this.messagesScroller.addEventListener('scroll', this.handleScrollEvent);
} }
} }
componentWillUnmount() { componentWillUnmount() {
if (this.messagesScroller) { if (this.messagesScroller) {
console.log("componentDidMount removeEventListener scroll");
this.messagesScroller.removeEventListener('scroll', this.handleScrollEvent); this.messagesScroller.removeEventListener('scroll', this.handleScrollEvent);
} }
@@ -3160,6 +3163,7 @@ class MessagesView extends react__WEBPACK_IMPORTED_MODULE_0___default.a.Componen
if (node) { if (node) {
node.addEventListener('scroll', this.handleScrollEvent); node.addEventListener('scroll', this.handleScrollEvent);
this.messagesScroller = node; this.messagesScroller = node;
this.messagesScroller.scrollTop = this.messagesScroller.scrollHeight - this.state.scrollPosition;
} }
} }
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long