diff --git a/Mac/AppDelegate.swift b/Mac/AppDelegate.swift
index 44dc42137..7d80f7bf3 100644
--- a/Mac/AppDelegate.swift
+++ b/Mac/AppDelegate.swift
@@ -386,7 +386,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations,
alert.buttons[0].keyEquivalent = "\r"
- let response = alert.runModal()
+ _ = alert.runModal()
}
}
diff --git a/Mac/Base.lproj/Preferences.storyboard b/Mac/Base.lproj/Preferences.storyboard
index ec3c0ba73..ddf26b887 100644
--- a/Mac/Base.lproj/Preferences.storyboard
+++ b/Mac/Base.lproj/Preferences.storyboard
@@ -527,16 +527,16 @@
-
+
-
+
-
+
-
+
@@ -643,7 +643,7 @@
-
+
@@ -698,16 +698,16 @@
-
+
-
+
-
+
-
+
@@ -810,7 +810,7 @@
-
+
diff --git a/Mac/CrashReporter/CrashReportWindowController.swift b/Mac/CrashReporter/CrashReportWindowController.swift
index 7c7ce9ee7..5579e0ef3 100644
--- a/Mac/CrashReporter/CrashReportWindowController.swift
+++ b/Mac/CrashReporter/CrashReportWindowController.swift
@@ -8,7 +8,7 @@
import AppKit
-final class CrashReportWindowController: NSWindowController {
+@MainActor final class CrashReportWindowController: NSWindowController {
@IBOutlet var textView: NSTextView! {
didSet {
diff --git a/Mac/CrashReporter/CrashReporter.swift b/Mac/CrashReporter/CrashReporter.swift
index b37810a9d..09d1db06b 100644
--- a/Mac/CrashReporter/CrashReporter.swift
+++ b/Mac/CrashReporter/CrashReporter.swift
@@ -16,7 +16,7 @@ import CrashReporter
// At some point this code should probably move into RSCore, so Rainier and any other
// future apps can use it.
-struct CrashReporter {
+@MainActor struct CrashReporter {
struct DefaultsKey {
static let sendCrashLogsAutomaticallyKey = "SendCrashLogsAutomatically"
diff --git a/Mac/Preferences/Accounts/AccountCell.swift b/Mac/Preferences/Accounts/AccountCell.swift
index 7a1dbecef..b6fb2eef3 100644
--- a/Mac/Preferences/Accounts/AccountCell.swift
+++ b/Mac/Preferences/Accounts/AccountCell.swift
@@ -8,7 +8,7 @@
import AppKit
-class AccountCell: NSTableCellView {
+@MainActor class AccountCell: NSTableCellView {
private var originalImage: NSImage?
diff --git a/Mac/Preferences/Accounts/AccountsAddCloudKitWindowController.swift b/Mac/Preferences/Accounts/AccountsAddCloudKitWindowController.swift
index 6c01d9ef9..945453122 100644
--- a/Mac/Preferences/Accounts/AccountsAddCloudKitWindowController.swift
+++ b/Mac/Preferences/Accounts/AccountsAddCloudKitWindowController.swift
@@ -17,7 +17,7 @@ enum AccountsAddCloudKitWindowControllerError: LocalizedError {
}
}
-class AccountsAddCloudKitWindowController: NSWindowController {
+@MainActor class AccountsAddCloudKitWindowController: NSWindowController {
@IBOutlet weak var limitationsAndSolutionsTextField: NSTextField!
diff --git a/Mac/Preferences/Accounts/AccountsAddLocalWindowController.swift b/Mac/Preferences/Accounts/AccountsAddLocalWindowController.swift
index 8aedbccd7..373ffea30 100644
--- a/Mac/Preferences/Accounts/AccountsAddLocalWindowController.swift
+++ b/Mac/Preferences/Accounts/AccountsAddLocalWindowController.swift
@@ -9,7 +9,7 @@
import AppKit
import Account
-class AccountsAddLocalWindowController: NSWindowController {
+@MainActor class AccountsAddLocalWindowController: NSWindowController {
@IBOutlet private weak var nameTextField: NSTextField!
@IBOutlet private weak var localAccountNameTextField: NSTextField!
diff --git a/Mac/Preferences/Accounts/AccountsDetailViewController.swift b/Mac/Preferences/Accounts/AccountsDetailViewController.swift
index 3fe5487ee..6b395249e 100644
--- a/Mac/Preferences/Accounts/AccountsDetailViewController.swift
+++ b/Mac/Preferences/Accounts/AccountsDetailViewController.swift
@@ -9,7 +9,7 @@
import AppKit
import Account
-final class AccountsDetailViewController: NSViewController, NSTextFieldDelegate {
+@MainActor final class AccountsDetailViewController: NSViewController, NSTextFieldDelegate {
@IBOutlet weak var typeLabel: NSTextField!
@IBOutlet weak var nameTextField: NSTextField!
diff --git a/Mac/Preferences/Accounts/AccountsFeedbinWindowController.swift b/Mac/Preferences/Accounts/AccountsFeedbinWindowController.swift
index 6ac802851..687e0c864 100644
--- a/Mac/Preferences/Accounts/AccountsFeedbinWindowController.swift
+++ b/Mac/Preferences/Accounts/AccountsFeedbinWindowController.swift
@@ -12,7 +12,7 @@ import RSCore
import RSWeb
import Secrets
-class AccountsFeedbinWindowController: NSWindowController, Logging {
+@MainActor class AccountsFeedbinWindowController: NSWindowController, Logging {
@IBOutlet weak var signInTextField: NSTextField!
@IBOutlet weak var noAccountTextField: NSTextField!
diff --git a/Mac/Preferences/Accounts/AccountsNewsBlurWindowController.swift b/Mac/Preferences/Accounts/AccountsNewsBlurWindowController.swift
index 0af42818e..9cb726e17 100644
--- a/Mac/Preferences/Accounts/AccountsNewsBlurWindowController.swift
+++ b/Mac/Preferences/Accounts/AccountsNewsBlurWindowController.swift
@@ -12,7 +12,7 @@ import RSWeb
import RSCore
import Secrets
-class AccountsNewsBlurWindowController: NSWindowController, Logging {
+@MainActor class AccountsNewsBlurWindowController: NSWindowController, Logging {
@IBOutlet weak var signInTextField: NSTextField!
@IBOutlet weak var noAccountTextField: NSTextField!
diff --git a/Mac/Preferences/Accounts/AccountsPreferencesViewController.swift b/Mac/Preferences/Accounts/AccountsPreferencesViewController.swift
index 307f5b8b5..66a0173cb 100644
--- a/Mac/Preferences/Accounts/AccountsPreferencesViewController.swift
+++ b/Mac/Preferences/Accounts/AccountsPreferencesViewController.swift
@@ -17,7 +17,7 @@ protocol AccountsPreferencesAddAccountDelegate {
}
// MARK: - AccountsPreferencesViewController
-final class AccountsPreferencesViewController: NSViewController {
+@MainActor final class AccountsPreferencesViewController: NSViewController {
@IBOutlet weak var tableView: NSTableView!
@IBOutlet weak var detailView: NSView!
diff --git a/Mac/Preferences/Accounts/AccountsReaderAPIWindowController.swift b/Mac/Preferences/Accounts/AccountsReaderAPIWindowController.swift
index b127003db..e282f327e 100644
--- a/Mac/Preferences/Accounts/AccountsReaderAPIWindowController.swift
+++ b/Mac/Preferences/Accounts/AccountsReaderAPIWindowController.swift
@@ -12,7 +12,7 @@ import RSWeb
import RSCore
import Secrets
-class AccountsReaderAPIWindowController: NSWindowController, Logging {
+@MainActor class AccountsReaderAPIWindowController: NSWindowController, Logging {
@IBOutlet weak var titleImageView: NSImageView!
@IBOutlet weak var titleLabel: NSTextField!
diff --git a/Mac/Preferences/Advanced/AdvancedPreferencesViewController.swift b/Mac/Preferences/Advanced/AdvancedPreferencesViewController.swift
index a48e9fe91..53ccc3aee 100644
--- a/Mac/Preferences/Advanced/AdvancedPreferencesViewController.swift
+++ b/Mac/Preferences/Advanced/AdvancedPreferencesViewController.swift
@@ -8,11 +8,10 @@
import AppKit
-final class AdvancedPreferencesViewController: NSViewController {
+@MainActor final class AdvancedPreferencesViewController: NSViewController {
@IBOutlet var releaseBuildsButton: NSButton!
@IBOutlet var testBuildsButton: NSButton!
- @IBOutlet weak var privacyPolicyTextField: NSTextField!
let releaseBuildsURL = Bundle.main.infoDictionary!["SUFeedURL"]! as! String
let testBuildsURL = Bundle.main.infoDictionary!["FeedURLForTestBuilds"]! as! String
@@ -35,7 +34,6 @@ final class AdvancedPreferencesViewController: NSViewController {
NotificationCenter.default.addObserver(self, selector: #selector(userDefaultsDidChange(_:)), name: UserDefaults.didChangeNotification, object: nil)
didRegisterForNotification = true
}
- privacyPolicyTextField.attributedStringValue = AppAssets.privacyPolicyLink
}
@IBAction func updateTypeButtonClicked(_ sender: Any?) {
diff --git a/Mac/Preferences/ExtensionPoints/ExtensionPointDetailViewController.swift b/Mac/Preferences/ExtensionPoints/ExtensionPointDetailViewController.swift
index f94d0ae59..0a97d68ae 100644
--- a/Mac/Preferences/ExtensionPoints/ExtensionPointDetailViewController.swift
+++ b/Mac/Preferences/ExtensionPoints/ExtensionPointDetailViewController.swift
@@ -8,7 +8,7 @@
import Cocoa
-class ExtensionPointDetailViewController: NSViewController {
+@MainActor class ExtensionPointDetailViewController: NSViewController {
@IBOutlet weak var imageView: NSImageView!
@IBOutlet weak var titleLabel: NSTextField!
diff --git a/Mac/Preferences/ExtensionPoints/ExtensionPointEnableWindowController.swift b/Mac/Preferences/ExtensionPoints/ExtensionPointEnableWindowController.swift
index f8aed7ff5..1af42d40e 100644
--- a/Mac/Preferences/ExtensionPoints/ExtensionPointEnableWindowController.swift
+++ b/Mac/Preferences/ExtensionPoints/ExtensionPointEnableWindowController.swift
@@ -11,7 +11,7 @@ import AuthenticationServices
import OAuthSwift
import Secrets
-class ExtensionPointEnableWindowController: NSWindowController {
+@MainActor class ExtensionPointEnableWindowController: NSWindowController {
@IBOutlet weak var imageView: NSImageView!
@IBOutlet weak var titleLabel: NSTextField!
diff --git a/Mac/Preferences/ExtensionPoints/ExtensionPointPreferencesViewController.swift b/Mac/Preferences/ExtensionPoints/ExtensionPointPreferencesViewController.swift
index d79525d30..16a797a80 100644
--- a/Mac/Preferences/ExtensionPoints/ExtensionPointPreferencesViewController.swift
+++ b/Mac/Preferences/ExtensionPoints/ExtensionPointPreferencesViewController.swift
@@ -16,7 +16,7 @@ protocol ExtensionPointPreferencesEnabler: AnyObject {
func enable(_ extensionPointType: ExtensionPoint.Type)
}
-final class ExtensionPointPreferencesViewController: NSViewController {
+@MainActor final class ExtensionPointPreferencesViewController: NSViewController {
@IBOutlet weak var tableView: NSTableView!
@IBOutlet weak var detailView: NSView!
diff --git a/Mac/Preferences/General/GeneralPrefencesViewController.swift b/Mac/Preferences/General/GeneralPrefencesViewController.swift
index 19fa9b7a0..0b55a756d 100644
--- a/Mac/Preferences/General/GeneralPrefencesViewController.swift
+++ b/Mac/Preferences/General/GeneralPrefencesViewController.swift
@@ -11,7 +11,7 @@ import RSCore
import RSWeb
import UserNotifications
-final class GeneralPreferencesViewController: NSViewController {
+@MainActor final class GeneralPreferencesViewController: NSViewController {
private var userNotificationSettings: UNNotificationSettings?
diff --git a/Mac/Preferences/PreferencesControlsBackgroundView.swift b/Mac/Preferences/PreferencesControlsBackgroundView.swift
index 36353dd6b..307109c50 100644
--- a/Mac/Preferences/PreferencesControlsBackgroundView.swift
+++ b/Mac/Preferences/PreferencesControlsBackgroundView.swift
@@ -9,7 +9,7 @@
import AppKit
import RSCore
-final class PreferencesControlsBackgroundView: NSView {
+@MainActor final class PreferencesControlsBackgroundView: NSView {
private let lightModeFillColor = NSColor(white: 0.97, alpha: 1.0)
private let darkModeFillColor = NSColor(red: 0.32, green: 0.34, blue: 0.35, alpha: 1.0)
diff --git a/Mac/Preferences/PreferencesTableViewBackgroundView.swift b/Mac/Preferences/PreferencesTableViewBackgroundView.swift
index 34548e429..df9fce2db 100644
--- a/Mac/Preferences/PreferencesTableViewBackgroundView.swift
+++ b/Mac/Preferences/PreferencesTableViewBackgroundView.swift
@@ -8,7 +8,7 @@
import AppKit
-final class PreferencesTableViewBackgroundView: NSView {
+@MainActor final class PreferencesTableViewBackgroundView: NSView {
let lightBorderColor = NSColor(white: 0.71, alpha: 1.0)
let darkBorderColor = NSColor(red: 0.41, green: 0.43, blue: 0.44, alpha: 1.0)
diff --git a/Mac/Preferences/PreferencesWindowController.swift b/Mac/Preferences/PreferencesWindowController.swift
index 738aa5d81..f4d7b898f 100644
--- a/Mac/Preferences/PreferencesWindowController.swift
+++ b/Mac/Preferences/PreferencesWindowController.swift
@@ -28,7 +28,7 @@ private struct ToolbarItemIdentifier {
static let Advanced = "Advanced"
}
-class PreferencesWindowController : NSWindowController, NSToolbarDelegate {
+@MainActor class PreferencesWindowController : NSWindowController, NSToolbarDelegate {
private let windowWidth = CGFloat(512.0) // Width is constant for all views; only the height changes
private var viewControllers = [String: NSViewController]()
diff --git a/Shared/Article Extractor/ArticleExtractor.swift b/Shared/Article Extractor/ArticleExtractor.swift
index 1fd4d151b..1b6cdd4f3 100644
--- a/Shared/Article Extractor/ArticleExtractor.swift
+++ b/Shared/Article Extractor/ArticleExtractor.swift
@@ -40,10 +40,10 @@ class ArticleExtractor: Logging {
let clientURL = "https://extract.feedbin.com/parser"
let username = SecretsManager.provider.mercuryClientId
- let signiture = articleLink.hmacUsingSHA1(key: SecretsManager.provider.mercuryClientSecret)
+ let signature = articleLink.hmacUsingSHA1(key: SecretsManager.provider.mercuryClientSecret)
if let base64URL = articleLink.data(using: .utf8)?.base64EncodedString() {
- let fullURL = "\(clientURL)/\(username)/\(signiture)?base64_url=\(base64URL)"
+ let fullURL = "\(clientURL)/\(username)/\(signature)?base64_url=\(base64URL)"
if let url = URL(string: fullURL) {
self.url = url
return
diff --git a/Shared/Exporters/OPMLExporter.swift b/Shared/Exporters/OPMLExporter.swift
index cba135a17..46d232e11 100644
--- a/Shared/Exporters/OPMLExporter.swift
+++ b/Shared/Exporters/OPMLExporter.swift
@@ -10,7 +10,7 @@ import Foundation
import Account
import RSCore
-struct OPMLExporter {
+@MainActor struct OPMLExporter {
static func OPMLString(with account: Account, title: String) -> String {
diff --git a/Shared/Extensions/CacheCleaner.swift b/Shared/Extensions/CacheCleaner.swift
index b80896c5d..14046d523 100644
--- a/Shared/Extensions/CacheCleaner.swift
+++ b/Shared/Extensions/CacheCleaner.swift
@@ -10,7 +10,7 @@ import Foundation
import RSWeb
import RSCore
-struct CacheCleaner: Logging {
+@MainActor struct CacheCleaner: Logging {
static func purgeIfNecessary() {
diff --git a/Shared/Importers/DefaultFeeds.opml b/Shared/Importers/DefaultFeeds.opml
index 04132dbaa..ecac3d91e 100644
--- a/Shared/Importers/DefaultFeeds.opml
+++ b/Shared/Importers/DefaultFeeds.opml
@@ -5,12 +5,17 @@
+
+
+
+
+
diff --git a/Shared/Importers/DefaultFeedsImporter.swift b/Shared/Importers/DefaultFeedsImporter.swift
index 8ed67d3b9..d02b2cec3 100644
--- a/Shared/Importers/DefaultFeedsImporter.swift
+++ b/Shared/Importers/DefaultFeedsImporter.swift
@@ -10,7 +10,7 @@ import Foundation
import Account
import RSCore
-struct DefaultFeedsImporter {
+@MainActor struct DefaultFeedsImporter {
static func importDefaultFeeds(account: Account) {
let defaultFeedsURL = Bundle.main.url(forResource: "DefaultFeeds", withExtension: "opml")!