aboutsummaryrefslogtreecommitdiff
path: root/src/client/elm/Model/InitResult.elm
blob: c8da53307ddbc24bd9997dceb8803963fd2d919a (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
module Model.InitResult exposing
  ( InitResult(..)
  , initResultDecoder
  )

import Json.Decode as Json exposing ((:=))

import Model.Init exposing (Init, initDecoder)

type InitResult =
  InitEmpty
  | InitSuccess Init
  | InitError String

initResultDecoder : Json.Decoder InitResult
initResultDecoder = ("tag" := Json.string) `Json.andThen` initResultDecoderWithTag

initResultDecoderWithTag : String -> Json.Decoder InitResult
initResultDecoderWithTag tag =
  case tag of
    "InitEmpty" ->
      Json.succeed InitEmpty
    "InitSuccess" ->
      Json.map InitSuccess ("contents" := initDecoder)
    "InitError" ->
      Json.map InitError ("contents" := Json.string)
    _ ->
      Json.fail <| "got " ++ tag ++ " for InitResult"