From 46a680f7ca7def264a0f0b616883fb8e47271bab Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Sun, 12 Apr 2020 12:15:49 -0700 Subject: De-namespace Alpha A bunch of formatting changes got in there too. Oops. I will probably eventually de-namespace everything, mostly because I'm tired of typing "Com.Whatever.Thing" all the time. A better namespacing strategy might be to use normal Haskell namespacing (Data, Control, Network, etc) for code that is not specific to biz activities (i.e. if I could open-source it at any time), and use simply "Biz" for stuff that I would never want to open-source. --- Com/InfluencedByBooks/Move.hs | 57 +++++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 26 deletions(-) (limited to 'Com/InfluencedByBooks/Move.hs') diff --git a/Com/InfluencedByBooks/Move.hs b/Com/InfluencedByBooks/Move.hs index d6cb12e..5d6f0c4 100644 --- a/Com/InfluencedByBooks/Move.hs +++ b/Com/InfluencedByBooks/Move.hs @@ -2,25 +2,32 @@ {-# LANGUAGE OverloadedStrings #-} -- | App update logic -module Com.InfluencedByBooks.Move ( - move +module Com.InfluencedByBooks.Move + ( move -- * Server interactions , fetchPeople - ) where + ) +where -import Com.InfluencedByBooks.Core as Core -import Com.Simatime.Alpha -import Com.Simatime.Network -import Data.Aeson -import JavaScript.Web.XMLHttpRequest (Request(..), Method(GET), RequestData(NoData), contents, xhrByteString) -import Miso -import Miso.String +import Alpha +import Com.InfluencedByBooks.Core as Core +import Com.Simatime.Network +import Data.Aeson +import JavaScript.Web.XMLHttpRequest ( Request(..) + , Method(GET) + , RequestData(NoData) + , contents + , xhrByteString + ) +import Miso +import Miso.String move :: Action -> Model -> Effect Action Model -move Nop m = noEff m +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 > pure Nop +move FetchPeople m = m <# (SetPeople 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 - } + 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 + } -- cgit v1.2.3