From 4782a02a3ce1e20ce1298db06278ec310bb0046a Mon Sep 17 00:00:00 2001 From: Eduard Kuzmenko Date: Tue, 5 Apr 2022 22:13:51 +0300 Subject: [PATCH] some fixes --- src/components/appSearchSuper..ts | 9 +++++++-- src/components/chat/bubbles.ts | 1 + src/components/sidebarRight/tabs/sharedMedia.ts | 9 ++++++++- src/lib/mtproto/apiManager.ts | 2 +- src/lib/mtproto/dcConfigurator.ts | 5 ++++- src/lib/mtproto/networker.ts | 10 ++++++++-- 6 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/components/appSearchSuper..ts b/src/components/appSearchSuper..ts index ca4adfdf..7ea5a275 100644 --- a/src/components/appSearchSuper..ts +++ b/src/components/appSearchSuper..ts @@ -55,6 +55,7 @@ import safeAssign from "../helpers/object/safeAssign"; import escapeRegExp from "../helpers/string/escapeRegExp"; import limitSymbols from "../helpers/string/limitSymbols"; import findAndSplice from "../helpers/array/findAndSplice"; +import { ScrollStartCallbackDimensions } from "../helpers/fastSmoothScroll"; //const testScroll = false; @@ -297,6 +298,8 @@ export default class AppSearchSuper { private searchContextMenu: SearchContextMenu; public selection: SearchSelection; + public scrollStartCallback: (dimensions: ScrollStartCallbackDimensions) => void; + constructor(options: Pick) { safeAssign(this, options); @@ -407,7 +410,8 @@ export default class AppSearchSuper { if(this.prevTabId === id && !this.skipScroll) { this.scrollable.scrollIntoViewNew({ element: this.container, - position: 'start' + position: 'start', + startCallback: this.scrollStartCallback }); return; } @@ -432,7 +436,8 @@ export default class AppSearchSuper { if(scrollTop < offsetTop) { this.scrollable.scrollIntoViewNew({ element: this.container, - position: 'start' + position: 'start', + startCallback: this.scrollStartCallback }); scrollTop = offsetTop; } diff --git a/src/components/chat/bubbles.ts b/src/components/chat/bubbles.ts index 886c4b17..0317d43a 100644 --- a/src/components/chat/bubbles.ts +++ b/src/components/chat/bubbles.ts @@ -2377,6 +2377,7 @@ export default class ChatBubbles { if(!peerId) { this.cleanup(true); this.peerId = peerId; + this.preloader.detach(); return null; } diff --git a/src/components/sidebarRight/tabs/sharedMedia.ts b/src/components/sidebarRight/tabs/sharedMedia.ts index 958589e3..38921c97 100644 --- a/src/components/sidebarRight/tabs/sharedMedia.ts +++ b/src/components/sidebarRight/tabs/sharedMedia.ts @@ -98,7 +98,10 @@ export default class AppSharedMediaTab extends SliderSuperTab { if(!rect.width) return; const top = rect.top - 1; - const isSharedMedia = top <= HEADER_HEIGHT; + setIsSharedMedia(top <= HEADER_HEIGHT); + }; + + const setIsSharedMedia = (isSharedMedia: boolean) => { animatedCloseIcon.classList.toggle('state-back', isSharedMedia); this.searchSuper.container.classList.toggle('is-full-viewport', isSharedMedia); transition(+isSharedMedia); @@ -208,6 +211,10 @@ export default class AppSharedMediaTab extends SliderSuperTab { } }); + this.searchSuper.scrollStartCallback = () => { + setIsSharedMedia(true); + }; + this.profile.element.append(this.searchSuper.container); const btnAddMembers = ButtonCorner({icon: 'addmember_filled'}); diff --git a/src/lib/mtproto/apiManager.ts b/src/lib/mtproto/apiManager.ts index eab8ca0b..63f415f2 100644 --- a/src/lib/mtproto/apiManager.ts +++ b/src/lib/mtproto/apiManager.ts @@ -32,6 +32,7 @@ import Modes from '../../config/modes'; import bytesFromHex from '../../helpers/bytes/bytesFromHex'; import bytesToHex from '../../helpers/bytes/bytesToHex'; import isObject from '../../helpers/object/isObject'; +import { pause } from '../../helpers/schedulers/pause'; /// #if !MTPROTO_WORKER import rootScope from '../rootScope'; @@ -40,7 +41,6 @@ import rootScope from '../rootScope'; /// #if MTPROTO_AUTO import transportController from './transports/controller'; import MTTransport from './transports/transport'; -import { pause } from '../../helpers/schedulers/pause'; /// #endif /* var networker = apiManager.cachedNetworkers.websocket.upload[2]; diff --git a/src/lib/mtproto/dcConfigurator.ts b/src/lib/mtproto/dcConfigurator.ts index 9f398436..6f29dd18 100644 --- a/src/lib/mtproto/dcConfigurator.ts +++ b/src/lib/mtproto/dcConfigurator.ts @@ -13,6 +13,7 @@ import MTTransport, { MTConnectionConstructable } from './transports/transport'; import Modes from '../../config/modes'; import App from '../../config/app'; import indexOfAndSplice from '../../helpers/array/indexOfAndSplice'; +import { MOUNT_CLASS_TO } from '../../config/debug'; /// #if MTPROTO_HAS_HTTP import HTTP from './transports/http'; @@ -162,4 +163,6 @@ export class DcConfigurator { } } -export default new DcConfigurator(); +const dcConfigurator = new DcConfigurator(); +MOUNT_CLASS_TO && (MOUNT_CLASS_TO.dcConfigurator = dcConfigurator); +export default dcConfigurator; diff --git a/src/lib/mtproto/networker.ts b/src/lib/mtproto/networker.ts index 8ec148a0..ff59da36 100644 --- a/src/lib/mtproto/networker.ts +++ b/src/lib/mtproto/networker.ts @@ -1644,7 +1644,9 @@ export default class MTPNetworker { } */ private applyServerTime(messageId: string) { - return timeManager.applyServerTime(bigInt(messageId).shiftRight(32).toJSNumber()); + const serverTime = bigInt(messageId).shiftRight(32).toJSNumber(); + this.log('applying server time', serverTime); + return timeManager.applyServerTime(serverTime); } // * https://core.telegram.org/mtproto/service_messages_about_messages#notice-of-ignored-error-message @@ -1717,7 +1719,11 @@ export default class MTPNetworker { case 32: // * msg_seqno too low case 33: // * msg_seqno too high case 64: { // * invalid container - if(message.error_code === 17 || changedTimeOffset) { + if(changedTimeOffset === undefined) { + this.applyServerTime(messageId); + } + + if(message.error_code === 17) { this.log('Update session'); this.updateSession(); }