From 1f28a03d47445569ae1feef8978a43779164967e Mon Sep 17 00:00:00 2001 From: efim Date: Wed, 26 Apr 2023 08:56:51 +0400 Subject: [PATCH] temporarily hardcoding backend room and session --- .../sunshine/planningpoker/Auth.scala | 29 +------------------ .../sunshine/planningpoker/BackendApp.scala | 3 +- .../planningpoker/MyHttpService.scala | 5 ++-- .../sunshine/planningpoker/RoomService.scala | 2 +- .../sunshine/planningpoker/TestModels.scala | 26 +++++++---------- .../sunshine/planningpoker/FrontendMain.scala | 1 - 6 files changed, 17 insertions(+), 49 deletions(-) diff --git a/backend/src/main/scala/industries/sunshine/planningpoker/Auth.scala b/backend/src/main/scala/industries/sunshine/planningpoker/Auth.scala index 0b35c49..95aa945 100644 --- a/backend/src/main/scala/industries/sunshine/planningpoker/Auth.scala +++ b/backend/src/main/scala/industries/sunshine/planningpoker/Auth.scala @@ -39,31 +39,6 @@ trait Auth[F[_]] { } object Auth { - def pureBadStub = new Auth[IO] { - override def authUser = - Kleisli((req: Request[IO]) => - OptionT.liftF( - IO(println(s"authUser: $req")) >> IO( - PlayerID(14) -> RoomID("testroom") - ) - ) - ) - override def joinRoom( - roomName: String, - roomPassword: String, - nickName: String, - nickPassword: String - ) = - IO( - println( - s"> access room for $roomName $roomPassword $nickName, to return stub 111" - ) - ) >> IO.pure(Right(ResponseCookie("authcookieName", "1"))) - - override def deleteSession(sessionId: Long): IO[Unit] = - IO(s"got request to leave for $sessionId") - } - type SessionsMap = Map[Long, (RoomID, PlayerID)] class SimpleAuth[F[_]: Sync]( @@ -118,8 +93,6 @@ object Auth { def make[F[_]: Sync](roomsService: RoomService[F]): F[Auth[F]] = for { - sessionsMap <- Ref.of[F, SessionsMap]( - Map(1L -> (RoomID("testroom"), PlayerID(1L))) - ) + sessionsMap <- Ref.of[F, SessionsMap](TestModels.testSessions) } yield new SimpleAuth(sessionsMap, roomsService) } diff --git a/backend/src/main/scala/industries/sunshine/planningpoker/BackendApp.scala b/backend/src/main/scala/industries/sunshine/planningpoker/BackendApp.scala index 9c0c73d..bb68f73 100644 --- a/backend/src/main/scala/industries/sunshine/planningpoker/BackendApp.scala +++ b/backend/src/main/scala/industries/sunshine/planningpoker/BackendApp.scala @@ -14,7 +14,8 @@ object BackendApp extends IOApp { val wiring = for { roomService <- Resource.eval(RoomService.make[IO]) - httpService = MyHttpService.create(Auth.pureBadStub) + auth <- Resource.eval(Auth.make(roomService)) + httpService = MyHttpService.create(auth) server <- EmberServerBuilder .default[IO] .withHost(host) diff --git a/backend/src/main/scala/industries/sunshine/planningpoker/MyHttpService.scala b/backend/src/main/scala/industries/sunshine/planningpoker/MyHttpService.scala index 53c6691..3a606a1 100644 --- a/backend/src/main/scala/industries/sunshine/planningpoker/MyHttpService.scala +++ b/backend/src/main/scala/industries/sunshine/planningpoker/MyHttpService.scala @@ -34,7 +34,7 @@ object MyHttpService { case WebSocketFrame.Text(text, _) => Sync[IO].delay(println(text)) case other => Sync[IO].delay(println(other)) } - wsb.build(send, receive) + IO(println(s"got ws request from $playerId in $roomId")) >> wsb.build(send, receive) } case GET -> Root / "vote" / vote as (playerId, roomId) => { // TODO forward these to the service implementation @@ -60,7 +60,8 @@ object MyHttpService { data.roomName, data.password, data.nickname, - data.nickPassword) + data.nickPassword + ) resp <- authResult match { case Left(error) => Forbidden(error) diff --git a/backend/src/main/scala/industries/sunshine/planningpoker/RoomService.scala b/backend/src/main/scala/industries/sunshine/planningpoker/RoomService.scala index f1da656..754d2ae 100644 --- a/backend/src/main/scala/industries/sunshine/planningpoker/RoomService.scala +++ b/backend/src/main/scala/industries/sunshine/planningpoker/RoomService.scala @@ -91,6 +91,6 @@ class InMemoryRoomService[F[_]: Sync](stateRef: Ref[F, Map[RoomID, Room]]) exten } object RoomService { def make[F[_]: Sync]: F[RoomService[F]] = { - Ref.of[F, Map[RoomID, Room]](Map.empty).map(new InMemoryRoomService[F](_)) + Ref.of[F, Map[RoomID, Room]](TestModels.testRooms).map(new InMemoryRoomService[F](_)) } } diff --git a/common/src/main/scala/industries/sunshine/planningpoker/TestModels.scala b/common/src/main/scala/industries/sunshine/planningpoker/TestModels.scala index c1e8d55..4466506 100644 --- a/common/src/main/scala/industries/sunshine/planningpoker/TestModels.scala +++ b/common/src/main/scala/industries/sunshine/planningpoker/TestModels.scala @@ -8,26 +8,20 @@ object TestModels { val birdy = Player("birdy", PlayerID(11)) val horsey = Player("horsey", PlayerID(12)) - val testRoom = { - RoomStateView( - players = List(me, birdy, pony), - me = me.id, - allowedCards = List("xs", "s", "m", "l", "xl"), - round = RoundState.Voting(myCard = Some("s"), alreadyVoted = List(me, pony)), - canCloseRound = true - ) - } - val testOpenedRoom = { - RoomStateView( + val testRoomBackend = Room( + id = RoomID("testroom"), players = List(me, birdy, pony, horsey), - me = me.id, + owner = me.id, + password = "password", allowedCards = List("xs", "s", "m", "l", "xl"), - round = RoundState.Viewing( + round = RoundState.Viewing( List(me.id -> "xs", pony.id -> "l", birdy.id -> "s", horsey.id -> "m") ), - canCloseRound = true - ) - } + playersPasswords = Map.empty // nickname into password + ) + + val testSessions = Map(1L -> (testRoomBackend.id, me.id)) + val testRooms = Map(testRoomBackend.id -> testRoomBackend) val testChangesList = List( RoomStateView( diff --git a/frontend/src/main/scala/industries/sunshine/planningpoker/FrontendMain.scala b/frontend/src/main/scala/industries/sunshine/planningpoker/FrontendMain.scala index 9535dba..3b46e5a 100644 --- a/frontend/src/main/scala/industries/sunshine/planningpoker/FrontendMain.scala +++ b/frontend/src/main/scala/industries/sunshine/planningpoker/FrontendMain.scala @@ -25,7 +25,6 @@ object Main { ) // TODO is this ok for state creation? link with auth component and use in another? val appStateSignal = Var(AppState(Some(TestModels.me.id))).signal - val staticStateSignal = Var(TestModels.testRoom).signal import io.laminext.websocket.circe.WebSocket._ import io.laminext.websocket.circe.webSocketReceiveBuilderSyntax