aboutsummaryrefslogtreecommitdiff
path: root/src/client/elm/LoggedIn/Update.elm
diff options
context:
space:
mode:
authorJoris2016-04-04 01:27:36 +0200
committerJoris2016-04-04 01:27:36 +0200
commit8cd63a64abafe21378c35c2489d49f24c9ece3c9 (patch)
tree541145481d1492f3e388002d931cb3f8fec0acb2 /src/client/elm/LoggedIn/Update.elm
parent01e4ce0fa7c369996ec4ef3a033d16d6fa0eb715 (diff)
downloadbudget-8cd63a64abafe21378c35c2489d49f24c9ece3c9.tar.gz
budget-8cd63a64abafe21378c35c2489d49f24c9ece3c9.tar.bz2
budget-8cd63a64abafe21378c35c2489d49f24c9ece3c9.zip
Add income list CRUD in user page
Diffstat (limited to 'src/client/elm/LoggedIn/Update.elm')
-rw-r--r--src/client/elm/LoggedIn/Update.elm52
1 files changed, 36 insertions, 16 deletions
diff --git a/src/client/elm/LoggedIn/Update.elm b/src/client/elm/LoggedIn/Update.elm
index fd141c8..4598b27 100644
--- a/src/client/elm/LoggedIn/Update.elm
+++ b/src/client/elm/LoggedIn/Update.elm
@@ -8,7 +8,7 @@ import Task
import Effects exposing (Effects)
import Http exposing (Error(..))
-import Date
+import Date exposing (Date)
import Model exposing (Model)
import Model.Translations exposing (getMessage)
@@ -23,7 +23,8 @@ import LoggedIn.Model as LoggedInModel
import LoggedIn.Home.Action as HomeAction
import LoggedIn.Home.Update as HomeUpdate
-import LoggedIn.Home.Account.Action as AccountAction
+import LoggedIn.User.Action as UserAction
+import LoggedIn.User.Update as UserUpdate
import LoggedIn.Home.AddPayment.Action as AddPaymentAction
import LoggedIn.Home.AddPayment.Update as AddPaymentUpdate
@@ -46,6 +47,13 @@ update model action loggedIn =
, Effects.map LoggedInAction.HomeAction effects
)
+ LoggedInAction.UserAction userAction ->
+ case UserUpdate.update loggedData userAction loggedIn.user of
+ (user, effects) ->
+ ( { loggedIn | user = user }
+ , Effects.map LoggedInAction.UserAction effects
+ )
+
LoggedInAction.AddPayment name cost frequency ->
update model (LoggedInAction.HomeAction <| HomeAction.UpdateAdd <| AddPaymentAction.WaitingServer) loggedIn
|> Tuple.mapSnd (\effect ->
@@ -85,30 +93,42 @@ update model action loggedIn =
in { loggedIn | payments = newPayment :: loggedIn.payments }
)
- LoggedInAction.DeletePayment payment frequency ->
+ LoggedInAction.DeletePayment paymentId ->
( loggedIn
- , Server.deletePayment payment frequency
- |> Task.map (always (LoggedInAction.ValidateDeletePayment payment frequency))
+ , Server.deletePayment paymentId
+ |> Task.map (always (LoggedInAction.ValidateDeletePayment paymentId))
|> flip Task.onError (always <| Task.succeed LoggedInAction.NoOp)
|> Effects.task
)
- LoggedInAction.ValidateDeletePayment payment frequency ->
- ( { loggedIn | payments = deletePayment payment.id loggedIn.payments }
+ LoggedInAction.ValidateDeletePayment paymentId ->
+ ( { loggedIn | payments = deletePayment paymentId loggedIn.payments }
, Effects.none
)
- LoggedInAction.UpdateIncome amount ->
+ LoggedInAction.AddIncome creation amount ->
( loggedIn
- , Server.setIncome amount
- |> Task.map (\incomeId -> (LoggedInAction.ValidateUpdateIncome incomeId amount))
+ , Server.addIncome creation amount
+ |> Task.map (\incomeId -> (LoggedInAction.ValidateAddIncome incomeId creation amount))
|> flip Task.onError (always <| Task.succeed LoggedInAction.NoOp)
|> Effects.task
)
- LoggedInAction.ValidateUpdateIncome incomeId amount ->
- update model (LoggedInAction.HomeAction <| HomeAction.UpdateAccount <| AccountAction.ToggleIncomeEdition) loggedIn
- |> Tuple.mapFst (\loggedIn ->
- let newIncome = { userId = loggedIn.me, creation = model.currentTime, amount = amount }
- in { loggedIn | incomes = Dict.insert incomeId newIncome loggedIn.incomes }
- )
+ LoggedInAction.ValidateAddIncome incomeId creation amount ->
+ let newIncome = { userId = loggedIn.me, creation = (Date.toTime creation), amount = amount }
+ in ( { loggedIn | incomes = Dict.insert incomeId newIncome loggedIn.incomes }
+ , Effects.none
+ )
+
+ LoggedInAction.DeleteIncome incomeId ->
+ ( loggedIn
+ , Server.deleteIncome incomeId
+ |> Task.map (always <| LoggedInAction.ValidateDeleteIncome incomeId)
+ |> flip Task.onError (always <| Task.succeed LoggedInAction.NoOp)
+ |> Effects.task
+ )
+
+ LoggedInAction.ValidateDeleteIncome incomeId ->
+ ( { loggedIn | incomes = Dict.remove incomeId loggedIn.incomes }
+ , Effects.none
+ )