diff --git a/Images/Sources/Images/FeedIconDownloader.swift b/Images/Sources/Images/FeedIconDownloader.swift index 80bd62ca6..a57608f6e 100644 --- a/Images/Sources/Images/FeedIconDownloader.swift +++ b/Images/Sources/Images/FeedIconDownloader.swift @@ -20,7 +20,7 @@ public extension Notification.Name { public protocol FeedIconDownloaderDelegate: Sendable { - var appIconImage: IconImage? { get } + @MainActor var appIconImage: IconImage? { get } func downloadMetadata(_ url: String) async throws -> RSHTMLMetadata? } diff --git a/Mac/MainWindow/Detail/DetailIconSchemeHandler.swift b/Mac/MainWindow/Detail/DetailIconSchemeHandler.swift index dcd1757c0..fb9220ad4 100644 --- a/Mac/MainWindow/Detail/DetailIconSchemeHandler.swift +++ b/Mac/MainWindow/Detail/DetailIconSchemeHandler.swift @@ -11,14 +11,14 @@ import WebKit import Articles final class DetailIconSchemeHandler: NSObject, WKURLSchemeHandler { - + var currentArticle: Article? func webView(_ webView: WKWebView, start urlSchemeTask: WKURLSchemeTask) { Task { @MainActor in - guard let responseURL = urlSchemeTask.request.url, let iconImage = self.currentArticle?.iconImage() else { + guard let responseURL = urlSchemeTask.request.url, let iconImage = self.currentArticle?.iconImage() else { urlSchemeTask.didFailWithError(URLError(.fileDoesNotExist)) return } diff --git a/Mac/Scriptability/ScriptingObject.swift b/Mac/Scriptability/ScriptingObject.swift index 2839fdf46..44acc1521 100644 --- a/Mac/Scriptability/ScriptingObject.swift +++ b/Mac/Scriptability/ScriptingObject.swift @@ -9,7 +9,8 @@ import Foundation protocol ScriptingObject { - var objectSpecifier: NSScriptObjectSpecifier? { get } + + @MainActor var objectSpecifier: NSScriptObjectSpecifier? { get } @MainActor var scriptingKey: String { get } } diff --git a/Shared/AppDelegate+Shared.swift b/Shared/AppDelegate+Shared.swift index c4cfd4fd1..c1cef6125 100644 --- a/Shared/AppDelegate+Shared.swift +++ b/Shared/AppDelegate+Shared.swift @@ -18,6 +18,6 @@ extension AppDelegate: FaviconDownloaderDelegate, FeedIconDownloaderDelegate { func downloadMetadata(_ url: String) async throws -> RSHTMLMetadata? { - try await HTMLMetadataDownloader.downloadMetadata(for: url) + await HTMLMetadataDownloader.downloadMetadata(for: url) } } diff --git a/Shared/Timeline/ArticleArray.swift b/Shared/Timeline/ArticleArray.swift index b86fcf2d0..d48f058c1 100644 --- a/Shared/Timeline/ArticleArray.swift +++ b/Shared/Timeline/ArticleArray.swift @@ -50,7 +50,7 @@ extension Array where Element == Article { }) } - func sortedByDate(_ sortDirection: ComparisonResult, groupByFeed: Bool = false) -> ArticleArray { + @MainActor func sortedByDate(_ sortDirection: ComparisonResult, groupByFeed: Bool = false) -> ArticleArray { return ArticleSorter.sortedByDate(articles: self, sortDirection: sortDirection, groupByFeed: groupByFeed) } diff --git a/Shared/Timeline/ArticleSorter.swift b/Shared/Timeline/ArticleSorter.swift index 07a244914..60d075dab 100644 --- a/Shared/Timeline/ArticleSorter.swift +++ b/Shared/Timeline/ArticleSorter.swift @@ -11,7 +11,7 @@ import Foundation protocol SortableArticle { - var sortableName: String { get } + @MainActor var sortableName: String { get } var sortableDate: Date { get } var sortableArticleID: String { get } var sortableFeedID: String { get } @@ -19,7 +19,7 @@ protocol SortableArticle { struct ArticleSorter { - static func sortedByDate(articles: [T], + @MainActor static func sortedByDate(articles: [T], sortDirection: ComparisonResult, groupByFeed: Bool) -> [T] { if groupByFeed { @@ -31,7 +31,7 @@ struct ArticleSorter { // MARK: - - private static func sortedByFeedName(articles: [T], + @MainActor private static func sortedByFeedName(articles: [T], sortByDateDirection: ComparisonResult) -> [T] { // Group articles by "feed-feedID" - feed ID is used to differentiate between // two feeds that have the same name