diff options
| author | HJ <30-hj@users.noreply.git.pleroma.social> | 2022-08-09 21:31:18 +0000 |
|---|---|---|
| committer | HJ <30-hj@users.noreply.git.pleroma.social> | 2022-08-09 21:31:18 +0000 |
| commit | 2867c696293a96375f60898e10d7a702f60855c5 (patch) | |
| tree | bd83574d1d2dbd95ebad4e75f5d452112f04f9c9 | |
| parent | 346e8061532c9f5836619e617c1cca8ce7301d9f (diff) | |
| parent | a4f40bf3463d099d97d9581a7179d648c9aafa00 (diff) | |
Merge branch 'fix-chat-scroll' into 'develop'
fix chat scroll acting unwise
Closes #1178
See merge request pleroma/pleroma-fe!1587
| -rw-r--r-- | src/components/chat/chat.js | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/components/chat/chat.js b/src/components/chat/chat.js index 5a5c37b6..79f24771 100644 --- a/src/components/chat/chat.js +++ b/src/components/chat/chat.js @@ -57,6 +57,7 @@ const Chat = { }, unmounted () { window.removeEventListener('scroll', this.handleScroll) + window.removeEventListener('resize', this.handleResize) if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false) this.$store.dispatch('clearCurrentChat') }, @@ -135,7 +136,7 @@ const Chat = { }, // "Sticks" scroll to bottom instead of top, helps with OSK resizing the viewport handleResize (opts = {}) { - const { expand = false, delayed = false } = opts + const { delayed = false } = opts if (delayed) { setTimeout(() => { @@ -146,10 +147,10 @@ const Chat = { this.$nextTick(() => { const { offsetHeight = undefined } = getScrollPosition() - const diff = this.lastScrollPosition.offsetHeight - offsetHeight - if (diff !== 0 || (!this.bottomedOut() && expand)) { + const diff = offsetHeight - this.lastScrollPosition.offsetHeight + if (diff !== 0 && !this.bottomedOut()) { this.$nextTick(() => { - window.scrollTo({ top: window.scrollY + diff }) + window.scrollBy({ top: -Math.trunc(diff) }) }) } this.lastScrollPosition = getScrollPosition() @@ -187,6 +188,7 @@ const Chat = { }, 5000) }, handleScroll: _.throttle(function () { + this.lastScrollPosition = getScrollPosition() if (!this.currentChat) { return } if (this.reachedTop()) { |
