diff --git a/Assistant/DaemonStatus.hs b/Assistant/DaemonStatus.hs index 3c0bfba429..13828d3eee 100644 --- a/Assistant/DaemonStatus.hs +++ b/Assistant/DaemonStatus.hs @@ -236,9 +236,14 @@ updateAlertMap dstatus a = notifyAlert dstatus `after` modifyDaemonStatus_ dstat - The alert is left visible afterwards, as filler. - Old filler is pruned, to prevent the map growing too large. -} alertWhile :: DaemonStatusHandle -> Alert -> IO Bool -> IO Bool -alertWhile dstatus alert a = do +alertWhile dstatus alert a = alertWhile' dstatus alert $ do + r <- a + return $ (r, r) + +alertWhile' :: DaemonStatusHandle -> Alert -> IO (Bool, a) -> IO a +alertWhile' dstatus alert a = do let alert' = alert { alertClass = Activity } i <- addAlert dstatus alert' - r <- bracket_ noop noop a - updateAlertMap dstatus $ convertToFiller i r + (ok, r) <- bracket_ noop noop a + updateAlertMap dstatus $ convertToFiller i ok return r diff --git a/Assistant/Threads/Watcher.hs b/Assistant/Threads/Watcher.hs index bfeec7630c..51dc572636 100644 --- a/Assistant/Threads/Watcher.hs +++ b/Assistant/Threads/Watcher.hs @@ -72,11 +72,11 @@ watchThread st dstatus transferqueue changechan = do } {- Initial scartup scan. The action should return once the scan is complete. -} -startupScan :: ThreadState -> DaemonStatusHandle -> IO a -> IO () +startupScan :: ThreadState -> DaemonStatusHandle -> IO a -> IO a startupScan st dstatus scanner = do runThreadState st $ showAction "scanning" - void $ alertWhile dstatus startupScanAlert $ do - void $ scanner + r <- alertWhile' dstatus startupScanAlert $ do + r <- scanner -- Notice any files that were deleted before -- watching was started. @@ -85,10 +85,13 @@ startupScan st dstatus scanner = do showAction "started" modifyDaemonStatus_ dstatus $ \s -> s { scanComplete = True } - return True + + return (True, r) void $ addAlert dstatus runningAlert + return r + ignored :: FilePath -> Bool ignored = ig . takeFileName where