From 95d4359f7cd56cccb1ce2b9eef47b7a07a5b8d5b Mon Sep 17 00:00:00 2001 From: Jens Nolte <jens@nightmarestudio.de> Date: Fri, 31 Jan 2020 18:34:13 +0100 Subject: [PATCH] Update askBar to work from Proxy --- src/QBar/Core.hs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/QBar/Core.hs b/src/QBar/Core.hs index f494e5d..c9ec6d7 100644 --- a/src/QBar/Core.hs +++ b/src/QBar/Core.hs @@ -87,6 +87,15 @@ data Bar = Bar { data BarUpdateChannel = BarUpdateChannel (IO ()) type BarUpdateEvent = Event.Event + +class MonadBarIO m where + askBar :: m Bar +instance MonadBarIO BarIO where + askBar = lift ask +instance MonadBarIO (Proxy a' a b' b BarIO) where + askBar = lift askBar + + mkBlockState :: BlockOutput -> BlockState mkBlockState blockOutput = Just (blockOutput, Nothing) @@ -104,9 +113,6 @@ updateEventHandler eventHandler (Just (blockOutput, _)) = Just (blockOutput, Jus runBarIO :: Bar -> BarIO r -> IO r runBarIO bar action = runReaderT (runSafeT action) bar -askBar :: BarIO Bar -askBar = lift ask - modify :: (BlockOutput -> BlockOutput) -> Pipe BlockState BlockState BarIO r modify x = PP.map (over (_Just . _1) x) @@ -152,7 +158,7 @@ sharedInterval seconds = do -- Updates all client blocks -- If send returns 'False' the clients mailbox has been closed, so it is removed bar <- askBar - liftIO $ modifyMVar_ clientsMVar $ fmap catMaybes . mapConcurrently (\r -> runBarIO bar $ runAndFilterClient r) + liftIO $ modifyMVar_ clientsMVar $ fmap catMaybes . mapConcurrently (runBarIO bar . runAndFilterClient) -- Then update the bar updateBar -- GitLab