From 3144026fbaca394d84d5f10cb2360467bfed24a8 Mon Sep 17 00:00:00 2001 From: Eduard Kuzmenko Date: Sun, 26 Jun 2022 21:41:43 +0200 Subject: [PATCH] Fix spoiler link click Fix attaching preloader to video Fix displaying chat avatars Fix contextmenu color in popups --- src/components/appMediaViewerBase.ts | 26 +++++++++++++---------- src/lib/appManagers/appDownloadManager.ts | 3 --- src/lib/appManagers/appManagersManager.ts | 8 +------ src/lib/appManagers/appMessagesManager.ts | 8 ++++--- src/lib/appManagers/createManagers.ts | 24 ++++++++++++++++----- src/lib/appManagers/manager.ts | 7 +----- src/lib/mtproto/apiFileManager.ts | 1 + src/lib/mtproto/apiManager.ts | 4 ++-- src/lib/storages/peers.ts | 2 +- src/scss/partials/_spoiler.scss | 4 ++++ src/scss/style.scss | 3 ++- 11 files changed, 51 insertions(+), 39 deletions(-) diff --git a/src/components/appMediaViewerBase.ts b/src/components/appMediaViewerBase.ts index f2425feb..14b2adac 100644 --- a/src/components/appMediaViewerBase.ts +++ b/src/components/appMediaViewerBase.ts @@ -1374,16 +1374,6 @@ export default class AppMediaViewerBase< } }); - video.addEventListener('error', () => { - if(video.error.code !== 4) { - this.log.error("Error " + video.error.code + "; details: " + video.error.message); - } - - if(preloader) { - preloader.detach(); - } - }, {once: true}); - this.addEventListener('setMoverAfter', () => { video.src = ''; video.load(); @@ -1491,6 +1481,7 @@ export default class AppMediaViewerBase< if(supportsStreaming) { onAnimationEnd.then(() => { if(video.readyState < video.HAVE_FUTURE_DATA) { + console.log('ppp 1'); preloader.attach(mover, true); } @@ -1501,7 +1492,7 @@ export default class AppMediaViewerBase< const attachCanPlay = () => { video.addEventListener('canplay', () => { - //this.log('video waited and progress loaded'); + console.log('ppp 2'); preloader.detach(); video.parentElement.classList.remove('is-buffering'); }, {once: true}); @@ -1515,6 +1506,7 @@ export default class AppMediaViewerBase< if(loading && isntEnoughData) { attachCanPlay(); + console.log('ppp 3'); preloader.attach(mover, true); // поставлю класс для плеера, чтобы убрать большую иконку пока прелоадер на месте @@ -1542,6 +1534,7 @@ export default class AppMediaViewerBase< if(!supportsStreaming) { onAnimationEnd.then(async() => { if(!(await getCacheContext()).url) { + console.log('ppp 4'); preloader.attach(mover, true, promise); } }); @@ -1554,6 +1547,17 @@ export default class AppMediaViewerBase< } const url = (await getCacheContext()).url; + + video.addEventListener('error', () => { + if(video.error.code !== 4) { + this.log.error("Error " + video.error.code + "; details: " + video.error.message); + } + + if(preloader) { + preloader.detach(); + } + }, {once: true}); + if(target instanceof SVGSVGElement/* && (video.parentElement || !isSafari) */) { // if video exists //if(!video.parentElement) { div.firstElementChild.lastElementChild.append(video); diff --git a/src/lib/appManagers/appDownloadManager.ts b/src/lib/appManagers/appDownloadManager.ts index 3581c1dc..79ef1679 100644 --- a/src/lib/appManagers/appDownloadManager.ts +++ b/src/lib/appManagers/appDownloadManager.ts @@ -159,9 +159,6 @@ export class AppDownloadManager { public downloadMedia(options: DownloadMediaOptions, type: DownloadType = 'blob'): DownloadBlob { const {downloadOptions, fileName} = getDownloadMediaDetails(options); - if(fileName === 'document_5307720352468571676') { - debugger; - } return this.d(fileName, () => { const cb = type === 'url' ? this.managers.apiFileManager.downloadMediaURL : (type === 'void' ? this.managers.apiFileManager.downloadMediaVoid : this.managers.apiFileManager.downloadMedia); diff --git a/src/lib/appManagers/appManagersManager.ts b/src/lib/appManagers/appManagersManager.ts index 0af831de..cc585697 100644 --- a/src/lib/appManagers/appManagersManager.ts +++ b/src/lib/appManagers/appManagersManager.ts @@ -58,13 +58,7 @@ export class AppManagersManager { this.cryptoPortPromise ]); - const managers = await createManagers(appStoragesManager); - - // костыль - if(appStateManager.userId) { - managers.apiManager.setUserAuth(appStateManager.userId); - } - + const managers = await createManagers(appStoragesManager, appStateManager.userId); return this.managers = managers; } diff --git a/src/lib/appManagers/appMessagesManager.ts b/src/lib/appManagers/appMessagesManager.ts index 4b2354d7..3dba9d0b 100644 --- a/src/lib/appManagers/appMessagesManager.ts +++ b/src/lib/appManagers/appMessagesManager.ts @@ -2634,7 +2634,9 @@ export class AppMessagesManager extends AppManager { message.reply_to.reply_to_msg_id = message.reply_to_mid = generateMessageId(message.reply_to.reply_to_msg_id); } - if(message.reply_to.reply_to_top_id) message.reply_to.reply_to_top_id = generateMessageId(message.reply_to.reply_to_top_id); + if(message.reply_to.reply_to_top_id) { + message.reply_to.reply_to_top_id = generateMessageId(message.reply_to.reply_to_top_id); + } } const replies = isMessage && message.replies; @@ -2649,9 +2651,9 @@ export class AppMessagesManager extends AppManager { } //storage.generateIndex(message); - const myId = this.appUsersManager.getSelf().id.toPeerId(); + const myId = this.appPeersManager.peerId; - const fwdHeader = isMessage && (message as Message.message).fwd_from as MessageFwdHeader; + const fwdHeader = isMessage && (message as Message.message).fwd_from; message.peerId = peerId; if(peerId === myId/* && !message.from_id && !message.fwd_from */) { diff --git a/src/lib/appManagers/createManagers.ts b/src/lib/appManagers/createManagers.ts index 1e4601a5..b485c610 100644 --- a/src/lib/appManagers/createManagers.ts +++ b/src/lib/appManagers/createManagers.ts @@ -42,8 +42,9 @@ import { TimeManager } from "../mtproto/timeManager"; import { AppStoragesManager } from "./appStoragesManager"; import cryptoMessagePort from "../crypto/cryptoMessagePort"; import appStateManager from "./appStateManager"; +import filterUnique from "../../helpers/array/filterUnique"; -export default function createManagers(appStoragesManager: AppStoragesManager) { +export default function createManagers(appStoragesManager: AppStoragesManager, userId: UserId) { const managers = { appPeersManager: new AppPeersManager, appChatsManager: new AppChatsManager, @@ -101,13 +102,26 @@ export default function createManagers(appStoragesManager: AppStoragesManager) { ctx[name] = manager; } - const promises: Array | void>[] = []; - for(const name in managers) { - const manager = managers[name as keyof T]; + if(userId) { + managers.apiManager.setUserAuth(userId); + } + + const promises: Array void) | void> | void>[] = []; + let names = Object.keys(managers) as (keyof T)[]; + names.unshift('appUsersManager', 'appChatsManager', 'appMessagesManager', 'dialogsStorage'); + names = filterUnique(names); + for(const name of names) { + const manager = managers[name]; if((manager as any)?.after) { + // console.log('injecting after', name); const result = (manager as any).after(); promises.push(result); - delete (manager as any).after; + + // if(result instanceof Promise) { + // result.then(() => { + // console.log('injected after', name); + // }); + // } } } diff --git a/src/lib/appManagers/manager.ts b/src/lib/appManagers/manager.ts index 84d76634..a9a177fb 100644 --- a/src/lib/appManagers/manager.ts +++ b/src/lib/appManagers/manager.ts @@ -89,9 +89,4 @@ export class AppManager { Object.assign(this, managers); // this.after(); } - - protected after(): Promise | void { - - } - -} \ No newline at end of file +} diff --git a/src/lib/mtproto/apiFileManager.ts b/src/lib/mtproto/apiFileManager.ts index 71ad8e43..c1d42aa2 100644 --- a/src/lib/mtproto/apiFileManager.ts +++ b/src/lib/mtproto/apiFileManager.ts @@ -33,6 +33,7 @@ import getFileNameForUpload from "../../helpers/getFileNameForUpload"; import type { Progress } from "../appManagers/appDownloadManager"; import getDownloadMediaDetails from "../appManagers/utils/download/getDownloadMediaDetails"; import networkStats from "./networkStats"; +import pause from "../../helpers/schedulers/pause"; type Delayed = { offset: number, diff --git a/src/lib/mtproto/apiManager.ts b/src/lib/mtproto/apiManager.ts index b39316c8..283073c5 100644 --- a/src/lib/mtproto/apiManager.ts +++ b/src/lib/mtproto/apiManager.ts @@ -242,6 +242,8 @@ export class ApiManager extends ApiManagerMethods { userAuth = {dcID: 0, date: Date.now() / 1000 | 0, id: userAuth.toPeerId(false)}; } + this.rootScope.dispatchEvent('user_auth', userAuth); + if(!userAuth.dcID) { const baseDcId = await this.getBaseDcId(); userAuth.dcID = baseDcId; @@ -252,8 +254,6 @@ export class ApiManager extends ApiManagerMethods { }); //this.telegramMeNotify(true); - - this.rootScope.dispatchEvent('user_auth', userAuth); } public setBaseDcId(dcId: DcId) { diff --git a/src/lib/storages/peers.ts b/src/lib/storages/peers.ts index f888d0bd..b501fdcf 100644 --- a/src/lib/storages/peers.ts +++ b/src/lib/storages/peers.ts @@ -22,7 +22,7 @@ class PeersStorage { protected after() { this.rootScope.addEventListener('user_auth', () => { - this.requestPeer(this.appUsersManager.userId.toPeerId(), 'self'); + this.requestPeer(this.appPeersManager.peerId, 'self'); }); } diff --git a/src/scss/partials/_spoiler.scss b/src/scss/partials/_spoiler.scss index 6745eef8..38b4b79d 100644 --- a/src/scss/partials/_spoiler.scss +++ b/src/scss/partials/_spoiler.scss @@ -67,6 +67,10 @@ &:not(.is-spoiler-visible) { .spoiler { cursor: pointer; + + &-text { + pointer-events: none; + } } } } diff --git a/src/scss/style.scss b/src/scss/style.scss index 918d8e24..e5a26d5d 100644 --- a/src/scss/style.scss +++ b/src/scss/style.scss @@ -94,7 +94,6 @@ $chat-input-inner-padding-handhelds: .25rem; --disabled-opacity: .3; --round-video-size: 280px; --menu-box-shadow: 0px 0px 10px var(--menu-box-shadow-color); - --menu-background-color: rgba(var(--surface-color-rgb), .75); --menu-backdrop-filter: blur(50px); --font-monospace: 'Roboto Mono', monospace; --font-weight-bold: 500; @@ -208,6 +207,7 @@ $chat-input-inner-padding-handhelds: .25rem; --spoiler-background-color: #e3e5e8; --spoiler-draft-background-color: #d9d9d9; --monospace-text-color: var(--danger-color); + --menu-background-color: rgba(var(--surface-color-rgb), .75); --message-background-color: var(--surface-color); --message-checkbox-color: #61c642; @@ -281,6 +281,7 @@ $chat-input-inner-padding-handhelds: .25rem; --spoiler-background-color: #373e4e; --spoiler-draft-background-color: #484848; --monospace-text-color: var(--primary-text-color); + --menu-background-color: rgba(var(--surface-color-rgb), .75); --message-background-color: var(--surface-color); --message-checkbox-color: var(--primary-color);