aboutsummaryrefslogtreecommitdiff
path: root/src/client/elm/Update/LoggedIn
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/elm/Update/LoggedIn')
-rw-r--r--src/client/elm/Update/LoggedIn/Account.elm83
1 files changed, 60 insertions, 23 deletions
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
+ )