feat(session): add subscribe method, getAllBlocks

This commit is contained in:
ItzCrazyKns
2025-12-23 17:12:15 +05:30
parent 68a9e048ac
commit 216332fb20

View File

@@ -67,15 +67,32 @@ class SessionManager {
} }
} }
addListener(event: string, listener: (data: any) => void) { getAllBlocks() {
this.emitter.addListener(event, listener); return Array.from(this.blocks.values());
} }
replay() { subscribe(listener: (event: string, data: any) => void): () => void {
for (const { event, data } of this.events) { const currentEventsLength = this.events.length;
/* Using emitter directly to avoid infinite loop */
this.emitter.emit(event, data); const handler = (event: string) => (data: any) => listener(event, data);
const dataHandler = handler('data');
const endHandler = handler('end');
const errorHandler = handler('error');
this.emitter.on('data', dataHandler);
this.emitter.on('end', endHandler);
this.emitter.on('error', errorHandler);
for (let i = 0; i < currentEventsLength; i++) {
const { event, data } = this.events[i];
listener(event, data);
} }
return () => {
this.emitter.off('data', dataHandler);
this.emitter.off('end', endHandler);
this.emitter.off('error', errorHandler);
};
} }
} }