From c3b9cd8cf15c26370ddf7a18b7147ed9f3a9b4a8 Mon Sep 17 00:00:00 2001 From: morethanwords Date: Thu, 29 Oct 2020 23:18:02 +0200 Subject: [PATCH] Fix pinned container scrollTop --- src/components/chat/pinnedContainer.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/components/chat/pinnedContainer.ts b/src/components/chat/pinnedContainer.ts index b585dd32..7e9833a5 100644 --- a/src/components/chat/pinnedContainer.ts +++ b/src/components/chat/pinnedContainer.ts @@ -3,7 +3,7 @@ import appImManager from "../../lib/appManagers/appImManager"; import { cancelEvent } from "../../lib/utils"; import DivAndCaption from "../divAndCaption"; -const CLASSNAME_SHOWN_MAIN = 'is-pinned-message-shown'; +const classNames: string[] = []; const CLASSNAME_BASE = 'pinned-container'; const HEIGHT = 52; @@ -17,6 +17,8 @@ export default class PinnedContainer { prev(mid, title, subtitle); }; */ + classNames.push(`is-pinned-${className}-shown`); + divAndCaption.container.classList.add(CLASSNAME_BASE, 'hide'); divAndCaption.title.classList.add(CLASSNAME_BASE + '-title'); divAndCaption.subtitle.classList.add(CLASSNAME_BASE + '-subtitle'); @@ -45,11 +47,15 @@ export default class PinnedContainer { return; } - const scrollTop = mediaSizes.isMobile ? appImManager.scrollable.scrollTop : undefined; + const scrollTop = mediaSizes.isMobile /* && !appImManager.scrollable.isScrolledDown */ ? appImManager.scrollable.scrollTop : undefined; this.divAndCaption.container.classList.toggle('hide', hide); - appImManager.topbar.classList.toggle(`is-pinned-${this.className}-shown`, !hide); + const className = `is-pinned-${this.className}-shown`; + appImManager.topbar.classList.toggle(className, !hide); - if(scrollTop !== undefined && !appImManager.topbar.classList.contains(CLASSNAME_SHOWN_MAIN)) { + const active = classNames.filter(className => appImManager.topbar.classList.contains(className)); + const maxActive = hide ? 0 : 1; + + if(scrollTop !== undefined && active.length <= maxActive) { appImManager.scrollable.scrollTop = scrollTop + ((hide ? -1 : 1) * HEIGHT); } }