Skip to content

Use the latest version of Shpadoinkle-continuations

Usage examples for some of the new constructs:

  handleLogin = kleisliT $ \(z, LoginV u p) -> do
    h   <- lift (liftJSM (hash p))
    commit . pur . second . const $ LoginV "" ""
    res <- lift $ login (UserId u) h
    case res of
      Just s -> do
        commit . pur . first $ \z' -> z' { session = Just s }
        commit . kleisliT $ \(z',v) -> do
          lift $ setStorage "session" (sessionId s)
          lift $ navigate @SPA InitialRoute
          z'' <- lift . getDatabase $ sessionId s
          commit . pur . first $ const z''
          lift $ navigate @SPA InitialRoute
      Nothing -> return () -- TODO: show message saying login failed
  
  reload = kleisli $ \(z,_) ->
    case session z of
      Just s -> do
        z' <- getDatabase (sessionId s)
        return . pur $ const (z', initialViewModel z')
      Nothing -> return (pur id)
Edited by Morgan Thomas

Merge request reports