From c4ce93e96a4717aa1bf4c006ff9fd9069a1e9659 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Mon, 13 May 2019 08:32:03 -0500 Subject: [PATCH] Set default read state for Feedbin articles to read when syncing --- Frameworks/Account/Account.swift | 4 ++-- Frameworks/Account/Feedbin/FeedbinAccountDelegate.swift | 2 +- Frameworks/Articles/ArticleStatus.swift | 4 ++-- Frameworks/ArticlesDatabase/ArticlesDatabase.swift | 4 ++-- Frameworks/ArticlesDatabase/ArticlesTable.swift | 4 ++-- Frameworks/ArticlesDatabase/StatusesTable.swift | 8 ++++---- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Frameworks/Account/Account.swift b/Frameworks/Account/Account.swift index c37a30b93..69aa8a5c8 100644 --- a/Frameworks/Account/Account.swift +++ b/Frameworks/Account/Account.swift @@ -582,9 +582,9 @@ public final class Account: DisplayNameProvider, UnreadCountProvider, Container, update(feed, parsedItems: parsedFeed.items, completion) } - func update(_ feed: Feed, parsedItems: Set, _ completion: @escaping (() -> Void)) { + func update(_ feed: Feed, parsedItems: Set, defaultRead: Bool = false, _ completion: @escaping (() -> Void)) { - database.update(feedID: feed.feedID, parsedItems: parsedItems) { (newArticles, updatedArticles) in + database.update(feedID: feed.feedID, parsedItems: parsedItems, defaultRead: defaultRead) { (newArticles, updatedArticles) in var userInfo = [String: Any]() if let newArticles = newArticles, !newArticles.isEmpty { diff --git a/Frameworks/Account/Feedbin/FeedbinAccountDelegate.swift b/Frameworks/Account/Feedbin/FeedbinAccountDelegate.swift index 67edf54a9..d638355ad 100644 --- a/Frameworks/Account/Feedbin/FeedbinAccountDelegate.swift +++ b/Frameworks/Account/Feedbin/FeedbinAccountDelegate.swift @@ -917,7 +917,7 @@ private extension FeedbinAccountDelegate { for (feedID, mapItems) in parsedMap { if let feed = account.idToFeedDictionary[feedID] { DispatchQueue.main.async { - account.update(feed, parsedItems: Set(mapItems)) { + account.update(feed, parsedItems: Set(mapItems), defaultRead: true) { completion() } } diff --git a/Frameworks/Articles/ArticleStatus.swift b/Frameworks/Articles/ArticleStatus.swift index f4e7502e2..7ed3779ec 100644 --- a/Frameworks/Articles/ArticleStatus.swift +++ b/Frameworks/Articles/ArticleStatus.swift @@ -38,9 +38,9 @@ public final class ArticleStatus: Hashable { self.dateArrived = dateArrived } - public convenience init(articleID: String, dateArrived: Date) { + public convenience init(articleID: String, read: Bool, dateArrived: Date) { - self.init(articleID: articleID, read: false, starred: false, userDeleted: false, dateArrived: dateArrived) + self.init(articleID: articleID, read: read, starred: false, userDeleted: false, dateArrived: dateArrived) } public func boolStatus(forKey key: ArticleStatus.Key) -> Bool { diff --git a/Frameworks/ArticlesDatabase/ArticlesDatabase.swift b/Frameworks/ArticlesDatabase/ArticlesDatabase.swift index 642f6bce3..5105dbdec 100644 --- a/Frameworks/ArticlesDatabase/ArticlesDatabase.swift +++ b/Frameworks/ArticlesDatabase/ArticlesDatabase.swift @@ -90,8 +90,8 @@ public final class ArticlesDatabase { // MARK: - Saving and Updating Articles - public func update(feedID: String, parsedItems: Set, completion: @escaping UpdateArticlesWithFeedCompletionBlock) { - return articlesTable.update(feedID, parsedItems, completion) + public func update(feedID: String, parsedItems: Set, defaultRead: Bool, completion: @escaping UpdateArticlesWithFeedCompletionBlock) { + return articlesTable.update(feedID, parsedItems, defaultRead, completion) } // MARK: - Status diff --git a/Frameworks/ArticlesDatabase/ArticlesTable.swift b/Frameworks/ArticlesDatabase/ArticlesTable.swift index a779cc94e..d5aa1505d 100644 --- a/Frameworks/ArticlesDatabase/ArticlesTable.swift +++ b/Frameworks/ArticlesDatabase/ArticlesTable.swift @@ -119,7 +119,7 @@ final class ArticlesTable: DatabaseTable { // MARK: Updating - func update(_ feedID: String, _ parsedItems: Set, _ completion: @escaping UpdateArticlesWithFeedCompletionBlock) { + func update(_ feedID: String, _ parsedItems: Set, _ read: Bool, _ completion: @escaping UpdateArticlesWithFeedCompletionBlock) { if parsedItems.isEmpty { completion(nil, nil) @@ -139,7 +139,7 @@ final class ArticlesTable: DatabaseTable { self.queue.update { (database) in - let statusesDictionary = self.statusesTable.ensureStatusesForArticleIDs(articleIDs, database) //1 + let statusesDictionary = self.statusesTable.ensureStatusesForArticleIDs(articleIDs, read, database) //1 assert(statusesDictionary.count == articleIDs.count) let allIncomingArticles = Article.articlesWithParsedItems(parsedItems, self.accountID, feedID, statusesDictionary) //2 diff --git a/Frameworks/ArticlesDatabase/StatusesTable.swift b/Frameworks/ArticlesDatabase/StatusesTable.swift index 80c48c7ce..85207c8cf 100644 --- a/Frameworks/ArticlesDatabase/StatusesTable.swift +++ b/Frameworks/ArticlesDatabase/StatusesTable.swift @@ -28,7 +28,7 @@ final class StatusesTable: DatabaseTable { // MARK: Creating/Updating - func ensureStatusesForArticleIDs(_ articleIDs: Set, _ database: FMDatabase) -> [String: ArticleStatus] { + func ensureStatusesForArticleIDs(_ articleIDs: Set, _ read: Bool, _ database: FMDatabase) -> [String: ArticleStatus] { // Check cache. let articleIDsMissingCachedStatus = articleIDsWithNoCachedStatus(articleIDs) @@ -42,7 +42,7 @@ final class StatusesTable: DatabaseTable { let articleIDsNeedingStatus = self.articleIDsWithNoCachedStatus(articleIDs) if !articleIDsNeedingStatus.isEmpty { // Create new statuses. - self.createAndSaveStatusesForArticleIDs(articleIDsNeedingStatus, database) + self.createAndSaveStatusesForArticleIDs(articleIDsNeedingStatus, read, database) } return statusesDictionary(articleIDs) @@ -130,10 +130,10 @@ private extension StatusesTable { self.insertRows(statusArray, insertType: .orIgnore, in: database) } - func createAndSaveStatusesForArticleIDs(_ articleIDs: Set, _ database: FMDatabase) { + func createAndSaveStatusesForArticleIDs(_ articleIDs: Set, _ read: Bool, _ database: FMDatabase) { let now = Date() - let statuses = Set(articleIDs.map { ArticleStatus(articleID: $0, dateArrived: now) }) + let statuses = Set(articleIDs.map { ArticleStatus(articleID: $0, read: read, dateArrived: now) }) cache.addIfNotCached(statuses) saveStatuses(statuses, database)