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 + ++ "\"." + ) |