From 55ba27ada1913c21137be7dd41be7b0fd3ef2852 Mon Sep 17 00:00:00 2001 From: morethanwords Date: Fri, 16 Oct 2020 13:08:28 +0300 Subject: [PATCH] Fix preloader overflow on uploading video --- src/components/preloader.ts | 6 +++--- src/components/wrappers.ts | 11 ++++++----- src/lib/appManagers/appMessagesManager.ts | 4 ++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/components/preloader.ts b/src/components/preloader.ts index d1f58fe4..6bc8e3b8 100644 --- a/src/components/preloader.ts +++ b/src/components/preloader.ts @@ -10,7 +10,7 @@ export default class ProgressivePreloader { private promise: CancellablePromise = null; - constructor(elem?: Element, private cancelable = true, streamable = false) { + constructor(elem?: Element, private cancelable = true, streamable = false, private attachMethod: 'append' | 'prepend' = 'append') { this.preloader = document.createElement('div'); this.preloader.classList.add('preloader-container'); @@ -89,7 +89,7 @@ export default class ProgressivePreloader { } } - public attach(elem: Element, reset = true, promise?: CancellablePromise, append = true) { + public attach(elem: Element, reset = true, promise?: CancellablePromise) { if(promise/* && false */) { this.attachPromise(promise); } @@ -99,7 +99,7 @@ export default class ProgressivePreloader { if(this.detached) return; this.detached = false; - elem[append ? 'append' : 'prepend'](this.preloader); + elem[this.attachMethod](this.preloader); if(this.cancelable && reset) { this.setProgress(0); diff --git a/src/components/wrappers.ts b/src/components/wrappers.ts index 2d78984e..99464194 100644 --- a/src/components/wrappers.ts +++ b/src/components/wrappers.ts @@ -186,11 +186,11 @@ export function wrapVideo({doc, container, message, boxWidth, boxHeight, withTai let preloader: ProgressivePreloader; if(message?.media?.preloader) { // means upload preloader = message.media.preloader as ProgressivePreloader; - preloader.attach(container, undefined, undefined, true); + preloader.attach(container, undefined, undefined); } else if(!doc.downloaded && !doc.supportsStreaming) { const promise = appDocsManager.downloadDocNew(doc); - preloader = new ProgressivePreloader(container, true); - preloader.attach(container, true, promise, true); + preloader = new ProgressivePreloader(null, true, false, 'prepend'); + preloader.attach(container, true, promise); /* video.addEventListener('canplay', () => { if(preloader) { @@ -200,7 +200,8 @@ export function wrapVideo({doc, container, message, boxWidth, boxHeight, withTai await promise; } else if(doc.supportsStreaming) { - preloader = new ProgressivePreloader(container, false); + preloader = new ProgressivePreloader(null, false, false, 'prepend'); + preloader.attach(container, false, null); video.addEventListener('canplay', () => { preloader.detach(); }, {once: true}); @@ -478,7 +479,7 @@ export function wrapPhoto(photo: MyPhoto | MyDocument, message: any, container: if(message?.media?.preloader) { // means upload message.media.preloader.attach(container); } else if(!cacheContext.downloaded) { - preloader = new ProgressivePreloader(container, false); + preloader = new ProgressivePreloader(container, false, false, photo._ == 'document' ? 'prepend' : 'append'); } const load = () => { diff --git a/src/lib/appManagers/appMessagesManager.ts b/src/lib/appManagers/appMessagesManager.ts index 57061bf8..17895aa2 100644 --- a/src/lib/appManagers/appMessagesManager.ts +++ b/src/lib/appManagers/appMessagesManager.ts @@ -1115,7 +1115,7 @@ export class AppMessagesManager { flags |= 256; } - const preloader = new ProgressivePreloader(null, true); + const preloader = new ProgressivePreloader(null, true, false, 'prepend'); const media = { _: 'messageMediaPending', @@ -1346,7 +1346,7 @@ export class AppMessagesManager { let messageID = ids[idx]; let randomID = [nextRandomInt(0xFFFFFFFF), nextRandomInt(0xFFFFFFFF)]; let randomIDS = bigint(randomID[0]).shiftLeft(32).add(bigint(randomID[1])).toString(); - let preloader = new ProgressivePreloader(null, true); + let preloader = new ProgressivePreloader(null, true, false, 'prepend'); let details = options.sendFileDetails[idx];