Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4a4e9c48fc | ||
| 859dfce521 | |||
| 61ae9b5a5e | |||
|
|
98fa5f63d6 | ||
| 0e555cdfeb | |||
| b4bf2ceb4d | |||
|
|
1542906edf | ||
| cf1854976a |
20
CHANGELOG.md
20
CHANGELOG.md
@@ -307,3 +307,23 @@
|
|||||||
### Features
|
### Features
|
||||||
|
|
||||||
* Update Gateway to use ArrayList for game IDs and bound users ([2f89951](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/2f89951c25484d6bc412536a83019ee6d0b7f780))
|
* Update Gateway to use ArrayList for game IDs and bound users ([2f89951](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/2f89951c25484d6bc412536a83019ee6d0b7f780))
|
||||||
|
## (2026-01-07)
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* Update joinGame endpoint to accept gameId as a path parameter ([cf18549](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/cf1854976a51eb4931d50cf93640498ed18686fc))
|
||||||
|
## (2026-01-07)
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* Enhance user state management with polling and WebSocket connection handling ([b4bf2ce](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/b4bf2ceb4dc76ac388124b9705a1aa9e577582af))
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* Update knockoutwhistfrontend hash for consistency ([0e555cd](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/0e555cdfeb114464c9438bfd5dc397201a073867))
|
||||||
|
## (2026-01-07)
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* Implement PlayDogCard functionality in user session and update Vue component ([859dfce](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/859dfce521b193b9208d0c70fca88016f8fe08f4))
|
||||||
|
* Implement PlayDogCard functionality in user session and update Vue component ([61ae9b5](https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/commit/61ae9b5a5e7cd9fd82b77e9159814b0066874c2d))
|
||||||
|
|||||||
Submodule knockoutwhistfrontend updated: 352b7fd3ff...058d232d2b
@@ -55,13 +55,8 @@ class MainMenuController @Inject()(
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def joinGame(): Action[AnyContent] = authAction { implicit request: AuthenticatedRequest[AnyContent] =>
|
def joinGame(gameId: String): Action[AnyContent] = authAction { implicit request: AuthenticatedRequest[AnyContent] =>
|
||||||
val jsonBody = request.body.asJson
|
val game = PodManager.getGame(gameId)
|
||||||
val gameId: Option[String] = jsonBody.flatMap { jsValue =>
|
|
||||||
(jsValue \ "gameId").asOpt[String]
|
|
||||||
}
|
|
||||||
if (gameId.isDefined) {
|
|
||||||
val game = PodManager.getGame(gameId.get)
|
|
||||||
game match {
|
game match {
|
||||||
case Some(g) =>
|
case Some(g) =>
|
||||||
g.addUser(request.user)
|
g.addUser(request.user)
|
||||||
@@ -76,12 +71,6 @@ class MainMenuController @Inject()(
|
|||||||
"errorMessage" -> "No Game found"
|
"errorMessage" -> "No Game found"
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
BadRequest(Json.obj(
|
|
||||||
"status" -> "failure",
|
|
||||||
"errorMessage" -> "Invalid form submission"
|
|
||||||
))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def rules(): Action[AnyContent] = authAction { implicit request: AuthenticatedRequest[AnyContent] =>
|
def rules(): Action[AnyContent] = authAction { implicit request: AuthenticatedRequest[AnyContent] =>
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ class StatusController @Inject()(
|
|||||||
Json.obj(
|
Json.obj(
|
||||||
"status" -> "authenticated",
|
"status" -> "authenticated",
|
||||||
"username" -> user.name,
|
"username" -> user.name,
|
||||||
|
"userId" -> user.id,
|
||||||
"inGame" -> false
|
"inGame" -> false
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -43,6 +44,7 @@ class StatusController @Inject()(
|
|||||||
Json.obj(
|
Json.obj(
|
||||||
"status" -> "authenticated",
|
"status" -> "authenticated",
|
||||||
"username" -> user.name,
|
"username" -> user.name,
|
||||||
|
"userId" -> user.id,
|
||||||
"inGame" -> true,
|
"inGame" -> true,
|
||||||
"gameId" -> game.id
|
"gameId" -> game.id
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -54,6 +54,16 @@ class UserSession(val user: User, val host: Boolean, val gameLobby: GameLobby) e
|
|||||||
case None =>
|
case None =>
|
||||||
println("Card Index not found or is not a number." + data)
|
println("Card Index not found or is not a number." + data)
|
||||||
}
|
}
|
||||||
|
case "PlayDogCard" =>
|
||||||
|
val maybeCardIndex: Option[Int] = (data \ "cardindex").asOpt[Int]
|
||||||
|
maybeCardIndex match {
|
||||||
|
case Some(index) =>
|
||||||
|
val session = gameLobby.getUserSession(user.id)
|
||||||
|
gameLobby.playDogCard(session, index)
|
||||||
|
case None =>
|
||||||
|
val session = gameLobby.getUserSession(user.id)
|
||||||
|
gameLobby.playDogCard(session, -1)
|
||||||
|
}
|
||||||
case "PickTrumpsuit" =>
|
case "PickTrumpsuit" =>
|
||||||
val maybeSuitIndex: Option[Int] = (data \ "suitIndex").asOpt[Int]
|
val maybeSuitIndex: Option[Int] = (data \ "suitIndex").asOpt[Int]
|
||||||
maybeSuitIndex match {
|
maybeSuitIndex match {
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ GET /rules controllers.MainMenuController.rules()
|
|||||||
GET /navSPA/:pType controllers.MainMenuController.navSPA(pType)
|
GET /navSPA/:pType controllers.MainMenuController.navSPA(pType)
|
||||||
|
|
||||||
POST /createGame controllers.MainMenuController.createGame()
|
POST /createGame controllers.MainMenuController.createGame()
|
||||||
POST /joinGame controllers.MainMenuController.joinGame()
|
POST /joinGame/:gameId controllers.MainMenuController.joinGame(gameId: String)
|
||||||
|
|
||||||
# User authentication routes
|
# User authentication routes
|
||||||
POST /login controllers.UserController.login_Post()
|
POST /login controllers.UserController.login_Post()
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
MAJOR=4
|
MAJOR=4
|
||||||
MINOR=24
|
MINOR=27
|
||||||
PATCH=0
|
PATCH=0
|
||||||
|
|||||||
Reference in New Issue
Block a user