Fix a few concurrency warnings.

This commit is contained in:
Brent Simmons 2024-05-03 12:05:53 -07:00
parent 81cede769a
commit 19fd3d96ab
6 changed files with 10 additions and 9 deletions

View File

@ -20,7 +20,7 @@ public extension Notification.Name {
public protocol FeedIconDownloaderDelegate: Sendable { public protocol FeedIconDownloaderDelegate: Sendable {
var appIconImage: IconImage? { get } @MainActor var appIconImage: IconImage? { get }
func downloadMetadata(_ url: String) async throws -> RSHTMLMetadata? func downloadMetadata(_ url: String) async throws -> RSHTMLMetadata?
} }

View File

@ -11,14 +11,14 @@ import WebKit
import Articles import Articles
final class DetailIconSchemeHandler: NSObject, WKURLSchemeHandler { final class DetailIconSchemeHandler: NSObject, WKURLSchemeHandler {
var currentArticle: Article? var currentArticle: Article?
func webView(_ webView: WKWebView, start urlSchemeTask: WKURLSchemeTask) { func webView(_ webView: WKWebView, start urlSchemeTask: WKURLSchemeTask) {
Task { @MainActor in 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)) urlSchemeTask.didFailWithError(URLError(.fileDoesNotExist))
return return
} }

View File

@ -9,7 +9,8 @@
import Foundation import Foundation
protocol ScriptingObject { protocol ScriptingObject {
var objectSpecifier: NSScriptObjectSpecifier? { get }
@MainActor var objectSpecifier: NSScriptObjectSpecifier? { get }
@MainActor var scriptingKey: String { get } @MainActor var scriptingKey: String { get }
} }

View File

@ -18,6 +18,6 @@ extension AppDelegate: FaviconDownloaderDelegate, FeedIconDownloaderDelegate {
func downloadMetadata(_ url: String) async throws -> RSHTMLMetadata? { func downloadMetadata(_ url: String) async throws -> RSHTMLMetadata? {
try await HTMLMetadataDownloader.downloadMetadata(for: url) await HTMLMetadataDownloader.downloadMetadata(for: url)
} }
} }

View File

@ -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) return ArticleSorter.sortedByDate(articles: self, sortDirection: sortDirection, groupByFeed: groupByFeed)
} }

View File

@ -11,7 +11,7 @@ import Foundation
protocol SortableArticle { protocol SortableArticle {
var sortableName: String { get } @MainActor var sortableName: String { get }
var sortableDate: Date { get } var sortableDate: Date { get }
var sortableArticleID: String { get } var sortableArticleID: String { get }
var sortableFeedID: String { get } var sortableFeedID: String { get }
@ -19,7 +19,7 @@ protocol SortableArticle {
struct ArticleSorter { struct ArticleSorter {
static func sortedByDate<T: SortableArticle>(articles: [T], @MainActor static func sortedByDate<T: SortableArticle>(articles: [T],
sortDirection: ComparisonResult, sortDirection: ComparisonResult,
groupByFeed: Bool) -> [T] { groupByFeed: Bool) -> [T] {
if groupByFeed { if groupByFeed {
@ -31,7 +31,7 @@ struct ArticleSorter {
// MARK: - // MARK: -
private static func sortedByFeedName<T: SortableArticle>(articles: [T], @MainActor private static func sortedByFeedName<T: SortableArticle>(articles: [T],
sortByDateDirection: ComparisonResult) -> [T] { sortByDateDirection: ComparisonResult) -> [T] {
// Group articles by "feed-feedID" - feed ID is used to differentiate between // Group articles by "feed-feedID" - feed ID is used to differentiate between
// two feeds that have the same name // two feeds that have the same name