@@ -12,54 +12,55 @@ import Flame as F
1212import Flame.Html.Attribute as HA
1313import Flame.Html.Element as HE
1414
15- type Model = {
16- url :: String ,
17- result :: Result
18- }
15+ type Model =
16+ { url ∷ String
17+ , result ∷ Result
18+ }
1919
2020data Message = UpdateUrl String | Fetch | Fetched Result
2121
2222data Result = NotFetched | Fetching | Ok String | Error String
2323
24- derive instance eqResult :: Eq Result
24+ derive instance eqResult ∷ Eq Result
2525
26- init :: Model
27- init = {
28- url: " https://httpbin.org/get" ,
29- result: NotFetched
30- }
26+ init ∷ Model
27+ init =
28+ { url: " https://httpbin.org/get"
29+ , result: NotFetched
30+ }
3131
32- update :: ListUpdate Model Message
32+ update ∷ ListUpdate Model Message
3333update model =
3434 case _ of
35- UpdateUrl url -> F .noMessages $ model { url = url, result = NotFetched }
36- Fetch -> model { result = Fetching } :> [ do
37- response <- A .get AR .string model.url
38- pure <<< Just <<< Fetched $ case response of
39- Left error -> Error $ A .printError error
40- Right payload -> Ok payload.body
35+ UpdateUrl url → F .noMessages $ model { url = url, result = NotFetched }
36+ Fetch → model { result = Fetching } :>
37+ [ do
38+ response ← A .get AR .string model.url
39+ pure <<< Just <<< Fetched $ case response of
40+ Left error → Error $ A .printError error
41+ Right payload → Ok payload.body
4142 ]
42- Fetched result -> F .noMessages $ model { result = result }
43+ Fetched result → F .noMessages $ model { result = result }
4344
44- view :: Model -> Html Message
45- view { url, result } = HE .main " main" [
46- HE .input [HA .onInput UpdateUrl , HA .value url, HA .type' " text" ],
47- HE .button [HA .onClick Fetch , HA .disabled $ result == Fetching ] " Fetch" ,
48- case result of
49- NotFetched ->
50- HE .div_ " Not Fetched..."
51- Fetching ->
52- HE .div_ " Fetching..."
53- Ok ok ->
54- HE .pre_ <<< HE .code_ $ " Ok: " <> ok
55- Error error ->
56- HE .div_ $ " Error: " <> error
57- ]
45+ view ∷ Model → Html Message
46+ view { url, result } = HE .main " main"
47+ [ HE .input [ HA .onInput UpdateUrl , HA .value url, HA .type' " text" ]
48+ , HE .button [ HA .onClick Fetch , HA .disabled $ result == Fetching ] " Fetch"
49+ , case result of
50+ NotFetched →
51+ HE .div_ " Not Fetched..."
52+ Fetching →
53+ HE .div_ " Fetching..."
54+ Ok ok →
55+ HE .pre_ <<< HE .code_ $ " Ok: " <> ok
56+ Error error →
57+ HE .div_ $ " Error: " <> error
58+ ]
5859
59- main :: Effect Unit
60- main = F .mount_ (QuerySelector " body" ) {
61- init: F .noMessages init,
62- subscribe: [] ,
63- update,
64- view
65- }
60+ main ∷ Effect Unit
61+ main = F .mount_ (QuerySelector " body" )
62+ { init: F .noMessages init
63+ , subscribe: []
64+ , update
65+ , view
66+ }
0 commit comments