Session Details implemented

This commit is contained in:
aodulov
2025-10-13 13:50:49 +03:00
parent 5f8541a5f3
commit 691a2fa422
6 changed files with 59 additions and 13 deletions

View File

@@ -35,6 +35,7 @@ interface EncryptedResponseData {
interface SessionData {
state: SessionState; // Current phase of the session
topic: string | null; // The topic of the session
description: string | null; // The description of the session
expectedResponses: number; // The number set by the first user in State A.
submittedCount: number; // The current count of submitted responses.
responses: Map<string, EncryptedResponseData>; // Stores the submitted desire objects. Map<ClientID, EncryptedResponseData>
@@ -117,6 +118,7 @@ export const createWebSocketServer = (server: any) => {
sessions.set(sessionId, {
state: SessionState.SETUP,
topic: null,
description: null,
expectedResponses: 0,
submittedCount: 0,
responses: new Map<string, any>(),
@@ -204,13 +206,14 @@ export const handleWebSocketMessage = async (ws: WebSocket, sessionId: string, p
case 'SETUP_SESSION':
if (sessionData.state === SessionState.SETUP) {
const { expectedResponses, topic } = payload;
const { expectedResponses, topic, description } = payload;
if (typeof expectedResponses !== 'number' || expectedResponses <= 0) {
ws.send(JSON.stringify({ type: 'ERROR', payload: { message: 'Invalid expectedResponses' } }));
return;
}
sessionData.expectedResponses = expectedResponses;
sessionData.topic = topic || 'Untitled Session';
sessionData.description = description || null;
sessionData.state = SessionState.GATHERING;
broadcastToSession(sessionId, { type: 'STATE_UPDATE', payload: {} });
console.log(`Session ${sessionId} moved to GATHERING with topic "${sessionData.topic}" and ${expectedResponses} expected responses.`);