imm 1.6.0.0 → 1.6.1.0
raw patch · 4 files changed
+10/−3 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Imm.Database.FeedTable: listUnprocessedElements :: MonadThrow m => Handle m FeedTable -> FeedID -> m [FeedElement]
Files
- README.md +1/−1
- imm.cabal +1/−1
- src/lib/Imm/Database/FeedTable.hs +6/−0
- src/main/Main.hs +2/−1
README.md view
@@ -96,7 +96,7 @@ - Check for new elements without executing any action: ```bash- imm run --no-callbacks --read-only+ imm --read-only run --no-callbacks ``` - Execute configured callbacks for each new element from subscribed feeds:
imm.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.2 name: imm-version: 1.6.0.0+version: 1.6.1.0 synopsis: Execute arbitrary callbacks for each element of RSS/Atom feeds description: Cf README file homepage: https://github.com/k0ral/imm
src/lib/Imm/Database/FeedTable.hs view
@@ -198,6 +198,12 @@ , entryReadHashes = mempty } +listUnprocessedElements :: MonadThrow m + => Database.Handle m FeedTable -> FeedID -> m [FeedElement]+listUnprocessedElements database feedID = do+ DatabaseEntry{..} <- fetch database feedID+ return $ Map.keys $ Map.filter not entryItems+ isRead :: MonadCatch m => Database.Handle m FeedTable -> FeedID -> FeedElement -> m Bool isRead database feedID element = do DatabaseEntry _ _ readHashes _ items lastUpdate <- Database.fetch database feedID
src/main/Main.hs view
@@ -103,7 +103,8 @@ feed <- HTTP.get logger httpClient uri >>= parseXml xmlParser uri unreadElements <- filterM (fmap not . isRead database feedID) $ getElements feed- forM_ unreadElements $ \element -> do+ unprocessedElements <- listUnprocessedElements database feedID+ forM_ (unprocessedElements <> unreadElements) $ \element -> do log logger Info $ "New item:" <+> magenta (pretty feedID) <+> "/" <+> yellow (pretty $ getTitle element) atomically $ do writeTMChan newItemsChan (feedID, removeElements feed, element)