| summaryrefslogtreecommitdiff | 
diff options
| -rw-r--r-- | src/login/Makefile | 2 | ||||
| -rw-r--r-- | src/login/elm-package.json | 19 | ||||
| -rw-r--r-- | src/login/elm.json | 27 | ||||
| -rw-r--r-- | src/login/src/Main.elm | 4 | ||||
| -rw-r--r-- | src/login/src/Struct/Event.elm | 13 | ||||
| -rw-r--r-- | src/login/src/Update/HandleConnected.elm | 4 | ||||
| -rw-r--r-- | src/login/src/Update/HandleServerReply.elm | 7 | ||||
| -rw-r--r-- | src/shared/elm/Util/Http.elm | 24 | 
8 files changed, 73 insertions, 27 deletions
| diff --git a/src/login/Makefile b/src/login/Makefile index 3b58a08..737be75 100644 --- a/src/login/Makefile +++ b/src/login/Makefile @@ -5,7 +5,7 @@ SRC_DIR ?= src  WWW_DIR ?= www  WWW_SCRIPT_DIR ?= $(WWW_DIR)/script -ELM_CC ?= elm-make --warn +ELM_CC ?= elm make --optimize  MAIN_MODULE ?= $(SRC_DIR)/Main.elm diff --git a/src/login/elm-package.json b/src/login/elm-package.json deleted file mode 100644 index d62239e..0000000 --- a/src/login/elm-package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ -    "version": "1.0.0", -    "summary": "helpful summary of your project, less than 80 characters", -    "repository": "https://github.com/nsensfel/tacticians-client.git", -    "license": "Apache 2.0", -    "source-directories": [ -        "src", -        "../shared/elm" -    ], -    "exposed-modules": [], -    "dependencies": { -        "NoRedInk/elm-decode-pipeline": "3.0.0 <= v < 4.0.0", -        "elm-lang/core": "5.1.1 <= v < 6.0.0", -        "elm-lang/dom": "1.1.1 <= v < 2.0.0", -        "elm-lang/html": "2.0.0 <= v < 3.0.0", -        "elm-lang/http": "1.0.0 <= v < 2.0.0" -    }, -    "elm-version": "0.18.0 <= v < 0.19.0" -} diff --git a/src/login/elm.json b/src/login/elm.json new file mode 100644 index 0000000..00c115b --- /dev/null +++ b/src/login/elm.json @@ -0,0 +1,27 @@ +{ +    "type": "application", +    "source-directories": [ +        "src", +        "../shared/elm" +    ], +    "elm-version": "0.19.0", +    "dependencies": { +        "direct": { +            "NoRedInk/elm-json-decode-pipeline": "1.0.0", +            "elm/browser": "1.0.1", +            "elm/core": "1.0.0", +            "elm/html": "1.0.0", +            "elm/http": "1.0.0", +            "elm/json": "1.1.2", +            "elm/url": "1.0.0" +        }, +        "indirect": { +            "elm/time": "1.0.0", +            "elm/virtual-dom": "1.0.2" +        } +    }, +    "test-dependencies": { +        "direct": {}, +        "indirect": {} +    } +}
\ No newline at end of file diff --git a/src/login/src/Main.elm b/src/login/src/Main.elm index 8140041..e0dd884 100644 --- a/src/login/src/Main.elm +++ b/src/login/src/Main.elm @@ -1,5 +1,5 @@  -- Elm ------------------------------------------------------------------------ -import Html +import Browser  -- Map -------------------------------------------------------------------  import Struct.Model @@ -13,7 +13,7 @@ import ElmModule.Update  main : (Program Struct.Flags.Type Struct.Model.Type Struct.Event.Type)  main = -   (Html.programWithFlags +   (Browser.element        {           init = ElmModule.Init.init,           view = ElmModule.View.view, diff --git a/src/login/src/Struct/Event.elm b/src/login/src/Struct/Event.elm index 8402cc9..faa4a2f 100644 --- a/src/login/src/Struct/Event.elm +++ b/src/login/src/Struct/Event.elm @@ -3,7 +3,10 @@ module Struct.Event exposing (Type(..), attempted)  -- Elm -------------------------------------------------------------------------  import Http --- Map ------------------------------------------------------------------- +-- Shared ---------------------------------------------------------------------- +import Util.Http + +-- Login -----------------------------------------------------------------------  import Struct.Error  import Struct.ServerReply  import Struct.HelpRequest @@ -34,4 +37,10 @@ attempted act =     case act of        (Result.Ok _) -> None        (Result.Err msg) -> -         (Failed (Struct.Error.new Struct.Error.Failure (toString msg))) +         (Failed +            (Struct.Error.new +               Struct.Error.Failure +               -- TODO: find a way to get some relevant text here. +               "(text representation not implemented)" +            ) +         ) diff --git a/src/login/src/Update/HandleConnected.elm b/src/login/src/Update/HandleConnected.elm index 8f6348b..00843c7 100644 --- a/src/login/src/Update/HandleConnected.elm +++ b/src/login/src/Update/HandleConnected.elm @@ -1,7 +1,7 @@  module Update.HandleConnected exposing (apply_to)  -- Elm ------------------------------------------------------------------------- -import Http +import Url  -- Login -----------------------------------------------------------------------  import Action.Ports @@ -29,7 +29,7 @@ apply_to model =                 case (Struct.Flags.maybe_get_param "goto" model.flags) of                    Nothing -> "/main-menu/"                    (Just string) -> -                     case (Http.decodeUri string) of +                     case (Url.percentDecode 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 2cbcf08..1fcb240 100644 --- a/src/login/src/Update/HandleServerReply.elm +++ b/src/login/src/Update/HandleServerReply.elm @@ -6,6 +6,8 @@ import Http  -- Shared ----------------------------------------------------------------------  import Action.Ports +import Util.Http +  -- Login -----------------------------------------------------------------------  import Struct.Error  import Struct.Event @@ -63,7 +65,10 @@ apply_to model query_result =        (Result.Err error) ->           (              (Struct.Model.invalidate -               (Struct.Error.new Struct.Error.Networking (toString error)) +               (Struct.Error.new +                  Struct.Error.Networking +                  (Util.Http.error_to_string error) +               )                 model              ),              Cmd.none diff --git a/src/shared/elm/Util/Http.elm b/src/shared/elm/Util/Http.elm new file mode 100644 index 0000000..a32a7c7 --- /dev/null +++ b/src/shared/elm/Util/Http.elm @@ -0,0 +1,24 @@ +module Util.Http exposing (error_to_string) + +import Http + +error_to_string : Http.Error -> String +error_to_string error = +   case error of +      (Http.BadUrl string) -> ("Invalid URL: \"" ++ string ++ "\"") +      Http.Timeout -> "Timed out" +      Http.NetworkError -> "Connection lost, network error." +      (Http.BadStatus response) -> +         ( +            "The HTTP request failed: " +            ++ (String.fromInt response.status.code) +            ++ ", " +            ++ response.status.message +            ++ "." +         ) +      (Http.BadPayload string _) -> +         ( +            "Server response not understood:\"" +            ++ string +            ++ "\"." +         ) | 


