module InitViewAction ( initViewAction ) where import Task exposing (..) import Http import Json.Decode as Json exposing ((:=)) import Update exposing (Action(GoLoggedInView, GoSignInView)) import Model.Payment exposing (Payments, paymentsDecoder) import Model.Payer exposing (Payers, payersDecoder) import Model.User exposing (Users, usersDecoder, UserId, userIdDecoder) initViewAction : Task Http.Error Action initViewAction = Task.onError loggedInView (always <| Task.succeed GoSignInView) loggedInView : Task Http.Error Action loggedInView = Task.map GoLoggedInView (Http.get usersDecoder "/users") `Task.andMap` (Http.get ("id" := userIdDecoder) "/whoAmI") `Task.andMap` (Http.get paymentsDecoder "/monthlyPayments") `Task.andMap` (Http.get paymentsDecoder "/payments") `Task.andMap` (Http.get ("number" := Json.int) "/payments/count") `Task.andMap` (Http.get payersDecoder "/payers")