module LoggedIn.Home.Account.Update ( update ) where import Maybe import Effects exposing (Effects) import LoggedData exposing (LoggedData) import LoggedIn.Home.Account.Action as AccountAction import LoggedIn.Home.Account.Model as AccountModel import Utils.Maybe exposing (isJust) update : LoggedData -> AccountAction.Action -> AccountModel.Model -> (AccountModel.Model, Effects AccountAction.Action) update loggedData action account = case action of AccountAction.NoOp -> (account, Effects.none) AccountAction.ToggleDetail -> ( { account | visibleDetail = not account.visibleDetail } , Effects.none ) AccountAction.ToggleIncomeEdition -> ( { account | incomeEdition = if isJust account.incomeEdition then Nothing else Just (AccountModel.initIncomeEdition (Maybe.withDefault 0 (AccountModel.getCurrentIncome loggedData.incomes loggedData.me account))) } , Effects.none ) AccountAction.UpdateIncomeEdition income -> ( case account.incomeEdition of Nothing -> account Just incomeEdition -> { account | incomeEdition = Just { incomeEdition | income = income } } , Effects.none ) AccountAction.UpdateEditionError error -> ( case account.incomeEdition of Nothing -> account Just incomeEdition -> { account | incomeEdition = Just { incomeEdition | error = Just error } } , Effects.none )