-
Notifications
You must be signed in to change notification settings - Fork 51
/
Copy pathMain.elm
54 lines (40 loc) · 1.16 KB
/
Main.elm
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
51
52
53
54
module Main exposing (..)
import Html exposing (..)
import Html.App exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (..)
import Html.Attributes exposing (..)
import Http
import Task exposing (Task)
import Events exposing (Event, decodeEvents)
type Msg
= ErrorOccurred String
| EventsFetched (List Event)
fetchEvents : String -> Cmd Msg
fetchEvents stream =
Http.get decodeEvents ("https://playing-with-projections.herokuapp.com/stream/" ++ stream)
|> Task.mapError toString
|> Task.perform ErrorOccurred EventsFetched
type alias Model =
{ events : List Event
}
init : ( Model, Cmd Msg )
init =
{ events = [] } ! [ (fetchEvents "0") ]
main =
Html.App.program
{ init = init
, update = update
, view = view
, subscriptions = \_ -> Sub.none
}
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
case msg of
ErrorOccurred error ->
Debug.log error (model ! [])
EventsFetched events ->
{ model | events = events } ! []
view : Model -> Html Msg
view model =
div [] (List.map (text << toString) model.events)