diff options
Diffstat (limited to 'src/client/Update/LoggedIn')
| -rw-r--r-- | src/client/Update/LoggedIn/Account.elm | 29 | 
1 files changed, 21 insertions, 8 deletions
| diff --git a/src/client/Update/LoggedIn/Account.elm b/src/client/Update/LoggedIn/Account.elm index 2d9cd87..cf4c834 100644 --- a/src/client/Update/LoggedIn/Account.elm +++ b/src/client/Update/LoggedIn/Account.elm @@ -4,33 +4,35 @@ module Update.LoggedIn.Account    ) where  import Maybe +import Time exposing (Time) +import Dict  import Model.User exposing (UserId) -import Model.Payers exposing (..) +import Model.Payer exposing (..)  import Model.View.LoggedIn.Account exposing (..)  import Utils.Maybe exposing (isJust)  type AccountAction =    ToggleDetail -  | UpdatePayer UserId Int +  | UpdatePayer UserId Time Int    | ToggleIncomeEdition    | UpdateIncomeEdition String    | UpdateEditionError String -  | UpdateIncome Int +  | UpdateIncome Time Int  updateAccount : AccountAction -> Account -> Account  updateAccount action account =    case action of      ToggleDetail ->        { account | visibleDetail <- not account.visibleDetail } -    UpdatePayer userId cost -> -      { account | payers <- updatePayers account.payers userId cost } +    UpdatePayer userId creation amountDiff -> +      { account | payers <- updatePayers account.payers userId creation amountDiff }      ToggleIncomeEdition ->        { account | incomeEdition <-            if isJust account.incomeEdition              then Nothing -            else Just (initIncomeEdition (Maybe.withDefault 0 account.income)) +            else Just (initIncomeEdition (Maybe.withDefault 0 (getCurrentIncome account)))        }      UpdateIncomeEdition income ->        case account.incomeEdition of @@ -44,8 +46,19 @@ updateAccount action account =            { account | incomeEdition <- Just { incomeEdition | error <- Just error } }          Nothing ->            account -    UpdateIncome amount -> +    UpdateIncome currentTime amount ->        { account -      | income <- Just amount +      | 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        } | 
