summaryrefslogtreecommitdiff
path: root/Hero/Node.hs
diff options
context:
space:
mode:
authorBen Sima <ben@bsima.me>2020-07-24 23:39:21 -0700
committerBen Sima <ben@bsima.me>2020-07-24 23:39:21 -0700
commitc2827b0560082f5499c178ead746e7ff9448dd64 (patch)
tree2a562390c28b8e62eefb129df83a4b80984e33f3 /Hero/Node.hs
parentddc9b826bdc568004451fb14b458476e4c7e5061 (diff)
hero: working authenticated api calls
Diffstat (limited to 'Hero/Node.hs')
-rw-r--r--Hero/Node.hs20
1 files changed, 9 insertions, 11 deletions
diff --git a/Hero/Node.hs b/Hero/Node.hs
index e32cd59..55bc4b0 100644
--- a/Hero/Node.hs
+++ b/Hero/Node.hs
@@ -180,17 +180,13 @@ move (ScrollIntoView id) model = model <# do
move ValidateUserPassword model =
batchEff
model
- [doLogin, (SetComics </ fetchComics)]
+ [doLogin, pure FetchComics, pure <| ChangeURI discoverLink]
where
doLogin = do
- jslog "starting doLogin"
user <- getValue =<< Document.getElementById "user"
pass <- getValue =<< Document.getElementById "pass"
- jslog "sending login"
sendLogin (ms user) (ms pass) >>= \case
- Network.Success user -> do
- jslog "successful login"
- pure $ ChangeURI discoverLink
+ Network.Success _ -> pure NoOp
-- TODO: handle these error cases
Network.Loading -> pure NoOp
Network.Failure _ -> pure NoOp
@@ -201,9 +197,11 @@ fetchComics = Ajax.xhrByteString req /> Ajax.contents >>= \case
Nothing ->
pure $ Network.Failure "Could not fetch comics from server."
Just json ->
- pure $ Network.fromEither
- $ either (Left . ms) pure
- $ Aeson.eitherDecodeStrict json
+ json
+ |> Aeson.eitherDecodeStrict
+ |> either (Left . ms) pure
+ |> Network.fromEither
+ |> pure
where
req =
Ajax.Request
@@ -211,7 +209,7 @@ fetchComics = Ajax.xhrByteString req /> Ajax.contents >>= \case
Ajax.reqURI = "/api/comic", -- FIXME: can we replace this hardcoding?
Ajax.reqLogin = Nothing,
Ajax.reqHeaders = [],
- Ajax.reqWithCredentials = False,
+ Ajax.reqWithCredentials = True,
Ajax.reqData = Ajax.NoData
}
@@ -239,7 +237,7 @@ sendLogin u p = Ajax.xhrByteString req /> Ajax.contents >>= \case
[ ("Accept", "application/json"),
("Content-Type", "application/json")
],
- Ajax.reqWithCredentials = False,
+ Ajax.reqWithCredentials = True,
Ajax.reqData =
LoginForm (fromMisoString u) (fromMisoString p)
|> Aeson.encode