module LoggedIn.Home.AddPayment.Update exposing ( update , addPaymentError ) import Maybe import Json.Decode as Json exposing ((:=)) import LoggedIn.Home.AddPayment.Msg as AddPaymentMsg import LoggedIn.Home.AddPayment.Model as AddPaymentModel import Model.Translations exposing (Translations, getMessage) import Model.Payment exposing (Frequency(..)) update : AddPaymentMsg.Msg -> AddPaymentModel.Model -> AddPaymentModel.Model update action addPayment = case action of AddPaymentMsg.NoOp -> addPayment AddPaymentMsg.Init frequency -> AddPaymentModel.init frequency AddPaymentMsg.UpdateName name -> { addPayment | name = name } AddPaymentMsg.UpdateCost cost -> { addPayment | cost = cost } AddPaymentMsg.AddError nameError costError -> { addPayment | nameError = nameError , costError = costError , waitingServer = False } AddPaymentMsg.ToggleFrequency -> { addPayment | frequency = if addPayment.frequency == Punctual then Monthly else Punctual } AddPaymentMsg.WaitingServer -> { addPayment | waitingServer = True } addPaymentError : Translations -> String -> Maybe AddPaymentMsg.Msg addPaymentError translations jsonErr = let decoder = Json.object2 (,) (Json.maybe <| "name" := Json.string) (Json.maybe <| "cost" := Json.string) in case Json.decodeString decoder jsonErr of Err _ -> Nothing Ok (mbNameKey, mbCostKey) -> Just <| AddPaymentMsg.AddError (Maybe.map (flip getMessage translations) mbNameKey) (Maybe.map (flip getMessage translations) mbCostKey)