From c0ba211fe780a55b9369d2e2e637a1454eaa43d1 Mon Sep 17 00:00:00 2001 From: Eike Kettner Date: Wed, 26 May 2021 01:27:23 +0200 Subject: [PATCH] Externalize string in ui settings form --- .../src/main/elm/Comp/UiSettingsManage.elm | 77 ++++++++++++++----- .../elm/Messages/Comp/UiSettingsManage.elm | 10 +++ 2 files changed, 69 insertions(+), 18 deletions(-) diff --git a/modules/webapp/src/main/elm/Comp/UiSettingsManage.elm b/modules/webapp/src/main/elm/Comp/UiSettingsManage.elm index 10c2877c..2d0d9d95 100644 --- a/modules/webapp/src/main/elm/Comp/UiSettingsManage.elm +++ b/modules/webapp/src/main/elm/Comp/UiSettingsManage.elm @@ -23,10 +23,18 @@ import Styles as S type alias Model = { formModel : Comp.UiSettingsForm.Model , settings : Maybe UiSettings - , message : Maybe BasicResult + , formResult : FormResult } +type FormResult + = FormInit + | FormUnchanged + | FormSaved + | FormHttpError Http.Error + | FormUnknownError + + type Msg = UiSettingsFormMsg Comp.UiSettingsForm.Msg | Submit @@ -42,7 +50,7 @@ init flags settings = in ( { formModel = fm , settings = Nothing - , message = Nothing + , formResult = FormInit } , Cmd.map UiSettingsFormMsg fc ) @@ -79,12 +87,12 @@ update flags settings msg model = else sett - , message = + , formResult = if sett /= Nothing then - Nothing + FormInit else - model.message + model.formResult } , cmd = Cmd.none , newSettings = Nothing @@ -93,25 +101,32 @@ update flags settings msg model = Submit -> case model.settings of Just s -> - { model = { model | message = Nothing } + { model = { model | formResult = FormInit } , cmd = Api.saveClientSettings flags s (SaveSettingsResp s) , newSettings = Nothing } Nothing -> - { model = { model | message = Just (BasicResult False "Settings unchanged or invalid.") } + { model = { model | formResult = FormUnchanged } , cmd = Cmd.none , newSettings = Nothing } SaveSettingsResp newSettings (Ok res) -> - { model = { model | message = Just res } - , cmd = Cmd.none - , newSettings = Just newSettings - } + if res.success then + { model = { model | formResult = FormSaved } + , cmd = Cmd.none + , newSettings = Just newSettings + } + + else + { model = { model | formResult = FormUnknownError } + , cmd = Cmd.none + , newSettings = Nothing + } SaveSettingsResp _ (Err err) -> - UpdateResult model Cmd.none Nothing + UpdateResult { model | formResult = FormHttpError err } Cmd.none Nothing UpdateSettings -> let @@ -130,12 +145,26 @@ update flags settings msg model = isError : Model -> Bool isError model = - Maybe.map .success model.message == Just False + case model.formResult of + FormSaved -> + False + + FormInit -> + False + + FormUnchanged -> + True + + FormHttpError _ -> + True + + FormUnknownError -> + True isSuccess : Model -> Bool isSuccess model = - Maybe.map .success model.message == Just True + not (isError model) view2 : Texts -> Flags -> UiSettings -> String -> Model -> Html Msg @@ -157,12 +186,24 @@ view2 texts flags settings classes model = [ classList [ ( S.successMessage, isSuccess model ) , ( S.errorMessage, isError model ) - , ( "hidden", model.message == Nothing ) + , ( "hidden", model.formResult == FormInit ) ] ] - [ Maybe.map .message model.message - |> Maybe.withDefault "" - |> text + [ case model.formResult of + FormInit -> + text "" + + FormUnchanged -> + text texts.settingsUnchanged + + FormHttpError err -> + text (texts.httpError err) + + FormSaved -> + text texts.settingsSaved + + FormUnknownError -> + text texts.unknownSaveError ] , Html.map UiSettingsFormMsg (Comp.UiSettingsForm.view2 diff --git a/modules/webapp/src/main/elm/Messages/Comp/UiSettingsManage.elm b/modules/webapp/src/main/elm/Messages/Comp/UiSettingsManage.elm index 9a79f50a..16028d75 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/UiSettingsManage.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/UiSettingsManage.elm @@ -1,6 +1,8 @@ module Messages.Comp.UiSettingsManage exposing (Texts, gb) +import Http import Messages.Basics +import Messages.Comp.HttpError import Messages.Comp.UiSettingsForm @@ -8,6 +10,10 @@ type alias Texts = { basics : Messages.Basics.Texts , uiSettingsForm : Messages.Comp.UiSettingsForm.Texts , saveSettings : String + , settingsUnchanged : String + , settingsSaved : String + , unknownSaveError : String + , httpError : Http.Error -> String } @@ -16,4 +22,8 @@ gb = { basics = Messages.Basics.gb , uiSettingsForm = Messages.Comp.UiSettingsForm.gb , saveSettings = "Save settings" + , settingsUnchanged = "Settings unchanged or invalid." + , settingsSaved = "Settings saved." + , unknownSaveError = "Unknown error while trying to save settings." + , httpError = Messages.Comp.HttpError.gb }