* feat(assist): removed legacy endpoints * feat(assist): added in-memory cache * feat(assist): fixed 'string, not object' issue * feat(assist): reafactored socketsLiveBySession method * feat(assist): rewrote autocomplete * feat(assist): fixed issue with empty session * feat(assist): removed copy/paste code * feat(assist): added ee solo mode
49 lines
No EOL
1.2 KiB
JavaScript
49 lines
No EOL
1.2 KiB
JavaScript
const roomsInfo = new Map(); // sessionID -> sessionInfo
|
|
const projectSessions = new Map(); // projectKey -> Set(sessionIDs) // all rooms (even with agent only)
|
|
const projectRooms = new Map(); // projectKey -> Set(roomIDs) // online rooms
|
|
|
|
function AddRoom(projKey, sessID, sessInfo) {
|
|
roomsInfo.set(sessID, sessInfo);
|
|
if (!projectRooms.has(projKey)) {
|
|
projectRooms.set(projKey, new Set());
|
|
}
|
|
projectRooms.get(projKey).add(sessID);
|
|
if (!projectSessions.has(projKey)) {
|
|
projectSessions.set(projKey, new Set());
|
|
}
|
|
projectSessions.get(projKey).add(sessID);
|
|
}
|
|
|
|
function UpdateRoom(sessID, sessInfo) {
|
|
roomsInfo.set(sessID, sessInfo);
|
|
}
|
|
|
|
function DeleteSession(projKey, sessID) {
|
|
projectSessions.get(projKey)?.delete(sessID);
|
|
}
|
|
|
|
function DeleteRoom(projKey, sessID) {
|
|
projectRooms.get(projKey)?.delete(sessID);
|
|
}
|
|
|
|
function GetRoomInfo(sessID) {
|
|
return roomsInfo.get(sessID);
|
|
}
|
|
|
|
function GetRooms(projectKey) {
|
|
return projectRooms.get(projectKey) || new Set();
|
|
}
|
|
|
|
function GetSessions(projectKey) {
|
|
return projectSessions.get(projectKey) || new Set();
|
|
}
|
|
|
|
module.exports = {
|
|
AddRoom,
|
|
UpdateRoom,
|
|
DeleteRoom,
|
|
DeleteSession,
|
|
GetRoomInfo,
|
|
GetRooms,
|
|
GetSessions,
|
|
} |