@@ -1,16 +1,19 @@
1module Main exposing (..)
1module Main exposing (..)
3import Browser
3import Browser
4−import FFI
4+import FFI exposing (getBridge)
5import Html exposing (..)
5import Html exposing (..)
6+import Utils exposing (..)
9 = RecieveMessage String
10 = RecieveMessage String
12type alias Model =
14type alias Model =
13 { messages : List String
15 { messages : List String
16+ , error : Maybe String
@@ -20,29 +23,34 @@ main =
20 { init = \_ -> ( init, Cmd.none )
23 { init = \_ -> ( init, Cmd.none )
21 , view = view
24 , view = view
22 , update = update
25 , update = update
23− , subscriptions = \_ -> FFI.getString RecieveMessage
26+ , subscriptions = \_ -> getBridge Error (always (RecieveMessage "Got it!"))
27init : Model
30init : Model
29 { messages = []
32 { messages = []
33view : Model -> Html Msg
37view : Model -> Html Msg
34view model =
38view model =
40+ (maybeList model.error (text >> List.singleton >> h2 [])
36− [ h1 [] [ text "HELLO" ]
41+ ++ [ h1 [] [ text "HELLO" ]
37− , ul [] (model.messages |> List.map (text >> List.singleton >> li []))
42+ , ul [] (model.messages |> List.map (text >> List.singleton >> li []))
41update : Msg -> Model -> ( Model, Cmd Msg )
47update : Msg -> Model -> ( Model, Cmd Msg )
42update msg model =
48update msg model =
43 case msg of
49 case msg of
44 RecieveMessage x ->
50 RecieveMessage x ->
45− ( { messages = x :: model.messages
51+ ( { model | messages = x :: model.messages }
47 , Cmd.none
52 , Cmd.none
56+ ( { model | error = Just err }, Cmd.none )