From f4b0e4ec20cd903b7a603edfb043a21bb175b246 Mon Sep 17 00:00:00 2001 From: Jasper Van der Jeugt Date: Thu, 30 Jul 2020 17:02:43 +0200 Subject: Refactor name changing --- client/src/Client.elm | 57 +++++++++++++++++-------------------------------- client/src/Messages.elm | 14 ++++++------ 2 files changed, 26 insertions(+), 45 deletions(-) (limited to 'client/src') diff --git a/client/src/Client.elm b/client/src/Client.elm index e5afa74..aa2121c 100644 --- a/client/src/Client.elm +++ b/client/src/Client.elm @@ -17,9 +17,8 @@ type Msg | Send | WebSocketIn String -- Name changes - | StartChangingName - | ChangeName String - | SubmitNewName + | ChangeMyName String + | SubmitMyName type Model = Error String @@ -28,7 +27,7 @@ type Model } | Game { view : GameView - , changingName : Maybe String + , changeMyName : String } parseRoomId : Url -> Result String String @@ -52,26 +51,17 @@ view model = case model of (\p -> Html.li [] [Html.text p]) game.view.opponents , Html.h1 [] [Html.text "You"] - ] ++ - (case game.changingName of - Nothing -> - [ Html.p [] - [Html.text game.view.playerName] - , Html.button - [Html.Events.onClick StartChangingName] - [Html.text "change"] - ] - Just name -> - [ Html.input - [ Html.Attributes.value name - , Html.Events.onInput ChangeName - ] - [] - , Html.button - [Html.Events.onClick SubmitNewName] - [Html.text "change"] - ]) - + , Html.input + [ Html.Attributes.value game.changeMyName + , Html.Events.onInput ChangeMyName + ] + [] + , Html.button + [ Html.Events.onClick SubmitMyName + , Html.Attributes.disabled <| game.view.myName == game.changeMyName + ] + [Html.text "change"] + ] subscriptions : Model -> Sub Msg subscriptions model = webSocketIn WebSocketIn @@ -95,25 +85,16 @@ update msg model = case msg of _ -> ( Game { view = gameView - , changingName = Nothing + , changeMyName = gameView.myName } , Cmd.none ) - StartChangingName -> case model of - Game game -> - (Game {game | changingName = Just game.view.playerName}, Cmd.none) - _ -> (model, Cmd.none) - ChangeName name -> case model of - Game game -> (Game {game | changingName = Just name}, Cmd.none) + ChangeMyName name -> case model of + Game game -> (Game {game | changeMyName = name}, Cmd.none) _ -> (model, Cmd.none) - SubmitNewName -> case model of - Game game -> - ( Game {game | changingName = Nothing} - , case game.changingName of - Nothing -> Cmd.none - Just name -> send <| Messages.ChangeName name - ) + SubmitMyName -> case model of + Game game -> (model , send <| Messages.ChangeMyName game.changeMyName) _ -> (model, Cmd.none) main : Program () Model Msg diff --git a/client/src/Messages.elm b/client/src/Messages.elm index 730a66d..3fbacc3 100644 --- a/client/src/Messages.elm +++ b/client/src/Messages.elm @@ -10,20 +10,20 @@ import Set exposing (Set) type alias GameView = { opponents: (List String) - , playerName: String + , myName: String } jsonDecGameView : Json.Decode.Decoder ( GameView ) jsonDecGameView = - Json.Decode.succeed (\popponents pplayerName -> {opponents = popponents, playerName = pplayerName}) + Json.Decode.succeed (\popponents pmyName -> {opponents = popponents, myName = pmyName}) |> required "opponents" (Json.Decode.list (Json.Decode.string)) - |> required "playerName" (Json.Decode.string) + |> required "myName" (Json.Decode.string) jsonEncGameView : GameView -> Value jsonEncGameView val = Json.Encode.object [ ("opponents", (Json.Encode.list Json.Encode.string) val.opponents) - , ("playerName", Json.Encode.string val.playerName) + , ("myName", Json.Encode.string val.myName) ] @@ -53,15 +53,15 @@ jsonEncServerMessage val = type ClientMessage = - ChangeName String + ChangeMyName String jsonDecClientMessage : Json.Decode.Decoder ( ClientMessage ) jsonDecClientMessage = - Json.Decode.lazy (\_ -> Json.Decode.map ChangeName (Json.Decode.string)) + Json.Decode.lazy (\_ -> Json.Decode.map ChangeMyName (Json.Decode.string)) jsonEncClientMessage : ClientMessage -> Value -jsonEncClientMessage (ChangeName v1) = +jsonEncClientMessage (ChangeMyName v1) = Json.Encode.string v1 -- cgit v1.2.3