/** * Connector * Responsible for connecting to the websocket server */ import { Socket } from 'socket.io-client'; import AbstractTower from './Tower'; import ClientFacade from '../ClientFacade'; import Class from '../local-models/Class'; import { Scores } from '@robotical/automatic-assessments'; declare class ClassroomTower extends AbstractTower { static instance: ClassroomTower; protected socket: Socket | null; protected clientFacade: ClientFacade | null; private constructor(); static getInstance(): ClassroomTower; connect(clientFacade: ClientFacade): void; /** * Add listeners to the socket */ addListeners(): void; onSessionCreated(updatedClass: Class): void; onSessionStopped(updatedClass: Class): void; onStudentJoinedSession(updatedClass: Class): void; onStudentExitedSession(updatedClass: Class): void; onStudentActivated(updatedClass: Class): void; onStudentDeactivated(updatedClass: Class): void; onClassAnnouncementAdded(updatedClass: Class): void; onSessionAnnouncementAdded(updatedClass: Class): void; onQuestionAdded(updatedClass: Class): void; onAnswerCreated(updatedClass: Class): void; onAnswerUpdated(updatedClass: Class): void; onClassAnnouncementRead(updatedClass: Class): void; onSessionAnnouncementRead(updatedClass: Class): void; onCodeSubmissionCreated(updatedClass: Class): void; onCodeSubmissionUpdated(updatedClass: Class): void; onRemoveCodeSubmission(updatedClass: Class): void; onRemoveClassAnnouncement(updatedClass: Class): void; onRemoveSessionAnnouncement(updatedClass: Class): void; onStudentSessionDataScoresUpdated(updatedClass: Class): void; onStudentSessionDataScoresCreated(updatedClass: Class): void; onSessionTitleUpdated(updatedClass: Class): void; /** * Join the class as a teacher * Emits the event to the server when the teacher selects a class */ joinClassTeacher(classId: string, userId: string): void; /** * Join the class as a student * Emits the event to the server when the student selects a class */ joinClassStudent(classId: string, userId: string): void; /** * Creates a session for a class * Emits the event to the server when the teacher creates a session */ createSession(classId: string): void; /** * End the session */ stopSession(classId: string, sessionId: string): void; /** * Join the session */ joinSession(classId: string, studentId: string, studentFirstName: string, studentLastName: string): void; /** * Exits the session */ exitSession(classId: string, studentId: string): void; /** * Activates a student */ activateStudent(classId: string, studentId: string): void; /** * Adds session announcement */ addSessionAnnouncement(classId: string, sessionId: string, announcement: string, imageUrl?: string): void; /** * Adds class announcement */ addClassAnnouncement(classId: string, announcement: string, imageUrl?: string): void; /** * Adds question to session */ addQuestionToSession(classId: string, sessionId: string, question: string): void; /** * Submits the answer to a question */ submitAnswerToQuestion(classId: string, sessionId: string, studentId: string, questionId: string, answer: string): void; /** * Updates an answer to a question */ updateAnswerToQuestion(classId: string, sessionId: string, studentId: string, questionId: string, answerId: string, answer: string): void; /** * Reads a class announcement */ readClassAnnouncement(classId: string, studentId: string, announcementId: string): void; /** * Reads a session announcement */ readSessionAnnouncement(classId: string, sessionId: string, studentId: string, announcementId: string): void; /** * Submit code */ submitCode(classId: string, sessionId: string, studentId: string, title: string, codeUrl: string, explanation?: string): void; /** * Update a code submission */ updateCodeSubmission(classId: string, sessionId: string, studentId: string, submissionId: string, title: string, codeUrl: string, explanation: string): void; /** * Removes code submission */ removeCodeSubmission(classId: string, sessionId: string, submissionId: string): void; /** * Removes a session announcement */ removeSessionAnnouncement(classId: string, sessionId: string, announcementId: string): void; /** * Removes a class announcement */ removeClassAnnouncement(classId: string, announcementId: string): void; /** * creates studentSessionData scores */ createStudentSessionDataScores(classId: string, sessionId: string, studentId: string, scores: Scores): void; /** * Updates studentSessionData scores */ updateStudentSessionDataScores(classId: string, sessionId: string, studentId: string, scores: Scores): void; /** * Updates session's title */ updateSessionTitle(classId: string, sessionId: string, title: string): void; } export default ClassroomTower;