From 52f11ff5383a056fa273aa88f6fe983fa4558240 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Mon, 15 Mar 2021 18:01:12 -0500 Subject: [PATCH] Add validateFeed parameter to createWebFeed --- Account/Sources/Account/Account.swift | 4 ++-- Account/Sources/Account/AccountDelegate.swift | 2 +- .../Sources/Account/CloudKit/CloudKitAccountDelegate.swift | 4 ++-- .../Account/FeedWrangler/FeedWranglerAccountDelegate.swift | 4 ++-- .../Sources/Account/Feedbin/FeedbinAccountDelegate.swift | 6 +++--- Account/Sources/Account/Feedly/FeedlyAccountDelegate.swift | 4 ++-- .../Sources/Account/LocalAccount/LocalAccountDelegate.swift | 2 +- .../Sources/Account/NewsBlur/NewsBlurAccountDelegate.swift | 4 ++-- .../Account/ReaderAPI/ReaderAPIAccountDelegate.swift | 4 ++-- Mac/MainWindow/AddFeed/AddFeedController.swift | 2 +- Mac/MainWindow/Sidebar/SidebarOutlineDataSource.swift | 4 ++-- Mac/Scriptability/WebFeed+Scriptability.swift | 2 +- Shared/ShareExtension/ExtensionFeedAddRequestFile.swift | 2 +- 13 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Account/Sources/Account/Account.swift b/Account/Sources/Account/Account.swift index 7acf4816b..8f542410c 100644 --- a/Account/Sources/Account/Account.swift +++ b/Account/Sources/Account/Account.swift @@ -614,8 +614,8 @@ public final class Account: DisplayNameProvider, UnreadCountProvider, Container, delegate.addWebFeed(for: self, with: feed, to: container, completion: completion) } - public func createWebFeed(url: String, name: String?, container: Container, completion: @escaping (Result) -> Void) { - delegate.createWebFeed(for: self, url: url, name: name, container: container, completion: completion) + public func createWebFeed(url: String, name: String?, container: Container, validateFeed: Bool, completion: @escaping (Result) -> Void) { + delegate.createWebFeed(for: self, url: url, name: name, container: container, validateFeed: validateFeed, completion: completion) } func createWebFeed(with name: String?, url: String, webFeedID: String, homePageURL: String?) -> WebFeed { diff --git a/Account/Sources/Account/AccountDelegate.swift b/Account/Sources/Account/AccountDelegate.swift index 913f59dd9..f86368053 100644 --- a/Account/Sources/Account/AccountDelegate.swift +++ b/Account/Sources/Account/AccountDelegate.swift @@ -35,7 +35,7 @@ protocol AccountDelegate { func renameFolder(for account: Account, with folder: Folder, to name: String, completion: @escaping (Result) -> Void) func removeFolder(for account: Account, with folder: Folder, completion: @escaping (Result) -> Void) - func createWebFeed(for account: Account, url: String, name: String?, container: Container, completion: @escaping (Result) -> Void) + func createWebFeed(for account: Account, url: String, name: String?, container: Container, validateFeed: Bool, completion: @escaping (Result) -> Void) func renameWebFeed(for account: Account, with feed: WebFeed, to name: String, completion: @escaping (Result) -> Void) func addWebFeed(for account: Account, with: WebFeed, to container: Container, completion: @escaping (Result) -> Void) func removeWebFeed(for account: Account, with feed: WebFeed, from container: Container, completion: @escaping (Result) -> Void) diff --git a/Account/Sources/Account/CloudKit/CloudKitAccountDelegate.swift b/Account/Sources/Account/CloudKit/CloudKitAccountDelegate.swift index cde18b0a5..0cb52d02d 100644 --- a/Account/Sources/Account/CloudKit/CloudKitAccountDelegate.swift +++ b/Account/Sources/Account/CloudKit/CloudKitAccountDelegate.swift @@ -157,7 +157,7 @@ final class CloudKitAccountDelegate: AccountDelegate { } - func createWebFeed(for account: Account, url urlString: String, name: String?, container: Container, completion: @escaping (Result) -> Void) { + func createWebFeed(for account: Account, url urlString: String, name: String?, container: Container, validateFeed: Bool, completion: @escaping (Result) -> Void) { guard let url = URL(string: urlString), let urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: false) else { completion(.failure(LocalAccountDelegateError.invalidParameter)) return @@ -242,7 +242,7 @@ final class CloudKitAccountDelegate: AccountDelegate { } func restoreWebFeed(for account: Account, feed: WebFeed, container: Container, completion: @escaping (Result) -> Void) { - createWebFeed(for: account, url: feed.url, name: feed.editedName, container: container) { result in + createWebFeed(for: account, url: feed.url, name: feed.editedName, container: container, validateFeed: true) { result in switch result { case .success: completion(.success(())) diff --git a/Account/Sources/Account/FeedWrangler/FeedWranglerAccountDelegate.swift b/Account/Sources/Account/FeedWrangler/FeedWranglerAccountDelegate.swift index 7e44c6e1d..06edc663f 100644 --- a/Account/Sources/Account/FeedWrangler/FeedWranglerAccountDelegate.swift +++ b/Account/Sources/Account/FeedWrangler/FeedWranglerAccountDelegate.swift @@ -297,7 +297,7 @@ final class FeedWranglerAccountDelegate: AccountDelegate { fatalError() } - func createWebFeed(for account: Account, url: String, name: String?, container: Container, completion: @escaping (Result) -> Void) { + func createWebFeed(for account: Account, url: String, name: String?, container: Container, validateFeed: Bool, completion: @escaping (Result) -> Void) { refreshProgress.addToNumberOfTasksAndRemaining(2) self.refreshCredentials(for: account) { @@ -439,7 +439,7 @@ final class FeedWranglerAccountDelegate: AccountDelegate { } } } else { - createWebFeed(for: account, url: feed.url, name: feed.editedName, container: container) { result in + createWebFeed(for: account, url: feed.url, name: feed.editedName, container: container, validateFeed: true) { result in switch result { case .success: completion(.success(())) diff --git a/Account/Sources/Account/Feedbin/FeedbinAccountDelegate.swift b/Account/Sources/Account/Feedbin/FeedbinAccountDelegate.swift index 00fa3ea19..406a34218 100644 --- a/Account/Sources/Account/Feedbin/FeedbinAccountDelegate.swift +++ b/Account/Sources/Account/Feedbin/FeedbinAccountDelegate.swift @@ -370,7 +370,7 @@ final class FeedbinAccountDelegate: AccountDelegate { } - func createWebFeed(for account: Account, url: String, name: String?, container: Container, completion: @escaping (Result) -> Void) { + func createWebFeed(for account: Account, url: String, name: String?, container: Container, validateFeed: Bool, completion: @escaping (Result) -> Void) { refreshProgress.addToNumberOfTasksAndRemaining(1) caller.createSubscription(url: url) { result in @@ -496,7 +496,7 @@ final class FeedbinAccountDelegate: AccountDelegate { } } } else { - createWebFeed(for: account, url: feed.url, name: feed.editedName, container: container) { result in + createWebFeed(for: account, url: feed.url, name: feed.editedName, container: container, validateFeed: true) { result in switch result { case .success: completion(.success(())) @@ -998,7 +998,7 @@ private extension FeedbinAccountDelegate { } if let bestSpecifier = FeedSpecifier.bestFeed(in: Set(feedSpecifiers)) { - createWebFeed(for: account, url: bestSpecifier.urlString, name: name, container: container, completion: completion) + createWebFeed(for: account, url: bestSpecifier.urlString, name: name, container: container, validateFeed: true, completion: completion) } else { DispatchQueue.main.async { completion(.failure(FeedbinAccountDelegateError.invalidParameter)) diff --git a/Account/Sources/Account/Feedly/FeedlyAccountDelegate.swift b/Account/Sources/Account/Feedly/FeedlyAccountDelegate.swift index 558b1ba5b..56b7533d1 100644 --- a/Account/Sources/Account/Feedly/FeedlyAccountDelegate.swift +++ b/Account/Sources/Account/Feedly/FeedlyAccountDelegate.swift @@ -296,7 +296,7 @@ final class FeedlyAccountDelegate: AccountDelegate { } } - func createWebFeed(for account: Account, url: String, name: String?, container: Container, completion: @escaping (Result) -> Void) { + func createWebFeed(for account: Account, url: String, name: String?, container: Container, validateFeed: Bool, completion: @escaping (Result) -> Void) { do { guard let credentials = credentials else { @@ -450,7 +450,7 @@ final class FeedlyAccountDelegate: AccountDelegate { } } } else { - createWebFeed(for: account, url: feed.url, name: feed.editedName, container: container) { result in + createWebFeed(for: account, url: feed.url, name: feed.editedName, container: container, validateFeed: true) { result in switch result { case .success: completion(.success(())) diff --git a/Account/Sources/Account/LocalAccount/LocalAccountDelegate.swift b/Account/Sources/Account/LocalAccount/LocalAccountDelegate.swift index ac5a3d08d..2ae29f7f7 100644 --- a/Account/Sources/Account/LocalAccount/LocalAccountDelegate.swift +++ b/Account/Sources/Account/LocalAccount/LocalAccountDelegate.swift @@ -146,7 +146,7 @@ final class LocalAccountDelegate: AccountDelegate { } - func createWebFeed(for account: Account, url urlString: String, name: String?, container: Container, completion: @escaping (Result) -> Void) { + func createWebFeed(for account: Account, url urlString: String, name: String?, container: Container, validateFeed: Bool, completion: @escaping (Result) -> Void) { guard let url = URL(string: urlString), let urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: false) else { completion(.failure(LocalAccountDelegateError.invalidParameter)) return diff --git a/Account/Sources/Account/NewsBlur/NewsBlurAccountDelegate.swift b/Account/Sources/Account/NewsBlur/NewsBlurAccountDelegate.swift index e0b5f2f6f..71f4f22b3 100644 --- a/Account/Sources/Account/NewsBlur/NewsBlurAccountDelegate.swift +++ b/Account/Sources/Account/NewsBlur/NewsBlurAccountDelegate.swift @@ -405,7 +405,7 @@ final class NewsBlurAccountDelegate: AccountDelegate { } } - func createWebFeed(for account: Account, url: String, name: String?, container: Container, completion: @escaping (Result) -> ()) { + func createWebFeed(for account: Account, url: String, name: String?, container: Container, validateFeed: Bool, completion: @escaping (Result) -> ()) { refreshProgress.addToNumberOfTasksAndRemaining(1) let folderName = (container as? Folder)?.name @@ -512,7 +512,7 @@ final class NewsBlurAccountDelegate: AccountDelegate { } } } else { - createWebFeed(for: account, url: feed.url, name: feed.editedName, container: container) { result in + createWebFeed(for: account, url: feed.url, name: feed.editedName, container: container, validateFeed: true) { result in switch result { case .success: completion(.success(())) diff --git a/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift b/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift index 46e66b540..182db4203 100644 --- a/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift +++ b/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift @@ -326,7 +326,7 @@ final class ReaderAPIAccountDelegate: AccountDelegate { } - func createWebFeed(for account: Account, url: String, name: String?, container: Container, completion: @escaping (Result) -> Void) { + func createWebFeed(for account: Account, url: String, name: String?, container: Container, validateFeed: Bool, completion: @escaping (Result) -> Void) { guard let url = URL(string: url) else { completion(.failure(ReaderAPIAccountDelegateError.invalidParameter)) return @@ -489,7 +489,7 @@ final class ReaderAPIAccountDelegate: AccountDelegate { } } } else { - createWebFeed(for: account, url: feed.url, name: feed.editedName, container: container) { result in + createWebFeed(for: account, url: feed.url, name: feed.editedName, container: container, validateFeed: true) { result in switch result { case .success: completion(.success(())) diff --git a/Mac/MainWindow/AddFeed/AddFeedController.swift b/Mac/MainWindow/AddFeed/AddFeedController.swift index 69ce0e6ac..6e82d40a9 100644 --- a/Mac/MainWindow/AddFeed/AddFeedController.swift +++ b/Mac/MainWindow/AddFeed/AddFeedController.swift @@ -71,7 +71,7 @@ class AddFeedController: AddFeedWindowControllerDelegate { return } - account.createWebFeed(url: url.absoluteString, name: title, container: container) { result in + account.createWebFeed(url: url.absoluteString, name: title, container: container, validateFeed: true) { result in DispatchQueue.main.async { self.endShowingProgress() diff --git a/Mac/MainWindow/Sidebar/SidebarOutlineDataSource.swift b/Mac/MainWindow/Sidebar/SidebarOutlineDataSource.swift index 51f7f5c0c..e2d77c15e 100644 --- a/Mac/MainWindow/Sidebar/SidebarOutlineDataSource.swift +++ b/Mac/MainWindow/Sidebar/SidebarOutlineDataSource.swift @@ -371,7 +371,7 @@ private extension SidebarOutlineDataSource { } } } else { - destinationAccount.createWebFeed(url: feed.url, name: feed.editedName, container: destinationContainer) { result in + destinationAccount.createWebFeed(url: feed.url, name: feed.nameForDisplay, container: destinationContainer, validateFeed: false) { result in switch result { case .success: break @@ -454,7 +454,7 @@ private extension SidebarOutlineDataSource { } } } else { - destinationAccount.createWebFeed(url: feed.url, name: feed.editedName, container: destinationFolder) { result in + destinationAccount.createWebFeed(url: feed.url, name: feed.nameForDisplay, container: destinationFolder, validateFeed: false) { result in switch result { case .success: break diff --git a/Mac/Scriptability/WebFeed+Scriptability.swift b/Mac/Scriptability/WebFeed+Scriptability.swift index d99b84f01..e6b22e0dc 100644 --- a/Mac/Scriptability/WebFeed+Scriptability.swift +++ b/Mac/Scriptability/WebFeed+Scriptability.swift @@ -102,7 +102,7 @@ class ScriptableWebFeed: NSObject, UniqueIdScriptingObject, ScriptingObjectConta // suspendExecution(). When we get the callback, we supply the event result and call resumeExecution(). command.suspendExecution() - account.createWebFeed(url: url, name: titleFromArgs, container: container) { result in + account.createWebFeed(url: url, name: titleFromArgs, container: container, validateFeed: true) { result in switch result { case .success(let feed): NotificationCenter.default.post(name: .UserDidAddFeed, object: self, userInfo: [UserInfoKey.webFeed: feed]) diff --git a/Shared/ShareExtension/ExtensionFeedAddRequestFile.swift b/Shared/ShareExtension/ExtensionFeedAddRequestFile.swift index 6a8bc4d9c..6ac0dd2e4 100644 --- a/Shared/ShareExtension/ExtensionFeedAddRequestFile.swift +++ b/Shared/ShareExtension/ExtensionFeedAddRequestFile.swift @@ -154,7 +154,7 @@ private extension ExtensionFeedAddRequestFile { guard let container = destinationContainer else { return } - account.createWebFeed(url: request.feedURL.absoluteString, name: request.name, container: container) { _ in } + account.createWebFeed(url: request.feedURL.absoluteString, name: request.name, container: container, validateFeed: true) { _ in } } }