feat(ui): add main menu navbar and join game functionality (#35)
Reviewed-on: #35 Reviewed-by: lq64 <lq@blackhole.local> Co-authored-by: Janis <janis.e.20@gmx.de> Co-committed-by: Janis <janis.e.20@gmx.de>
This commit is contained in:
@@ -111,7 +111,10 @@ class IngameController @Inject()(
|
||||
cardIdOpt match {
|
||||
case Some(cardId) =>
|
||||
val result = Try {
|
||||
g.playCard(g.getUserSession(request.user.id), cardId.toInt)
|
||||
val session = g.getUserSession(request.user.id)
|
||||
session.lock.lock()
|
||||
g.playCard(session, cardId.toInt)
|
||||
session.lock.unlock()
|
||||
}
|
||||
if (result.isSuccess) {
|
||||
NoContent
|
||||
@@ -146,9 +149,15 @@ class IngameController @Inject()(
|
||||
val result = Try {
|
||||
cardIdOpt match {
|
||||
case Some(cardId) if cardId == "skip" =>
|
||||
g.playDogCard(g.getUserSession(request.user.id), -1)
|
||||
val session = g.getUserSession(request.user.id)
|
||||
session.lock.lock()
|
||||
g.playDogCard(session, -1)
|
||||
session.lock.unlock()
|
||||
case Some(cardId) =>
|
||||
g.playDogCard(g.getUserSession(request.user.id), cardId.toInt)
|
||||
val session = g.getUserSession(request.user.id)
|
||||
session.lock.lock()
|
||||
g.playDogCard(session, cardId.toInt)
|
||||
session.lock.unlock()
|
||||
case None =>
|
||||
throw new IllegalArgumentException("cardId parameter is missing")
|
||||
}
|
||||
@@ -184,7 +193,10 @@ class IngameController @Inject()(
|
||||
trumpOpt match {
|
||||
case Some(trump) =>
|
||||
val result = Try {
|
||||
g.selectTrump(g.getUserSession(request.user.id), trump.toInt)
|
||||
val session = g.getUserSession(request.user.id)
|
||||
session.lock.lock()
|
||||
g.selectTrump(session, trump.toInt)
|
||||
session.lock.unlock()
|
||||
}
|
||||
if (result.isSuccess) {
|
||||
NoContent
|
||||
@@ -216,7 +228,10 @@ class IngameController @Inject()(
|
||||
tieOpt match {
|
||||
case Some(tie) =>
|
||||
val result = Try {
|
||||
val session = g.getUserSession(request.user.id)
|
||||
session.lock.lock()
|
||||
g.selectTie(g.getUserSession(request.user.id), tie.toInt)
|
||||
session.lock.unlock()
|
||||
}
|
||||
if (result.isSuccess) {
|
||||
NoContent
|
||||
|
||||
@@ -21,7 +21,7 @@ class MainMenuController @Inject()(
|
||||
|
||||
// Pass the request-handling function directly to authAction (no nested Action)
|
||||
def mainMenu(): Action[AnyContent] = authAction { implicit request: AuthenticatedRequest[AnyContent] =>
|
||||
Ok("Main Menu for user: " + request.user.name)
|
||||
Ok(views.html.mainmenu.navbar(Some(request.user)))
|
||||
}
|
||||
|
||||
def index(): Action[AnyContent] = authAction { implicit request: AuthenticatedRequest[AnyContent] =>
|
||||
@@ -36,6 +36,22 @@ class MainMenuController @Inject()(
|
||||
)
|
||||
Redirect(routes.IngameController.game(gameLobby.id))
|
||||
}
|
||||
|
||||
def joinGame(): Action[AnyContent] = authAction { implicit request: AuthenticatedRequest[AnyContent] =>
|
||||
val postData = request.body.asFormUrlEncoded
|
||||
if (postData.isDefined) {
|
||||
val gameId = postData.get.get("gameId").flatMap(_.headOption).getOrElse("")
|
||||
val game = podManager.getGame(gameId)
|
||||
game match {
|
||||
case Some(g) =>
|
||||
Redirect(routes.IngameController.joinGame(gameId))
|
||||
case None =>
|
||||
NotFound("Game not found")
|
||||
}
|
||||
} else {
|
||||
BadRequest("Invalid form submission")
|
||||
}
|
||||
}
|
||||
|
||||
def rules(): Action[AnyContent] = {
|
||||
Action { implicit request =>
|
||||
|
||||
@@ -64,7 +64,7 @@ class UserController @Inject()(
|
||||
if (sessionCookie.isDefined) {
|
||||
sessionManager.invalidateSession(sessionCookie.get.value)
|
||||
}
|
||||
NoContent.discardingCookies(DiscardingCookie("sessionId"))
|
||||
Redirect(routes.UserController.login()).discardingCookies(DiscardingCookie("sessionId"))
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user