summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2018-12-21 23:03:02 +0100
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2018-12-21 23:03:02 +0100
commit6f7fb373813862c97ff657d3db62b882c29982e3 (patch)
treeca1c92b7eb35355b050751cf4d0db5eae6720101 /src
parent23ecc837380e2653d600e0246f50db30a3a238fc (diff)
Converts the login module to Elm 0.19.
Diffstat (limited to 'src')
-rw-r--r--src/login/Makefile2
-rw-r--r--src/login/elm-package.json19
-rw-r--r--src/login/elm.json27
-rw-r--r--src/login/src/Main.elm4
-rw-r--r--src/login/src/Struct/Event.elm13
-rw-r--r--src/login/src/Update/HandleConnected.elm4
-rw-r--r--src/login/src/Update/HandleServerReply.elm7
-rw-r--r--src/shared/elm/Util/Http.elm24
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
+ ++ "\"."
+ )