change(player): bugifx

This commit is contained in:
nick-delirium 2023-04-25 18:07:27 +02:00 committed by Delirium
parent cf260a4dd7
commit 1baf6fe1e4
2 changed files with 12 additions and 7 deletions

View file

@ -214,6 +214,7 @@ export default class MessageManager {
// this.state.update({ filesLoaded: true })
}
noIndexMode = false
async loadMessages(isClickmap: boolean = false) {
this.state.update({ messagesProcessed: false })
this.setMessagesLoading(true)
@ -223,10 +224,10 @@ export default class MessageManager {
? (b: Uint8Array) => decryptSessionBytes(b, this.session.fileKey)
: (b: Uint8Array) => Promise.resolve(b)
// Each time called - new fileReader created
const fileReader = new MFileReader(new Uint8Array(), this.sessionStart)
const fileReader = new MFileReader(new Uint8Array(), this.sessionStart, this.noIndexMode)
return (b: Uint8Array) => decrypt(b).then(b => {
fileReader.append(b)
fileReader.checkForIndexes()
this.noIndexMode = fileReader.checkForIndexes()
const msgs: Array<Message> = []
for (let msg = fileReader.readNext();msg !== null;msg = fileReader.readNext()) {
msgs.push(msg)

View file

@ -13,19 +13,20 @@ export default class MFileReader extends RawMessageReader {
private currentTime: number
public error: boolean = false
private noIndexes: boolean = false
constructor(data: Uint8Array, private startTime?: number, private logger= console) {
constructor(data: Uint8Array, private startTime?: number, noIndexes?: boolean, private logger= console) {
super(data)
if (noIndexes) this.noIndexes = true
}
public checkForIndexes() {
const firstBytes = this.readCustomIndex(this.buf.slice(0, 9))
console.log(firstBytes, this.buf)
const skipIndexes = firstBytes === 72057594037927940
if (skipIndexes) {
this.noIndexes = true
this.skip(8)
console.log('triggered')
return true
}
return false
}
private needSkipMessage(): boolean {
@ -49,7 +50,11 @@ export default class MFileReader extends RawMessageReader {
private readRawMessage(): RawMessage | null {
if (!this.noIndexes) this.skip(8)
try {
return super.readMessage()
const msg = super.readMessage()
if (!msg) {
this.skip(-8)
}
return msg
} catch (e) {
this.error = true
this.logger.error("Read message error:", e)
@ -84,7 +89,6 @@ export default class MFileReader extends RawMessageReader {
return this.readNext()
}
console.log(this.noIndexes)
const index = this.noIndexes ? 0 : this.getLastMessageID()
const msg = Object.assign(rewriteMessage(rMsg), {
time: this.currentTime,