fix(ui): Websocket

Fixed startGame to be correctly implemented
This commit is contained in:
LQ63
2025-11-26 09:52:16 +01:00
committed by Janis
parent e0f16a224d
commit 6402df43b1
5 changed files with 6 additions and 31 deletions

View File

@@ -41,7 +41,7 @@ lazy val knockoutwhistweb = project.in(file("knockoutwhistweb"))
libraryDependencies += "com.auth0" % "java-jwt" % "4.5.0", libraryDependencies += "com.auth0" % "java-jwt" % "4.5.0",
libraryDependencies += "com.github.ben-manes.caffeine" % "caffeine" % "3.2.3", libraryDependencies += "com.github.ben-manes.caffeine" % "caffeine" % "3.2.3",
libraryDependencies += "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.16.1", libraryDependencies += "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.16.1",
//JsEngineKeys.engineType := JsEngineKeys.EngineType.Node JsEngineKeys.engineType := JsEngineKeys.EngineType.Node
) )
lazy val root = (project in file(".")) lazy val root = (project in file("."))

View File

@@ -39,7 +39,7 @@ class UserSession(val user: User, val host: Boolean, val gameLobby: GameLobby) e
canInteract = None canInteract = None
} }
def handleWebResponse(eventType: String, data: JsObject): Unit = { def handleWebResponse(eventType: String, data: JsObject, user: User, gameLobby: GameLobby): Unit = {
lock.lock() lock.lock()
Try { Try {
eventType match { eventType match {
@@ -48,19 +48,7 @@ class UserSession(val user: User, val host: Boolean, val gameLobby: GameLobby) e
() ()
case "Start Game" => case "Start Game" =>
println("INSIDE HANDLE WEB RESPONSE" + data) println("INSIDE HANDLE WEB RESPONSE" + data)
val gameId: String = (data \ "gameId").get.toString gameLobby.startGame(user)
val cleanGameId: String = gameId.replaceAll("^[\"']|[\"']$", "")
val user: JsObject = (data \ "user").asOpt[JsObject].get
val gameLobby: GameLobby = PodManager.getGame(cleanGameId).get
val realUser: JsResult[User] = user.validate[User]
val uu: User = realUser match {
case JsSuccess(extractedUser, _) =>
extractedUser
case e: JsError =>
println("FAILED" + JsError.toJson(e).toString())
throw new Exception("Failed to deserialize User object: " + JsError.toJson(e).toString())
}
gameLobby.startGame(uu)
} }
} }
lock.unlock() lock.unlock()

View File

@@ -74,7 +74,7 @@ class UserWebsocketActor(
val event = eventOpt.get val event = eventOpt.get
val data = (json \ "data").asOpt[JsObject].getOrElse(Json.obj()) val data = (json \ "data").asOpt[JsObject].getOrElse(Json.obj())
val result = Try { val result = Try {
session.handleWebResponse(event, data) session.handleWebResponse(event, data, session.user, session.gameLobby)
} }
if (result.isSuccess) { if (result.isSuccess) {
transmitJsonToClient(Json.obj( transmitJsonToClient(Json.obj(

View File

@@ -18,7 +18,4 @@ case class User(
private def withPasswordHash(newPasswordHash: String): User = { private def withPasswordHash(newPasswordHash: String): User = {
this.copy(passwordHash = newPasswordHash) this.copy(passwordHash = newPasswordHash)
} }
}
object User {
implicit val userFormat: Format[User] = Json.format[User]
} }

View File

@@ -5,18 +5,8 @@ function handlePlayCard(card, dog) {
function handleSkipDogLife(button) { function handleSkipDogLife(button) {
// TODO needs implementation // TODO needs implementation
} }
function startGame(gameId, userId, username, userpasswordhash, userinternalid) { function startGame() {
const userpayload = { sendEvent("Start Game")
internalId: userinternalid,
id: userId,
name: username,
passwordHash: userpasswordhash
}
const payload = {
gameId: gameId,
user: userpayload
};
sendEvent("Start Game", payload)
} }
function handleKickPlayer(playerId) { function handleKickPlayer(playerId) {
// TODO needs implementation // TODO needs implementation