From bc4947b4867953f8c518b088ea94e04ee8b67a42 Mon Sep 17 00:00:00 2001 From: nick-delirium Date: Tue, 21 May 2024 11:14:01 +0200 Subject: [PATCH] fix ui: fix iframe node onload crash --- .../app/player/web/managers/DOM/StylesManager.ts | 6 ++++-- frontend/app/player/web/managers/DOM/VirtualDOM.ts | 12 ++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/frontend/app/player/web/managers/DOM/StylesManager.ts b/frontend/app/player/web/managers/DOM/StylesManager.ts index cfe121692..6fb0f3e7b 100644 --- a/frontend/app/player/web/managers/DOM/StylesManager.ts +++ b/frontend/app/player/web/managers/DOM/StylesManager.ts @@ -1,5 +1,6 @@ import type Screen from '../../Screen/Screen'; import { replaceCSSPseudoclasses } from '../../messages/rewriter/rewriteMessage' +import logger from 'App/logger' // Doesn't work with css files (hasOwnProperty returns false) // TODO: recheck and remove if true @@ -38,14 +39,15 @@ export default class StylesManager { || this.skipCSSLinks.includes(value) || node.ownerDocument !== this.screen.document ) { - console.log('skipped', node, value, this.abortController.signal.aborted, this.skipCSSLinks.includes(value), node.ownerDocument !== this.screen.document) + + logger.log('skipped', node, value, this.abortController.signal.aborted, this.skipCSSLinks.includes(value), node.ownerDocument !== this.screen.document) resolve(); } this.setLoading(true); this.linkLoadingCount++; const addSkipAndResolve = (e: any) => { this.skipCSSLinks.push(value); // watch out - console.error('skip node', e) + logger.error('skip node', e) resolve() } timeoutId = setTimeout(addSkipAndResolve, 4000); diff --git a/frontend/app/player/web/managers/DOM/VirtualDOM.ts b/frontend/app/player/web/managers/DOM/VirtualDOM.ts index fccb5816d..68099a0a9 100644 --- a/frontend/app/player/web/managers/DOM/VirtualDOM.ts +++ b/frontend/app/player/web/managers/DOM/VirtualDOM.ts @@ -241,19 +241,23 @@ export class VText extends VNode { } class PromiseQueue { - constructor(private promise: Promise) {} + onCatch?: (err?: any) => void + + constructor(private promise: Promise) {} /** * Call sequence is concerned. */ // Doing this with callbacks list instead might be more efficient (but more wordy). TODO: research whenReady(cb: Callback) { this.promise = this.promise.then(vRoot => { - cb(vRoot) + cb(vRoot as T) return vRoot + }).catch(e => { + this.onCatch?.(e) }) } - catch(cb: Parameters['catch']>[0]) { - this.promise.catch(cb) + catch(cb:(err?: any) => void) { + this.onCatch = cb } }