mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
Convert createFeed to async await.
This commit is contained in:
@@ -62,31 +62,25 @@ import RSParser
|
||||
return
|
||||
}
|
||||
|
||||
account.createFeed(url: url.absoluteString, name: title, container: container, validateFeed: true) { result in
|
||||
|
||||
DispatchQueue.main.async {
|
||||
self.endShowingProgress()
|
||||
}
|
||||
|
||||
switch result {
|
||||
case .success(let feed):
|
||||
NotificationCenter.default.post(name: .UserDidAddFeed, object: self, userInfo: [UserInfoKey.feed: feed])
|
||||
case .failure(let error):
|
||||
switch error {
|
||||
case AccountError.createErrorAlreadySubscribed:
|
||||
self.showAlreadySubscribedError(url.absoluteString)
|
||||
case AccountError.createErrorNotFound:
|
||||
self.showNoFeedsErrorMessage()
|
||||
default:
|
||||
DispatchQueue.main.async {
|
||||
NSApplication.shared.presentError(error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
beginShowingProgress()
|
||||
|
||||
Task { @MainActor in
|
||||
do {
|
||||
let feed = try await account.createFeed(url: url.absoluteString, name: title, container: container, validateFeed: true)
|
||||
NotificationCenter.default.post(name: .UserDidAddFeed, object: self, userInfo: [UserInfoKey.feed: feed])
|
||||
|
||||
} catch AccountError.createErrorAlreadySubscribed {
|
||||
self.showAlreadySubscribedError(url.absoluteString)
|
||||
|
||||
} catch AccountError.createErrorNotFound {
|
||||
self.showNoFeedsErrorMessage()
|
||||
|
||||
} catch {
|
||||
NSApplication.shared.presentError(error)
|
||||
}
|
||||
|
||||
self.endShowingProgress()
|
||||
}
|
||||
}
|
||||
|
||||
func addFeedWindowControllerUserDidCancel(_: AddFeedWindowController) {
|
||||
|
||||
@@ -14,8 +14,8 @@ import Account
|
||||
protocol AddFeedWindowControllerDelegate: AnyObject {
|
||||
|
||||
// userEnteredURL will have already been validated and normalized.
|
||||
func addFeedWindowController(_: AddFeedWindowController, userEnteredURL: URL, userEnteredTitle: String?, container: Container)
|
||||
func addFeedWindowControllerUserDidCancel(_: AddFeedWindowController)
|
||||
@MainActor func addFeedWindowController(_: AddFeedWindowController, userEnteredURL: URL, userEnteredTitle: String?, container: Container)
|
||||
@MainActor func addFeedWindowControllerUserDidCancel(_: AddFeedWindowController)
|
||||
}
|
||||
|
||||
class AddFeedWindowController : NSWindowController {
|
||||
|
||||
@@ -346,11 +346,11 @@ private extension SidebarOutlineDataSource {
|
||||
|
||||
func copyFeedBetweenAccounts(node: Node, to parentNode: Node) {
|
||||
guard let feed = node.representedObject as? Feed,
|
||||
let destinationAccount = nodeAccount(parentNode),
|
||||
let destinationContainer = parentNode.representedObject as? Container else {
|
||||
let destinationAccount = nodeAccount(parentNode),
|
||||
let destinationContainer = parentNode.representedObject as? Container else {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
if let existingFeed = destinationAccount.existingFeed(withURL: feed.url) {
|
||||
|
||||
Task { @MainActor in
|
||||
@@ -361,11 +361,10 @@ private extension SidebarOutlineDataSource {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
destinationAccount.createFeed(url: feed.url, name: feed.nameForDisplay, container: destinationContainer, validateFeed: false) { result in
|
||||
switch result {
|
||||
case .success:
|
||||
break
|
||||
case .failure(let error):
|
||||
Task { @MainActor in
|
||||
do {
|
||||
try await destinationAccount.createFeed(url: feed.url, name: feed.nameForDisplay, container: destinationContainer, validateFeed: false)
|
||||
} catch {
|
||||
NSApplication.shared.presentError(error)
|
||||
}
|
||||
}
|
||||
@@ -425,10 +424,10 @@ private extension SidebarOutlineDataSource {
|
||||
}
|
||||
|
||||
func copyFolderBetweenAccounts(node: Node, to parentNode: Node) {
|
||||
|
||||
|
||||
guard let folder = node.representedObject as? Folder,
|
||||
let destinationAccount = nodeAccount(parentNode) else {
|
||||
return
|
||||
let destinationAccount = nodeAccount(parentNode) else {
|
||||
return
|
||||
}
|
||||
|
||||
Task { @MainActor in
|
||||
@@ -440,17 +439,9 @@ private extension SidebarOutlineDataSource {
|
||||
if let existingFeed = destinationAccount.existingFeed(withURL: feed.url) {
|
||||
try await destinationAccount.addFeed(existingFeed, to: destinationFolder)
|
||||
} else {
|
||||
destinationAccount.createFeed(url: feed.url, name: feed.nameForDisplay, container: destinationFolder, validateFeed: false) { result in
|
||||
switch result {
|
||||
case .success:
|
||||
break
|
||||
case .failure(let error):
|
||||
NSApplication.shared.presentError(error)
|
||||
}
|
||||
}
|
||||
try await destinationAccount.createFeed(url: feed.url, name: feed.nameForDisplay, container: destinationFolder, validateFeed: false)
|
||||
}
|
||||
}
|
||||
|
||||
} catch {
|
||||
NSApplication.shared.presentError(error)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user