Fix test-time crashes by making sure some main thread code runs on main thread.

This commit is contained in:
Brent Simmons
2025-04-20 21:21:38 -07:00
parent 894acaeb0a
commit aa75efaa2e
7 changed files with 46 additions and 39 deletions

View File

@@ -508,7 +508,7 @@ class MainTimelineViewController: UITableViewController, UndoableCommandRunner {
}
@objc func userDefaultsDidChange(_ note: Notification) {
DispatchQueue.main.async {
Task { @MainActor in
if self.numberOfTextLines != AppDefaults.shared.timelineNumberOfLines || self.iconSize != AppDefaults.shared.timelineIconSize {
self.numberOfTextLines = AppDefaults.shared.timelineNumberOfLines
self.iconSize = AppDefaults.shared.timelineIconSize
@@ -518,7 +518,7 @@ class MainTimelineViewController: UITableViewController, UndoableCommandRunner {
self.updateToolbar()
}
}
@objc func contentSizeCategoryDidChange(_ note: Notification) {
reloadAllVisibleCells()
}

View File

@@ -493,8 +493,10 @@ class SceneCoordinator: NSObject, UndoableCommandRunner {
}
@objc func userDefaultsDidChange(_ note: Notification) {
self.sortDirection = AppDefaults.shared.timelineSortDirection
self.groupByFeed = AppDefaults.shared.timelineGroupByFeed
Task { @MainActor in
self.sortDirection = AppDefaults.shared.timelineSortDirection
self.groupByFeed = AppDefaults.shared.timelineGroupByFeed
}
}
@objc func accountDidDownloadArticles(_ note: Notification) {

View File

@@ -234,22 +234,19 @@ private extension SceneDelegate {
}
@objc func userDefaultsDidChange() {
updateUserInterfaceStyle()
}
func updateUserInterfaceStyle() {
DispatchQueue.main.async {
switch AppDefaults.userInterfaceColorPalette {
case .automatic:
self.window?.overrideUserInterfaceStyle = .unspecified
case .light:
self.window?.overrideUserInterfaceStyle = .light
case .dark:
self.window?.overrideUserInterfaceStyle = .dark
}
Task {
updateUserInterfaceStyle()
}
}
@MainActor func updateUserInterfaceStyle() {
switch AppDefaults.userInterfaceColorPalette {
case .automatic:
self.window?.overrideUserInterfaceStyle = .unspecified
case .light:
self.window?.overrideUserInterfaceStyle = .light
case .dark:
self.window?.overrideUserInterfaceStyle = .dark
}
}
}