openreplay/frontend/app/player/web/messages/MStreamReader.ts
Andrey Babushkin fd5c0c9747
Add lokalisation (#3092)
* applied eslint

* add locales and lint the project

* removed error boundary

* updated locales

* fix min files

* fix locales
2025-03-06 17:43:15 +01:00

45 lines
1 KiB
TypeScript

import type { Message } from './message.gen';
import type { RawMessage } from './raw.gen';
import { MType } from './raw.gen';
interface RawMessageReaderI {
readMessage(): RawMessage | null;
}
export default class MStreamReader {
constructor(
private readonly r: RawMessageReaderI,
private startTs: number = 0,
) {}
private t: number = 0;
private idx: number = 0;
currentTab = 'back-compatability';
readNext(): (Message & { _index: number; tabId: string }) | null {
const msg = this.r.readMessage();
if (msg === null) {
return null;
}
if (msg.tp === MType.Timestamp) {
this.startTs = this.startTs || msg.timestamp;
const newT = msg.timestamp - this.startTs;
if (newT > this.t) {
this.t = newT;
}
return this.readNext();
}
if (msg.tp === MType.TabData) {
this.currentTab = msg.tabId;
return this.readNext();
}
return Object.assign(msg, {
time: this.t,
_index: this.idx++,
tabId: this.currentTab,
});
}
}