diff --git a/frontend/app/player/web/MessageLoader.ts b/frontend/app/player/web/MessageLoader.ts index 97e58fb0c..4b7487a44 100644 --- a/frontend/app/player/web/MessageLoader.ts +++ b/frontend/app/player/web/MessageLoader.ts @@ -45,7 +45,11 @@ export default class MessageLoader { const mobBytes = await decrypt(b); const data = unpack(mobBytes); fileReader.append(data); - fileReader.checkForIndexes(); + if (file?.endsWith('EFS')) { + fileReader.forceSkipIndexes() + } else { + fileReader.checkForIndexes(); + } const msgs: Array = []; let finished = false; while (!finished) { diff --git a/frontend/app/player/web/messages/MFileReader.ts b/frontend/app/player/web/messages/MFileReader.ts index 268f18005..f34b2dc84 100644 --- a/frontend/app/player/web/messages/MFileReader.ts +++ b/frontend/app/player/web/messages/MFileReader.ts @@ -12,6 +12,7 @@ export default class MFileReader extends RawMessageReader { private currentTime: number public error: boolean = false private noIndexes: boolean = false + private skipIndexes: boolean = false constructor(data: Uint8Array, private startTime?: number, private logger= console) { super(data) } @@ -29,6 +30,10 @@ export default class MFileReader extends RawMessageReader { } } + public forceSkipIndexes() { + this.skipIndexes = true + } + private needSkipMessage(): boolean { if (this.p === 0) return false for (let i = 7; i >= 0; i--) { @@ -56,6 +61,9 @@ export default class MFileReader extends RawMessageReader { * */ private readRawMessage(): RawMessage | null { try { + if (this.skipIndexes) { + this.skip(8) + } return super.readMessage() } catch (e) { this.logger.error("Read message error:", e)