Skip to content
Snippets Groups Projects
Commit 604e12fa authored by Jens Nolte's avatar Jens Nolte
Browse files

Update quasar-network to fix recursive follows bug

parent 4d4bf118
No related branches found
No related tags found
No related merge requests found
......@@ -17,6 +17,20 @@
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1645334861,
"narHash": "sha256-We9ECiMglthzbZ5S6Myqqf+RHzBFZPoM2qL5/jDkUjs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d5f237872975e6fb6f76eef1368b5634ffcd266f",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_3": {
"locked": {
"narHash": "sha256-We9ECiMglthzbZ5S6Myqqf+RHzBFZPoM2qL5/jDkUjs=",
"path": "/nix/store/65cmw2ws80b61dyysmnqn8py9vgqdydn-source",
......@@ -29,18 +43,15 @@
},
"quasar": {
"inputs": {
"nixpkgs": [
"quasar-network",
"nixpkgs"
]
"nixpkgs": "nixpkgs_3"
},
"locked": {
"host": "git.c3pb.de",
"lastModified": 1638315058,
"narHash": "sha256-SA99IShGlTc3IkcqG5YP/lnSyTWWHFIdvci5pWR8BrI=",
"lastModified": 1641081421,
"narHash": "sha256-LQiTNImd3/9Vbwidn7wmuwR1YI5K4ptX6GNVapPXSQg=",
"owner": "jens",
"repo": "quasar",
"rev": "7f163062fd2dc98041b5149c5ab23fd8cedde7e6",
"rev": "3094546aa29618a5d278b10eea354b9d6f383122",
"type": "gitlab"
},
"original": {
......@@ -57,11 +68,11 @@
},
"locked": {
"host": "git.c3pb.de",
"lastModified": 1638330205,
"narHash": "sha256-vVdNLDtS7mmj5FLJ7/lL0mJ9r05ZLhJQoRAlmDa7OC4=",
"lastModified": 1646681322,
"narHash": "sha256-Gra2t0qo3nxgiqWY6duMKCC/hU533WVqXP71uA4SnHU=",
"owner": "jens",
"repo": "quasar-network",
"rev": "12c98e410f4a6d96b9ea2390da1edc6d026ad7ae",
"rev": "8c6291ef3b4d37f61cbaeceae89ceacb0249b5d6",
"type": "gitlab"
},
"original": {
......
......@@ -10,7 +10,7 @@ import Brick.Widgets.Core (joinBorders)
import Control.Concurrent (threadDelay)
import Control.Concurrent.STM
import Control.Monad (replicateM)
import Control.Monad.Catch (displayException)
import Control.Monad.Catch
import Control.Monad.Reader
import Data.List (intersperse)
import Data.Maybe (isJust)
......@@ -67,7 +67,7 @@ data Interactive where
-- * Example UI
exampleUI :: MonadResourceManager m => Client SystemProtocol -> m UIRoot
exampleUI :: (MonadResourceManager m, MonadIO m, MonadMask m) => Client SystemProtocol -> m UIRoot
exampleUI systemClient = do
idle <- liftIO $ ContentElement . Label . fmap (("System idle: " <>) . show) <$> idle systemClient
buttons <- replicateM 20 $ InteractiveElement <$> clickMeButton
......@@ -76,7 +76,7 @@ exampleUI systemClient = do
pure $ UIRoot $ ListLayout $ idle : buttons <> walkers <> elements
randomString :: MonadResourceManager m => m Content
randomString :: (MonadResourceManager m, MonadIO m, MonadMask m) => m Content
randomString = do
var <- liftIO $ newObservableVar "[loading]"
async_ $ liftIO $ forever do
......@@ -86,7 +86,7 @@ randomString = do
pure $ Label $ toObservable var
randomWalkObservable :: MonadResourceManager m => m Content
randomWalkObservable :: (MonadResourceManager m, MonadIO m, MonadMask m) => m Content
randomWalkObservable = do
var <- liftIO $ newObservableVar (0 :: Int)
async_ $ liftIO $ forever do
......@@ -96,7 +96,7 @@ randomWalkObservable = do
pure $ Label $ show <$> toObservable var
clickMeButton :: MonadResourceManager m => m Interactive
clickMeButton :: (MonadResourceManager m, MonadIO m, MonadMask m) => m Interactive
clickMeButton = do
var <- liftIO $ newObservableVar "Click me!"
activeVar <- liftIO $ newTVarIO False
......@@ -128,7 +128,7 @@ data AppState = AppState {
mouseDownName :: Maybe Name,
notifyChangedStateVar :: TMVar UIState
}
stepUIState :: MonadResourceManager m => AppState -> m AppState
stepUIState :: (MonadResourceManager m, MonadIO m) => AppState -> m AppState
stepUIState appState = do
nextUIState <- stepState (uiState appState)
liftIO $ atomically $ putTMVar (notifyChangedStateVar appState) nextUIState
......@@ -161,7 +161,7 @@ instance Show Name where
class IsUI a where
initialState :: MonadResourceManager m => Events -> a -> m UIState
initialState :: (MonadResourceManager m, MonadIO m, MonadMask m) => Events -> a -> m UIState
......@@ -196,7 +196,7 @@ class IsState s a | a -> s where
mapState fn = toState . MappedState fn
stateEventHandler :: a -> Events
hasUpdate :: a -> STM Bool
stepState :: MonadResourceManager m => a -> m a
stepState :: (MonadResourceManager m, MonadIO m) => a -> m a
renderState :: a -> Reader AppState s
type UIState = State (Widget Name)
......@@ -367,7 +367,7 @@ instance IsState (ObservableMessage a) (ObservableState a) where
renderState (ObservableState _ _ last) = pure last
stateEventHandler (ObservableState ev _ _) = ev
newObservableState :: MonadResourceManager m => Events -> Observable a -> m (State (ObservableMessage a))
newObservableState :: (MonadResourceManager m, MonadIO m, MonadMask m) => Events -> Observable a -> m (State (ObservableMessage a))
newObservableState ev observable = do
var <- liftIO $ newTVarIO Nothing
observe observable (liftIO . atomically . writeTVar var . Just)
......@@ -382,7 +382,7 @@ main = withRootResourceManager do
withSystemClient \client ->
runUI =<< exampleUI client
runUI :: MonadResourceManager m => UIRoot -> m ()
runUI :: (MonadResourceManager m, MonadIO m, MonadMask m) => UIRoot -> m ()
runUI ui = do
uiState <- initialState emptyEventHandler ui
notifyChangedStateVar <- liftIO $ newEmptyTMVarIO
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment