diff --git a/server/managers/RssFeedManager.js b/server/managers/RssFeedManager.js index 7eb1cce7..3149689d 100644 --- a/server/managers/RssFeedManager.js +++ b/server/managers/RssFeedManager.js @@ -103,19 +103,29 @@ class RssFeedManager { await Database.updateFeed(feed) } } else if (feed.entityType === 'collection') { - const collection = await Database.collectionModel.findByPk(feed.entityId) + const collection = await Database.collectionModel.findByPk(feed.entityId, { + include: Database.collectionBookModel + }) if (collection) { const collectionExpanded = await collection.getOldJsonExpanded() // Find most recently updated item in collection let mostRecentlyUpdatedAt = collectionExpanded.lastUpdate + // Check for most recently updated book collectionExpanded.books.forEach((libraryItem) => { if (libraryItem.media.tracks.length && libraryItem.updatedAt > mostRecentlyUpdatedAt) { mostRecentlyUpdatedAt = libraryItem.updatedAt } }) + // Check for most recently added collection book + collection.collectionBooks.forEach((collectionBook) => { + if (collectionBook.createdAt.valueOf() > mostRecentlyUpdatedAt) { + mostRecentlyUpdatedAt = collectionBook.createdAt.valueOf() + } + }) + const hasBooksRemoved = collection.collectionBooks.length < feed.episodes.length - if (!feed.entityUpdatedAt || mostRecentlyUpdatedAt > feed.entityUpdatedAt) { + if (!feed.entityUpdatedAt || hasBooksRemoved || mostRecentlyUpdatedAt > feed.entityUpdatedAt) { Logger.debug(`[RssFeedManager] Updating RSS feed for collection "${collection.name}"`) feed.updateFromCollection(collectionExpanded) diff --git a/server/models/Feed.js b/server/models/Feed.js index 72ea146c..d8c5a2a7 100644 --- a/server/models/Feed.js +++ b/server/models/Feed.js @@ -108,7 +108,7 @@ class Feed extends Model { /** * Find all library item ids that have an open feed (used in library filter) - * @returns {Promise>} array of library item ids + * @returns {Promise} array of library item ids */ static async findAllLibraryItemIds() { const feeds = await this.findAll({ @@ -122,8 +122,8 @@ class Feed extends Model { /** * Find feed where and return oldFeed - * @param {object} where sequelize where object - * @returns {Promise} oldFeed + * @param {Object} where sequelize where object + * @returns {Promise} oldFeed */ static async findOneOld(where) { if (!where) return null @@ -140,7 +140,7 @@ class Feed extends Model { /** * Find feed and return oldFeed * @param {string} id - * @returns {Promise} oldFeed + * @returns {Promise} oldFeed */ static async findByPkOld(id) { if (!id) return null