From a72ecb21586a01b124750484d1ce4bb95b670a72 Mon Sep 17 00:00:00 2001 From: Josephslee99 Date: Sun, 13 Dec 2020 18:59:07 -0500 Subject: [PATCH] Prevents repeated queue submissions --- nginx/public/index.html | 1 + nginx/public/officeHours.js | 12 ++++++++++++ src/main/scala/model/OfficeHoursServer.scala | 18 ++++++++++++++---- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/nginx/public/index.html b/nginx/public/index.html index 5443216..4643aca 100644 --- a/nginx/public/index.html +++ b/nginx/public/index.html @@ -14,6 +14,7 @@

Welcome!

Name

+


diff --git a/nginx/public/officeHours.js b/nginx/public/officeHours.js index 3514c14..809523f 100644 --- a/nginx/public/officeHours.js +++ b/nginx/public/officeHours.js @@ -2,6 +2,18 @@ const socket = io.connect("http://localhost:8080", {transports: ['websocket']}); socket.on('queue', displayQueue); socket.on('message', displayMessage); +socket.on('repeat', displayRepeat); + +function displayRepeat(sendMsg) { + const queue = JSON.parse(sendMsg); + if (queue['repeat'] === 'yes'){ + let updatedForRepeats = queue['username'] + " is already in queue" + document.getElementById("repeat").innerHTML = updatedForRepeats; + }else{ + let updatedForRepeats = queue['username'] + " is now in queue" + document.getElementById("repeat").innerHTML = updatedForRepeats; + } +} function displayMessage(newMessage) { document.getElementById("message").innerHTML = newMessage; diff --git a/src/main/scala/model/OfficeHoursServer.scala b/src/main/scala/model/OfficeHoursServer.scala index 09ef61b..5ee821a 100644 --- a/src/main/scala/model/OfficeHoursServer.scala +++ b/src/main/scala/model/OfficeHoursServer.scala @@ -60,10 +60,20 @@ class DisconnectionListener(server: OfficeHoursServer) extends DisconnectListene class EnterQueueListener(server: OfficeHoursServer) extends DataListener[String] { override def onData(socket: SocketIOClient, username: String, ackRequest: AckRequest): Unit = { - server.database.addStudentToQueue(StudentInQueue(username, System.nanoTime())) - server.socketToUsername += (socket -> username) - server.usernameToSocket += (username -> socket) - server.server.getBroadcastOperations.sendEvent("queue", server.queueJSON()) + if (server.database.getQueue.exists(s => s.username == username)){ + println("User already in queue") + val messageMap: Map[String, JsValue] = Map("username" -> Json.toJson(username), "repeat" -> Json.toJson("yes")) + val sendMsg = Json.stringify(Json.toJson(messageMap)) + server.server.getBroadcastOperations.sendEvent("repeat", sendMsg) + }else{ + server.database.addStudentToQueue(StudentInQueue(username, System.nanoTime())) + server.socketToUsername += (socket -> username) + server.usernameToSocket += (username -> socket) + val messageMap: Map[String, JsValue] = Map("username" -> Json.toJson(username), "repeat" -> Json.toJson("no")) + val sendMsg = Json.stringify(Json.toJson(messageMap)) + server.server.getBroadcastOperations.sendEvent("repeat", sendMsg) + server.server.getBroadcastOperations.sendEvent("queue", server.queueJSON()) + } } }