From ba579bcc5739ec4aa2a6718cd59f06dbbc2a7b66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kiel=20Gillard=20=F0=9F=A4=AA?= Date: Sun, 18 Apr 2021 20:10:01 +1000 Subject: [PATCH 01/34] Feedly API is no longer returning the collection/folder values for deleted collections/folders so make the response (which we ignore anyway), optional. Fixes #3015 --- Account/Sources/Account/Feedly/FeedlyAPICaller.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Account/Sources/Account/Feedly/FeedlyAPICaller.swift b/Account/Sources/Account/Feedly/FeedlyAPICaller.swift index f855a95e0..4ee2be353 100644 --- a/Account/Sources/Account/Feedly/FeedlyAPICaller.swift +++ b/Account/Sources/Account/Feedly/FeedlyAPICaller.swift @@ -310,7 +310,7 @@ final class FeedlyAPICaller { request.addValue("application/json", forHTTPHeaderField: "Accept-Type") request.addValue("OAuth \(accessToken)", forHTTPHeaderField: HTTPRequestHeader.authorization) - send(request: request, resultType: String.self, dateDecoding: .millisecondsSince1970, keyDecoding: .convertFromSnakeCase) { result in + send(request: request, resultType: Optional.self, dateDecoding: .millisecondsSince1970, keyDecoding: .convertFromSnakeCase) { result in switch result { case .success(let (httpResponse, _)): if httpResponse.statusCode == 200 { From 08b3115c63e6e725060e33bcd14a1b04bf57de53 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Wed, 21 Apr 2021 22:10:28 -0700 Subject: [PATCH 02/34] Bump version number. --- xcconfig/common/NetNewsWire_ios_target_common.xcconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xcconfig/common/NetNewsWire_ios_target_common.xcconfig b/xcconfig/common/NetNewsWire_ios_target_common.xcconfig index e8b2c3545..658143103 100644 --- a/xcconfig/common/NetNewsWire_ios_target_common.xcconfig +++ b/xcconfig/common/NetNewsWire_ios_target_common.xcconfig @@ -1,7 +1,7 @@ // High Level Settings common to both the iOS application and any extensions we bundle with it MARKETING_VERSION = 6.0 -CURRENT_PROJECT_VERSION = 601 +CURRENT_PROJECT_VERSION = 602 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon From f7762dcaaf8af08261cf4600b8b50ff0389f4985 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Wed, 21 Apr 2021 22:25:27 -0700 Subject: [PATCH 03/34] Update release notes for iOS. --- Technotes/ReleaseNotes-iOS.markdown | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Technotes/ReleaseNotes-iOS.markdown diff --git a/Technotes/ReleaseNotes-iOS.markdown b/Technotes/ReleaseNotes-iOS.markdown new file mode 100644 index 000000000..d17fe9b43 --- /dev/null +++ b/Technotes/ReleaseNotes-iOS.markdown @@ -0,0 +1,7 @@ +# iOS Release Notes + +### 6.0 TestFlight build 602 - 21 April 2021 + +Inoreader: don’t call it so often, so we don’t go over the API limits +Feedly: handle a specific case where Feedly started not returning a value we expected but didn’t actually need (we were reporting it as an error to the user, but it wasn’t) + From 15fb5637ff20b772fbe03cf9332e91c604abd10f Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Sat, 24 Apr 2021 15:05:11 +0800 Subject: [PATCH 04/34] Fixes #3035 MarkAllAsReadAction will check for and handle SmartFeeds. --- iOS/MasterFeed/MasterFeedViewController.swift | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/iOS/MasterFeed/MasterFeedViewController.swift b/iOS/MasterFeed/MasterFeedViewController.swift index c933c3b43..eeaf0974a 100644 --- a/iOS/MasterFeed/MasterFeedViewController.swift +++ b/iOS/MasterFeed/MasterFeedViewController.swift @@ -1211,9 +1211,20 @@ private extension MasterFeedViewController { guard let identifier = dataSource.itemIdentifier(for: indexPath), identifier.unreadCount > 0 else { return nil } - + + var smartFeed: Feed? + if identifier.isPsuedoFeed { + if SmartFeedsController.shared.todayFeed.feedID == identifier.feedID { + smartFeed = SmartFeedsController.shared.todayFeed + } else if SmartFeedsController.shared.unreadFeed.feedID == identifier.feedID { + smartFeed = SmartFeedsController.shared.unreadFeed + } else if SmartFeedsController.shared.starredFeed.feedID == identifier.feedID { + smartFeed = SmartFeedsController.shared.starredFeed + } + } + guard let feedID = identifier.feedID, - let feed = AccountManager.shared.existingFeed(with: feedID), + let feed = smartFeed ?? AccountManager.shared.existingFeed(with: feedID), feed.unreadCount > 0, let contentView = self.tableView.cellForRow(at: indexPath)?.contentView else { return nil From 925bbadecb96c980afa8239f38da636fe64a5709 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Sat, 24 Apr 2021 15:10:26 +0800 Subject: [PATCH 05/34] Fixes #3062 --- iOS/Settings/AddExtensionPointViewController.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iOS/Settings/AddExtensionPointViewController.swift b/iOS/Settings/AddExtensionPointViewController.swift index ef88f5306..960f2ad5d 100644 --- a/iOS/Settings/AddExtensionPointViewController.swift +++ b/iOS/Settings/AddExtensionPointViewController.swift @@ -44,7 +44,7 @@ class AddExtensionPointViewController: UITableViewController, AddExtensionPointD } override func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? { - return NSLocalizedString("Feed Providers allow you to subscribe to web site URL's as if they were RSS feeds.", comment: "Feed Provider Footer") + return NSLocalizedString("Feed Providers allow you to subscribe to web site URLs as if they were RSS feeds.", comment: "Feed Provider Footer") } override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { From d0c3f05f0e413b08a538828facf968faf1c9a60a Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Sat, 24 Apr 2021 15:16:20 +0800 Subject: [PATCH 06/34] Delete change to Remove --- .../AccountInspectorViewController.swift | 8 +++---- iOS/Inspector/Inspector.storyboard | 22 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/iOS/Inspector/AccountInspectorViewController.swift b/iOS/Inspector/AccountInspectorViewController.swift index 77a6082d6..f10257da6 100644 --- a/iOS/Inspector/AccountInspectorViewController.swift +++ b/iOS/Inspector/AccountInspectorViewController.swift @@ -92,13 +92,13 @@ class AccountInspectorViewController: UITableViewController { return } - let title = NSLocalizedString("Delete Account", comment: "Delete Account") + let title = NSLocalizedString("Remove Account", comment: "Remove Account") let message: String = { switch account.type { case .feedly: - return NSLocalizedString("Are you sure you want to delete this account? NetNewsWire will no longer be able to access articles and feeds unless the account is added again.", comment: "Log Out and Delete Account") + return NSLocalizedString("Are you sure you want to remove this account? NetNewsWire will no longer be able to access articles and feeds unless the account is added again.", comment: "Log Out and Remove Account") default: - return NSLocalizedString("Are you sure you want to delete this account? This cannot be undone.", comment: "Delete Account") + return NSLocalizedString("Are you sure you want to remove this account? This cannot be undone.", comment: "Remove Account") } }() let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) @@ -106,7 +106,7 @@ class AccountInspectorViewController: UITableViewController { let cancelAction = UIAlertAction(title: cancelTitle, style: .cancel) alertController.addAction(cancelAction) - let markTitle = NSLocalizedString("Delete", comment: "Delete") + let markTitle = NSLocalizedString("Remove", comment: "Remove") let markAction = UIAlertAction(title: markTitle, style: .default) { [weak self] (action) in guard let self = self, let account = self.account else { return } AccountManager.shared.deleteAccount(account) diff --git a/iOS/Inspector/Inspector.storyboard b/iOS/Inspector/Inspector.storyboard index 384157ff9..45fcc87f2 100644 --- a/iOS/Inspector/Inspector.storyboard +++ b/iOS/Inspector/Inspector.storyboard @@ -1,9 +1,9 @@ - + - + @@ -27,10 +27,10 @@ - + - + @@ -52,7 +52,7 @@