Convert createFeed to async await.

This commit is contained in:
Brent Simmons
2024-04-02 20:46:28 -07:00
parent 323d0404f2
commit 8fa2d9bda4
15 changed files with 161 additions and 107 deletions

View File

@@ -117,23 +117,21 @@ class AddFeedViewController: UITableViewController {
BatchUpdate.shared.start()
account!.createFeed(url: url.absoluteString, name: feedName, container: container, validateFeed: true) { result in
BatchUpdate.shared.end()
switch result {
case .success(let feed):
Task { @MainActor in
do {
let feed = try await account!.createFeed(url: url.absoluteString, name: feedName, container: container, validateFeed: true)
self.dismiss(animated: true)
NotificationCenter.default.post(name: .UserDidAddFeed, object: self, userInfo: [UserInfoKey.feed: feed])
case .failure(let error):
} catch {
self.addButton.isEnabled = true
self.activityIndicator.isHidden = true
self.activityIndicator.stopAnimating()
self.presentError(error)
}
BatchUpdate.shared.end()
}
}
@objc func textDidChange(_ note: Notification) {

View File

@@ -109,55 +109,36 @@ extension SidebarViewController: UITableViewDropDelegate {
do {
try await sourceContainer.account?.moveFeed(feed, from: sourceContainer, to: destinationContainer)
BatchUpdate.shared.end()
} catch {
BatchUpdate.shared.end()
self.presentError(error)
}
BatchUpdate.shared.end()
}
}
func moveFeedBetweenAccounts(feed: Feed, sourceContainer: Container, destinationContainer: Container) {
if let existingFeed = destinationContainer.account?.existingFeed(withURL: feed.url) {
let existingFeed = destinationContainer.account?.existingFeed(withURL: feed.url)
BatchUpdate.shared.start()
BatchUpdate.shared.start()
Task { @MainActor in
Task { @MainActor in
do {
do {
if let existingFeed {
try await destinationContainer.account?.addFeed(existingFeed, to: destinationContainer)
try await sourceContainer.account?.removeFeed(feed, from: sourceContainer)
BatchUpdate.shared.end()
} catch {
BatchUpdate.shared.end()
self.presentError(error)
}
}
} else {
BatchUpdate.shared.start()
destinationContainer.account?.createFeed(url: feed.url, name: feed.editedName, container: destinationContainer, validateFeed: false) { result in
switch result {
case .success:
Task { @MainActor in
do {
try await sourceContainer.account?.removeFeed(feed, from: sourceContainer)
BatchUpdate.shared.end()
} catch {
BatchUpdate.shared.end()
self.presentError(error)
}
}
case .failure(let error):
BatchUpdate.shared.end()
self.presentError(error)
}
} else {
_ = try await destinationContainer.account?.createFeed(url: feed.url, name: feed.editedName, container: destinationContainer, validateFeed: false)
}
try await sourceContainer.account?.removeFeed(feed, from: sourceContainer)
} catch {
self.presentError(error)
}
BatchUpdate.shared.end()
}
}
}