module Model ( Model , initialModel ) where import Time exposing (Time) import Json.Decode as Json import TransitRouter import Route exposing (Route) import Model.View exposing (..) import Model.Translations exposing (..) import Model.Conf exposing (..) import Model.InitResult exposing (..) import LoggedIn.Model as LoggedInModel import SignIn.Model as SignInModel import Utils.Maybe exposing (isJust) type alias Model = { view : View , currentTime : Time , translations : Translations , conf : Conf , transitRouter : TransitRouter.TransitRouter Route } initialModel : Time -> String -> String -> InitResult -> Model initialModel initialTime translations conf initResult = { view = case initResult of InitEmpty -> SignInView (SignInModel.init Nothing) InitSuccess init -> LoggedInView (LoggedInModel.init init) InitError error -> SignInView (SignInModel.init (Just error)) , currentTime = initialTime , translations = case Json.decodeString translationsDecoder translations of Ok translations -> translations Err _ -> [] , conf = case Json.decodeString confDecoder conf of Ok conf -> conf Err _ -> { currency = "" } , transitRouter = TransitRouter.empty Route.Empty }