From 7d8cca54e548d2a85287fd2325db88f2697be55a Mon Sep 17 00:00:00 2001 From: Leonardo Bishop Date: Sat, 4 Nov 2023 21:28:11 +0000 Subject: Add more shit --- backend/src/config/session-store.ts | 77 +++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 backend/src/config/session-store.ts (limited to 'backend/src/config') diff --git a/backend/src/config/session-store.ts b/backend/src/config/session-store.ts new file mode 100644 index 0000000..283031b --- /dev/null +++ b/backend/src/config/session-store.ts @@ -0,0 +1,77 @@ +export type Session = { + id: string; + state: string; + host?: string; + clients: string[]; +}; + +const sessions: { [key: string]: Session } = {}; + +function makeid(length) { + let result = ''; + const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + const charactersLength = characters.length; + let counter = 0; + while (counter < length) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + counter += 1; + } + return result; +} + + +export const createNewSession = (): Session => { + const id = makeid(10); + const session = { + id, + state: "waiting", + host: undefined, + clients: [], + }; + sessions[id] = session; + return session; +}; + +export const setSessionState = (id: string, state: string): void => { + if (!sessions[id]) { + return; + } + + sessions[id].state = state; +}; + +export const setSessionHost = (id: string, clientId: string): void => { + if (!sessions[id]) { + return; + } + + sessions[id].host = clientId; +}; + +export const addSessionClient = (id: string, clientId: string): void => { + if (!sessions[id]) { + return; + } + + sessions[id]?.clients.push(clientId); +}; + +export const cleanupSession = (id: string): void => { + if (!sessions[id]) { + return; + } + +// if (sessions[id].host) { +// sessions[id].host!.close(); +// } +// +// sessions[id].clients.forEach((client) => { +// client.close(); +// }); + + delete sessions[id]; +} + +export const getSession = (id: string): Session => { + return sessions[id]; +}; \ No newline at end of file -- cgit v1.2.3-70-g09d2