diff options
-rw-r--r-- | Assistant/Alert.hs | 7 | ||||
-rw-r--r-- | Assistant/Threads/TransferScanner.hs | 25 | ||||
-rw-r--r-- | Assistant/Types/DaemonStatus.hs | 3 |
3 files changed, 18 insertions, 17 deletions
diff --git a/Assistant/Alert.hs b/Assistant/Alert.hs index 25ddaf3ce..206694031 100644 --- a/Assistant/Alert.hs +++ b/Assistant/Alert.hs @@ -240,13 +240,6 @@ commitAlert = activityAlert Nothing showRemotes :: [Remote] -> TenseChunk showRemotes = UnTensed . T.intercalate ", " . map (T.pack . Remote.name) -scanAlert :: Alert -scanAlert = baseActivityAlert - { alertHeader = Just $ - tenseWords [Tensed "Scanning" "Scanned", "for file transfers"] - , alertPriority = Low - } - syncAlert :: [Remote] -> Alert syncAlert rs = baseActivityAlert { alertName = Just SyncAlert diff --git a/Assistant/Threads/TransferScanner.hs b/Assistant/Threads/TransferScanner.hs index 28490e4e4..4698a0d30 100644 --- a/Assistant/Threads/TransferScanner.hs +++ b/Assistant/Threads/TransferScanner.hs @@ -14,13 +14,13 @@ import Assistant.TransferQueue import Assistant.DaemonStatus import Assistant.Drop import Assistant.Sync -import Assistant.Alert import Logs.Transfer import Logs.Location import Logs.Web (webUUID) import qualified Remote import qualified Types.Remote as Remote import Utility.ThreadScheduler +import Utility.NotificationBroadcaster import qualified Git.LsFiles as LsFiles import qualified Backend import Annex.Content @@ -37,17 +37,22 @@ transferScannerThread = namedThread "TransferScanner" $ do go S.empty where go scanned = do + scanrunning False liftIO $ threadDelaySeconds (Seconds 2) (rs, infos) <- unzip <$> getScanRemote - void $ alertWhile scanAlert $ do - if any fullScan infos || any (`S.notMember` scanned) rs - then do - expensiveScan rs - go $ scanned `S.union` S.fromList rs - else do - mapM_ failedTransferScan rs - go scanned - return True + scanrunning True + if any fullScan infos || any (`S.notMember` scanned) rs + then do + expensiveScan rs + go $ scanned `S.union` S.fromList rs + else do + mapM_ failedTransferScan rs + go scanned + scanrunning b = do + ds <- modifyDaemonStatus $ \s -> + (s { transferScanRunning = b }, s) + liftIO $ sendNotification $ transferNotifier ds + {- All git remotes are synced, and all available remotes - are scanned in full on startup, for multiple reasons, including: - diff --git a/Assistant/Types/DaemonStatus.hs b/Assistant/Types/DaemonStatus.hs index 0fc800a37..99baf1572 100644 --- a/Assistant/Types/DaemonStatus.hs +++ b/Assistant/Types/DaemonStatus.hs @@ -35,6 +35,8 @@ data DaemonStatus = DaemonStatus , sanityCheckRunning :: Bool -- Last time the sanity checker ran , lastSanityCheck :: Maybe POSIXTime + -- True when a scan for file transfers is running + , transferScanRunning :: Bool -- Currently running file content transfers , currentTransfers :: TransferMap -- Messages to display to the user. @@ -77,6 +79,7 @@ newDaemonStatus = DaemonStatus <*> pure Nothing <*> pure False <*> pure Nothing + <*> pure False <*> pure M.empty <*> pure M.empty <*> pure firstAlertId |