Fix concurrency warnings by marking things as MainActor.

This commit is contained in:
Brent Simmons
2024-04-02 22:26:16 -07:00
parent 3fea0f0758
commit 0949aefa93
10 changed files with 52 additions and 45 deletions

View File

@@ -13,7 +13,7 @@ import AppKitExtras
typealias PasteboardFeedDictionary = [String: String]
struct PasteboardFeed: Hashable {
@MainActor struct PasteboardFeed: Hashable {
private struct Key {
static let url = "URL"

View File

@@ -36,36 +36,42 @@ extension Article: PasteboardWriterOwner {
// MARK: - NSPasteboardWriting
func writableTypes(for pasteboard: NSPasteboard) -> [NSPasteboard.PasteboardType] {
var types = [ArticlePasteboardWriter.articleUTIType]
nonisolated func writableTypes(for pasteboard: NSPasteboard) -> [NSPasteboard.PasteboardType] {
if let _ = article.preferredURL {
types += [.URL]
MainActor.assumeIsolated {
var types = [ArticlePasteboardWriter.articleUTIType]
if let _ = article.preferredURL {
types += [.URL]
}
types += [.string, .html, ArticlePasteboardWriter.articleUTIInternalType]
return types
}
types += [.string, .html, ArticlePasteboardWriter.articleUTIInternalType]
return types
}
func pasteboardPropertyList(forType type: NSPasteboard.PasteboardType) -> Any? {
let plist: Any?
nonisolated func pasteboardPropertyList(forType type: NSPasteboard.PasteboardType) -> Any? {
switch type {
case .html:
return renderedHTML
case .string:
plist = plainText()
case .URL:
return article.preferredLink ?? ""
case ArticlePasteboardWriter.articleUTIType:
plist = exportDictionary()
case ArticlePasteboardWriter.articleUTIInternalType:
plist = internalDictionary()
default:
plist = nil
MainActor.assumeIsolated {
let plist: Any?
switch type {
case .html:
return renderedHTML
case .string:
plist = plainText()
case .URL:
return article.preferredLink ?? ""
case ArticlePasteboardWriter.articleUTIType:
plist = exportDictionary()
case ArticlePasteboardWriter.articleUTIInternalType:
plist = internalDictionary()
default:
plist = nil
}
return plist
}
return plist
}
}