diff --git a/iOS/Settings/Account and Extensions/Extensions/AddExtensionListView.swift b/iOS/Settings/Account and Extensions/Extensions/AddExtensionListView.swift index e58d51ca0..b7e5178ea 100644 --- a/iOS/Settings/Account and Extensions/Extensions/AddExtensionListView.swift +++ b/iOS/Settings/Account and Extensions/Extensions/AddExtensionListView.swift @@ -50,11 +50,9 @@ struct AddExtensionListView: View { } } } - .task { - for await _ in NotificationCenter.default.notifications(named: .ActiveExtensionPointsDidChange) { - await MainActor.run(body: { dismiss() }) - } - } + .onReceive(NotificationCenter.default.publisher(for: .ActiveExtensionPointsDidChange), perform: { _ in + dismiss() + }) } } diff --git a/iOS/Settings/Account and Extensions/Extensions/EnableExtensionPointView.swift b/iOS/Settings/Account and Extensions/Extensions/EnableExtensionPointView.swift index 5a40e1f64..3f9acac51 100644 --- a/iOS/Settings/Account and Extensions/Extensions/EnableExtensionPointView.swift +++ b/iOS/Settings/Account and Extensions/Extensions/EnableExtensionPointView.swift @@ -32,11 +32,9 @@ struct EnableExtensionPointView: View { .navigationTitle(extensionPoint.title) .navigationBarTitleDisplayMode(.inline) .dismissOnExternalContextLaunch() - .task { - for await _ in NotificationCenter.default.notifications(named: .ActiveExtensionPointsDidChange) { - await MainActor.run { dismiss() } - } - } + .onReceive(NotificationCenter.default.publisher(for: .ActiveExtensionPointsDidChange), perform: { _ in + dismiss() + }) .edgesIgnoringSafeArea(.bottom) } diff --git a/iOS/Settings/Account and Extensions/Extensions/ExtensionsManagementView.swift b/iOS/Settings/Account and Extensions/Extensions/ExtensionsManagementView.swift index 7a380f11c..56143efa8 100644 --- a/iOS/Settings/Account and Extensions/Extensions/ExtensionsManagementView.swift +++ b/iOS/Settings/Account and Extensions/Extensions/ExtensionsManagementView.swift @@ -51,12 +51,9 @@ struct ExtensionsManagementView: View { } message: { Text("This action cannot be undone.", comment: "Alert message: confirmation that deactivation of extension cannot be undone.") } - .task { - for await _ in NotificationCenter.default.notifications(named: .ActiveExtensionPointsDidChange) { - await MainActor.run { availableExtensionPointTypes = ExtensionPointManager.shared.availableExtensionPointTypes.sorted(by: { $0.title < $1.title }) } - } - } - + .onReceive(NotificationCenter.default.publisher(for: .ActiveExtensionPointsDidChange), perform: { _ in + availableExtensionPointTypes = ExtensionPointManager.shared.availableExtensionPointTypes.sorted(by: { $0.title < $1.title }) + }) } private var activeExtensionsSection: some View { diff --git a/iOS/Settings/New Article Notifications/NewArticleNotificationsView.swift b/iOS/Settings/New Article Notifications/NewArticleNotificationsView.swift index e30297851..d666862ee 100644 --- a/iOS/Settings/New Article Notifications/NewArticleNotificationsView.swift +++ b/iOS/Settings/New Article Notifications/NewArticleNotificationsView.swift @@ -28,33 +28,25 @@ struct NewArticleNotificationsView: View, Logging { } .tint(Color(uiColor: AppAssets.primaryAccentColor)) - .task { - for await notification in NotificationCenter.default.notifications(named: .FaviconDidBecomeAvailable) { - await MainActor.run { - guard let faviconURLString = notification.userInfo?["faviconURL"] as? String, - let faviconHost = URL(string: faviconURLString)?.host else { - return - } - activeAccounts.forEach { account in - for feed in Array(account.flattenedWebFeeds()) { - if let feedURLHost = URL(string: feed.url)?.host { - if faviconHost == feedURLHost { - feed.objectWillChange.send() - } - } + .onReceive(NotificationCenter.default.publisher(for: .FaviconDidBecomeAvailable), perform: { notification in + guard let faviconURLString = notification.userInfo?["faviconURL"] as? String, + let faviconHost = URL(string: faviconURLString)?.host else { + return + } + activeAccounts.forEach { account in + for feed in Array(account.flattenedWebFeeds()) { + if let feedURLHost = URL(string: feed.url)?.host { + if faviconHost == feedURLHost { + feed.objectWillChange.send() } } } } - } - .task { - for await notification in NotificationCenter.default.notifications(named: .WebFeedIconDidBecomeAvailable) { - await MainActor.run { - guard let webFeed = notification.userInfo?[UserInfoKey.webFeed] as? WebFeed else { return } - webFeed.objectWillChange.send() - } - } - } + }) + .onReceive(NotificationCenter.default.publisher(for: .WebFeedIconDidBecomeAvailable), perform: { notification in + guard let webFeed = notification.userInfo?[UserInfoKey.webFeed] as? WebFeed else { return } + webFeed.objectWillChange.send() + }) } private func sortedWebFeedsForAccount(_ account: Account) -> [WebFeed] {