aboutsummaryrefslogtreecommitdiff
path: root/src/client/elm/Model.elm
blob: b4213d5437b5b6ef4f8dec7f11df245f99c4846a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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
  }