diff --git a/Account/Sources/Account/Account.swift b/Account/Sources/Account/Account.swift index de023cc82..1450f62f8 100644 --- a/Account/Sources/Account/Account.swift +++ b/Account/Sources/Account/Account.swift @@ -616,7 +616,11 @@ public enum FetchType { public func moveFeed(_ feed: Feed, from: Container, to: Container, completion: @escaping (Result) -> Void) { delegate.moveFeed(for: self, with: feed, from: from, to: to, completion: completion) } - + + public func rename(_ feed: Feed, to name: String) async throws { + try await delegate.renameFeed(for: self, feed: feed, name: name) + } + public func renameFeed(_ feed: Feed, to name: String, completion: @escaping (Result) -> Void) { delegate.renameFeed(for: self, with: feed, to: name, completion: completion) } diff --git a/Account/Sources/Account/Feed.swift b/Account/Sources/Account/Feed.swift index d0609a552..1224638d8 100644 --- a/Account/Sources/Account/Feed.swift +++ b/Account/Sources/Account/Feed.swift @@ -210,6 +210,13 @@ public final class Feed: FeedProtocol, Renamable, Hashable, ObservableObject { // MARK: - Renamable + @MainActor public func rename(to newName: String) async throws { + guard let account else { + return + } + try await account.rename(self, to: newName) + } + @MainActor public func rename(to newName: String, completion: @escaping (Result) -> Void) { guard let account = account else { return } account.renameFeed(self, to: newName, completion: completion) diff --git a/Mac/MainWindow/Sidebar/SidebarViewController+ContextualMenus.swift b/Mac/MainWindow/Sidebar/SidebarViewController+ContextualMenus.swift index ab6fde823..9089ff609 100644 --- a/Mac/MainWindow/Sidebar/SidebarViewController+ContextualMenus.swift +++ b/Mac/MainWindow/Sidebar/SidebarViewController+ContextualMenus.swift @@ -229,11 +229,10 @@ extension SidebarViewController: RenameWindowControllerDelegate { func renameWindowController(_ windowController: RenameWindowController, didRenameObject object: Any, withNewName name: String) { if let feed = object as? Feed { - feed.rename(to: name) { result in - switch result { - case .success: - break - case .failure(let error): + Task { @MainActor in + do { + try await feed.rename(to: name) + } catch let error { NSApplication.shared.presentError(error) } } diff --git a/iOS/MasterFeed/MasterFeedViewController.swift b/iOS/MasterFeed/MasterFeedViewController.swift index f1af15f3e..76096d3d0 100644 --- a/iOS/MasterFeed/MasterFeedViewController.swift +++ b/iOS/MasterFeed/MasterFeedViewController.swift @@ -1443,13 +1443,10 @@ private extension MasterFeedViewController { } if let feed = feed as? Feed { - feed.rename(to: name) { result in - switch result { - case .success: - break - case .failure(let error): - self?.presentError(error) - } + do { + try await feed.rename(to: name) + } catch let error { + self?.presentError(error) } } else if let folder = feed as? Folder { folder.rename(to: name) { result in @@ -1461,7 +1458,6 @@ private extension MasterFeedViewController { } } } - } alertController.addAction(renameAction)