diff --git a/frontend/app/player/common/ListWalker.ts b/frontend/app/player/common/ListWalker.ts index fbd44007b..ca3d409ac 100644 --- a/frontend/app/player/common/ListWalker.ts +++ b/frontend/app/player/common/ListWalker.ts @@ -1,7 +1,7 @@ import type { Timed } from './types'; export default class ListWalker { - private p = 0 + private p = 0 /* Pointer to the "current" item */ constructor(private _list: Array = []) {} append(m: T): void { @@ -130,7 +130,7 @@ export default class ListWalker { return changed ? this.list[ this.p - 1 ] : null; } - moveApply(t: number, fn: (msg: T) => void, fnBack?: (msg: T) => void): void { + async moveWait(t: number, callback: (msg: T) => Promise | undefined): Promise { // Applying only in increment order for now if (t < this.timeNow) { this.reset(); @@ -138,23 +138,8 @@ export default class ListWalker { const list = this.list while (list[this.p] && list[this.p].time <= t) { - fn(this.moveNext()) - } - while (fnBack && this.p > 0 && list[ this.p - 1 ].time > t) { - fnBack(this.movePrev()); - } - } - - async moveWait(t: number, fn: (msg: T) => Promise | undefined): Promise { - // Applying only in increment order for now - if (t < this.timeNow) { - this.reset(); - } - - const list = this.list - while (list[this.p] && list[this.p].time <= t) { - const ret = fn(this.list[ this.p++ ]); - if (ret) { await ret } + const maybePromise = callback(this.list[ this.p++ ]); + if (maybePromise) { await maybePromise } } } diff --git a/frontend/app/player/web/managers/DOM/DOMManager.ts b/frontend/app/player/web/managers/DOM/DOMManager.ts index d5cbdd845..5ae59c5c4 100644 --- a/frontend/app/player/web/managers/DOM/DOMManager.ts +++ b/frontend/app/player/web/managers/DOM/DOMManager.ts @@ -39,7 +39,6 @@ export default class DOMManager extends ListWalker { private readonly vTexts: Map = new Map() // map vs object here? private readonly vElements: Map = new Map() private readonly vRoots: Map = new Map() - private activeIframeRoots: Map = new Map() private styleSheets: Map = new Map() private ppStyleSheets: Map = new Map() private stringDict: Record = {} @@ -197,7 +196,6 @@ export default class DOMManager extends ListWalker { // todo: start from 0-node (sync logic with tracker) this.vTexts.clear() this.stylesManager.reset() - this.activeIframeRoots.clear() this.stringDict = {} return case MType.CreateTextNode: @@ -333,12 +331,8 @@ export default class DOMManager extends ListWalker { logger.warn("No default iframe doc", msg, host) return } - // remove old root of the same iframe if present - const oldRootId = this.activeIframeRoots.get(msg.frameID) - oldRootId != null && this.vRoots.delete(oldRootId) const vDoc = new VDocument(doc) - this.activeIframeRoots.set(msg.frameID, msg.id) this.vRoots.set(msg.id, vDoc) return; } else if (host instanceof Element) { // shadow DOM diff --git a/frontend/app/player/web/managers/DOM/VirtualDOM.ts b/frontend/app/player/web/managers/DOM/VirtualDOM.ts index d9fd3f77a..a528ae658 100644 --- a/frontend/app/player/web/managers/DOM/VirtualDOM.ts +++ b/frontend/app/player/web/managers/DOM/VirtualDOM.ts @@ -135,7 +135,7 @@ export class VStyleElement extends VElement { this.stylesheetCallbacks = [] } else { // console.warn("Style onload: sheet is null") ? - // sometimes logs shit ton of errors for some reason + // sometimes logs sheet ton of errors for some reason } this.loaded = true }