From d22d10da342520163014dda255d5d9bd5e1a80c0 Mon Sep 17 00:00:00 2001 From: Joris Date: Sun, 3 Jan 2016 19:57:59 +0100 Subject: Move update income to the account update layer --- src/client/elm/Update/LoggedIn/Account.elm | 83 +++++++++++++++++++++--------- 1 file changed, 60 insertions(+), 23 deletions(-) (limited to 'src/client/elm/Update/LoggedIn/Account.elm') diff --git a/src/client/elm/Update/LoggedIn/Account.elm b/src/client/elm/Update/LoggedIn/Account.elm index 496fab1..16d67ac 100644 --- a/src/client/elm/Update/LoggedIn/Account.elm +++ b/src/client/elm/Update/LoggedIn/Account.elm @@ -4,6 +4,11 @@ module Update.LoggedIn.Account import Maybe import Dict +import Task + +import Effects exposing (Effects) + +import Server import Model.Payer exposing (updatePayers) import Model.Action.AccountAction exposing (..) @@ -11,44 +16,76 @@ import Model.View.LoggedIn.Account exposing (..) import Utils.Maybe exposing (isJust) -updateAccount : AccountAction -> Account -> Account +updateAccount : AccountAction -> Account -> (Account, Effects AccountAction) updateAccount action account = case action of + + NoOp -> + (account, Effects.none) + ToggleDetail -> - { account | visibleDetail = not account.visibleDetail } + ( { account | visibleDetail = not account.visibleDetail } + , Effects.none + ) + UpdatePayer userId creation amountDiff -> - { account | payers = updatePayers account.payers userId creation amountDiff } + ( { account | payers = updatePayers account.payers userId creation amountDiff } + , Effects.none + ) + ToggleIncomeEdition -> - { account | incomeEdition = + ( { account | incomeEdition = if isJust account.incomeEdition then Nothing else Just (initIncomeEdition (Maybe.withDefault 0 (getCurrentIncome account))) } + , Effects.none + ) + UpdateIncomeEdition income -> case account.incomeEdition of Just incomeEdition -> - { account | incomeEdition = Just { incomeEdition | income = income } } + ( { account | incomeEdition = Just { incomeEdition | income = income } } + , Effects.none + ) Nothing -> - account + ( account + , Effects.none + ) + UpdateEditionError error -> case account.incomeEdition of Just incomeEdition -> - { account | incomeEdition = Just { incomeEdition | error = Just error } } + ( { account | incomeEdition = Just { incomeEdition | error = Just error } } + , Effects.none + ) Nothing -> - account + ( account + , Effects.none + ) + UpdateIncome currentTime amount -> - { account - | payers = - account.payers - |> Dict.update account.me (\mbPayer -> - case mbPayer of - Just payer -> - Just - { payer - | incomes = payer.incomes ++ [{ creation = currentTime, amount = amount }] - } - Nothing -> - Nothing - ) - , incomeEdition = Nothing - } + ( account + , Server.setIncome currentTime amount + |> flip Task.onError (always <| Task.succeed NoOp) + |> Effects.task + ) + + ValidateUpdateIncome currentTime amount -> + ( { account + | payers = + account.payers + |> Dict.update account.me (\mbPayer -> + case mbPayer of + Just payer -> + Just + { payer + | incomes = payer.incomes ++ [{ creation = currentTime, amount = amount }] + } + Nothing -> + Nothing + ) + , incomeEdition = Nothing + } + , Effects.none + ) -- cgit v1.2.3