diff options
Diffstat (limited to 'lore/Biz/Ibb/Move.hs')
-rw-r--r-- | lore/Biz/Ibb/Move.hs | 43 |
1 files changed, 0 insertions, 43 deletions
diff --git a/lore/Biz/Ibb/Move.hs b/lore/Biz/Ibb/Move.hs deleted file mode 100644 index 0d83e8a..0000000 --- a/lore/Biz/Ibb/Move.hs +++ /dev/null @@ -1,43 +0,0 @@ -{-# LANGUAGE NoImplicitPrelude #-} -{-# LANGUAGE OverloadedStrings #-} - --- | App update logic -module Biz.Ibb.Move ( - move - -- * Server interactions - , fetchPeople - ) where - -import Alpha -import Data.Aeson -import Biz.Ibb.Core as Core -import JavaScript.Web.XMLHttpRequest (Request(..), Method(GET), RequestData(NoData), contents, xhrByteString) -import Miso -import Miso.String -import Network.RemoteData - -move :: Action -> Model -> Effect Action Model -move Nop m = noEff m -move (HandleRoute u) m = m { uri = u } <# pure Nop -move (ChangeRoute u) m = m <# do pushURI u >> pure Nop -move FetchPeople m = m <# (SetPeople /@ fetchPeople) -move (SetPeople ps) m = noEff m { people = ps } - -fetchPeople :: IO (WebData [Core.Person]) -fetchPeople = do - mjson <- contents /@ xhrByteString req - case mjson of - Nothing -> pure $ Failure "could not read from server" - Just a -> pure - $ fromEither - $ either (Left . ms) pure - $ eitherDecodeStrict a - where - req = Request { reqMethod = GET - -- FIXME: can replace this hardcoding with a function? - , reqURI = "/api/people" - , reqLogin = Nothing - , reqHeaders = [] - , reqWithCredentials = False - , reqData = NoData - } |