Server/project/src/services/NotificationService.ts
TheSparta 418d9f2a8f Import path alias on the whole project (!157)
- Ability to use @spt-aki path alias on the whole project.
- Swapped all imports from relative paths, for imports using the path alias.

Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/157
Co-authored-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
Co-committed-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
2023-10-19 17:21:17 +00:00

64 lines
1.3 KiB
TypeScript

import { injectable } from "tsyringe";
import { INotification } from "@spt-aki/models/eft/notifier/INotifier";
@injectable()
export class NotificationService
{
protected messageQueue: Record<string, any[]> = {};
public getMessageQueue(): Record<string, any[]>
{
return this.messageQueue;
}
public getMessageFromQueue(sessionId: string): any[]
{
return this.messageQueue[sessionId];
}
public updateMessageOnQueue(sessionId: string, value: any[]): void
{
this.messageQueue[sessionId] = value;
}
public has(sessionID: string): boolean
{
return this.get(sessionID).length > 0;
}
/**
* Pop first message from queue.
*/
public pop(sessionID: string): any
{
return this.get(sessionID).shift();
}
/**
* Add message to queue
*/
public add(sessionID: string, message: INotification): void
{
this.get(sessionID).push(message);
}
/**
* Get message queue for session
* @param sessionID
*/
public get(sessionID: string): any[]
{
if (!sessionID)
{
throw new Error("sessionID missing");
}
if (!this.messageQueue[sessionID])
{
this.messageQueue[sessionID] = [];
}
return this.messageQueue[sessionID];
}
}