| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/login')
| -rw-r--r-- | src/login/src/Struct/Flags.elm | 42 | ||||
| -rw-r--r-- | src/login/src/Struct/Model.elm | 6 | ||||
| -rw-r--r-- | src/login/src/Update/HandleConnected.elm | 19 | ||||
| -rw-r--r-- | src/login/src/Update/HandleServerReply.elm | 80 | 
4 files changed, 49 insertions, 98 deletions
diff --git a/src/login/src/Struct/Flags.elm b/src/login/src/Struct/Flags.elm deleted file mode 100644 index 228d258..0000000 --- a/src/login/src/Struct/Flags.elm +++ /dev/null @@ -1,42 +0,0 @@ -module Struct.Flags exposing -   ( -      Type, -      maybe_get_param -   ) - --- Elm ------------------------------------------------------------------------- -import List - --- Map ------------------------------------------------------------------- -import Util.List - --------------------------------------------------------------------------------- --- TYPES ----------------------------------------------------------------------- --------------------------------------------------------------------------------- -type alias Type = -   { -      user_id : String, -      token : String, -      url_params : (List (List String)) -   } - --------------------------------------------------------------------------------- --- LOCAL ----------------------------------------------------------------------- --------------------------------------------------------------------------------- - --------------------------------------------------------------------------------- --- EXPORTED -------------------------------------------------------------------- --------------------------------------------------------------------------------- -maybe_get_param : String -> Type -> (Maybe String) -maybe_get_param param flags = -   case -      (Util.List.get_first -         (\e -> ((List.head e) == (Just param))) -         flags.url_params -      ) -   of -      Nothing -> Nothing -      (Just a) -> -         case (List.tail a) of -            Nothing -> Nothing -            (Just b) -> (List.head b) diff --git a/src/login/src/Struct/Model.elm b/src/login/src/Struct/Model.elm index 859c054..7d14239 100644 --- a/src/login/src/Struct/Model.elm +++ b/src/login/src/Struct/Model.elm @@ -9,9 +9,11 @@ module Struct.Model exposing  -- Elm ------------------------------------------------------------------------- +-- Shared ---------------------------------------------------------------------- +import Struct.Flags +  -- Login -----------------------------------------------------------------------  import Struct.Error -import Struct.Flags  import Struct.HelpRequest  import Struct.UI @@ -22,6 +24,7 @@ type alias Type =     {        help_request: Struct.HelpRequest.Type,        error: (Maybe Struct.Error.Type), +      flags: Struct.Flags.Type,        username: String,        password1: String,        password2: String, @@ -46,6 +49,7 @@ new flags =        model =           {              help_request = Struct.HelpRequest.None, +            flags = flags,              error = Nothing,              username = "",              password1 = "", diff --git a/src/login/src/Update/HandleConnected.elm b/src/login/src/Update/HandleConnected.elm index 2888153..8f6348b 100644 --- a/src/login/src/Update/HandleConnected.elm +++ b/src/login/src/Update/HandleConnected.elm @@ -1,13 +1,16 @@  module Update.HandleConnected exposing (apply_to) +  -- Elm ------------------------------------------------------------------------- +import Http  -- Login -----------------------------------------------------------------------  import Action.Ports  import Constants.IO -import Struct.Model  import Struct.Event +import Struct.Flags +import Struct.Model  --------------------------------------------------------------------------------  -- LOCAL ----------------------------------------------------------------------- @@ -20,5 +23,17 @@ apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type))  apply_to model =     (        model, -      (Action.Ports.go_to (Constants.IO.base_url ++"/main-menu/")) +      (Action.Ports.go_to +         (Constants.IO.base_url ++ +            ( +               case (Struct.Flags.maybe_get_param "goto" model.flags) of +                  Nothing -> "/main-menu/" +                  (Just string) -> +                     case (Http.decodeUri string) of +                        Nothing -> "/main-menu/" +                        (Just "") -> "/main-menu/" +                        (Just url) -> url +            ) +         ) +      )     ) diff --git a/src/login/src/Update/HandleServerReply.elm b/src/login/src/Update/HandleServerReply.elm index b0f4e6b..2cbcf08 100644 --- a/src/login/src/Update/HandleServerReply.elm +++ b/src/login/src/Update/HandleServerReply.elm @@ -3,9 +3,10 @@ module Update.HandleServerReply exposing (apply_to)  -- Elm -------------------------------------------------------------------------  import Http --- Map ------------------------------------------------------------------- +-- Shared ----------------------------------------------------------------------  import Action.Ports +-- Login -----------------------------------------------------------------------  import Struct.Error  import Struct.Event  import Struct.Model @@ -21,46 +22,26 @@ import Struct.ServerReply  set_session : (        String ->        String -> -      ( -         Struct.Model.Type, -         (Maybe Struct.Error.Type), -         (List (Cmd Struct.Event.Type)) -      ) -> -      ( -         Struct.Model.Type, -         (Maybe Struct.Error.Type), -         (List (Cmd Struct.Event.Type)) -      ) +      (Struct.Model.Type, (List (Cmd Struct.Event.Type))) -> +      (Struct.Model.Type, (List (Cmd Struct.Event.Type)))     )  set_session pid stk current_state = -   case current_state of -      (_, (Just _), _) -> current_state - -      (model, _, cmd_list) -> +   let (model, cmds) = current_state in +      ( +         {model | +            player_id = pid, +            session_token = stk +         },           ( -            {model | -               player_id = pid, -               session_token = stk -            }, -            Nothing, -            ( -               (Action.Ports.store_new_session (pid, stk)) -               :: cmd_list -            ) +            (Action.Ports.store_new_session (pid, stk)) +            :: cmds           ) +      )  apply_command : (        Struct.ServerReply.Type -> -      ( -         Struct.Model.Type, -         (Maybe Struct.Error.Type), -         (List (Cmd Struct.Event.Type)) -      ) -> -      ( -         Struct.Model.Type, -         (Maybe Struct.Error.Type), -         (List (Cmd Struct.Event.Type)) -      ) +      (Struct.Model.Type, (List (Cmd Struct.Event.Type))) -> +      (Struct.Model.Type, (List (Cmd Struct.Event.Type)))     )  apply_command command current_state =     case command of @@ -89,23 +70,16 @@ apply_to model query_result =           )        (Result.Ok commands) -> -         ( -            case -               (List.foldl -                  (apply_command) -                  (model, Nothing, []) -                  commands +         let +            (new_model, elm_commands) = +               (List.foldl (apply_command) (model, [Cmd.none]) commands) +         in +            ( +               new_model, +               ( +                  case elm_commands of +                     [] -> Cmd.none +                     [cmd] -> cmd +                     _ -> (Cmd.batch elm_commands)                 ) -            of -               (updated_model, Nothing, cmds) -> -                  ( -                     updated_model, -                     (Cmd.batch cmds) -                  ) - -               (_, (Just error), _) -> -                  ( -                     (Struct.Model.invalidate error model), -                     Cmd.none -                  ) -         ) +            )  | 


