From 8cd63a64abafe21378c35c2489d49f24c9ece3c9 Mon Sep 17 00:00:00 2001 From: Joris Date: Mon, 4 Apr 2016 01:27:36 +0200 Subject: Add income list CRUD in user page --- src/client/elm/LoggedIn/Update.elm | 52 ++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 16 deletions(-) (limited to 'src/client/elm/LoggedIn/Update.elm') 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 + ) -- cgit v1.2.3