@@ -1,36 +1,48 @@
11module Main exposing (..)
22
33import Browser
4+import FFI
45import Html exposing (..)
56
67
7−type alias Msg =
8− ()
8+type Msg
9+ = RecieveMessage String
910
1011
1112type alias Model =
12− ()
13+ { messages : List String
14+ }
1315
1416
1517main : Program () Model Msg
1618main =
17− Browser.sandbox
18− { init = init
19+ Browser.element
20+ { init = \_ -> ( init, Cmd.none )
1921 , view = view
2022 , update = update
23+ , subscriptions = \_ -> FFI.getString RecieveMessage
2124 }
2225
2326
2427init : Model
2528init =
26− ()
29+ { messages = []
30+ }
2731
2832
2933view : Model -> Html Msg
30−view _ =
31− h1 [] [ text "HELLO" ]
32−
33−
34−update : Msg -> Model -> Model
35−update _ model =
36− model
34+view model =
35+ div []
36+ [ h1 [] [ text "HELLO" ]
37+ , ul [] (model.messages |> List.map (text >> List.singleton >> li []))
38+ ]
39+
40+
41+update : Msg -> Model -> ( Model, Cmd Msg )
42+update msg model =
43+ case msg of
44+ RecieveMessage x ->
45+ ( { messages = x :: model.messages
46+ }
47+ , Cmd.none
48+ )