diff options
| author | Fuwn <[email protected]> | 2025-09-03 22:28:08 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-09-03 22:28:08 -0700 |
| commit | e42ace815c0e33e90a6e576942d7905f01a314dd (patch) | |
| tree | 4e3a8b15e6e2ebfb5436014660c990a57350e069 /Sora/Data/Settings | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-e42ace815c0e33e90a6e576942d7905f01a314dd.tar.xz sora-testing-e42ace815c0e33e90a6e576942d7905f01a314dd.zip | |
feat: Development commit
Diffstat (limited to 'Sora/Data/Settings')
| -rw-r--r-- | Sora/Data/Settings/SettingsManager.swift | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/Sora/Data/Settings/SettingsManager.swift b/Sora/Data/Settings/SettingsManager.swift index 30fe587..3fba04e 100644 --- a/Sora/Data/Settings/SettingsManager.swift +++ b/Sora/Data/Settings/SettingsManager.swift @@ -1,6 +1,6 @@ // swiftlint:disable file_length -import SwiftUI +@preconcurrency import SwiftUI @MainActor class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_length @@ -35,7 +35,7 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l @AppStorage("uniformThumbnailGrid") private var _uniformThumbnailGrid: Bool = false - @preconcurrency private var syncObservation: (any NSObjectProtocol & Sendable)? + private var syncObservation: NSObjectProtocol? #if os(macOS) @AppStorage("saveTagsToFile") @@ -448,15 +448,16 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l guard let encoded = Self.encode(sortedValues) else { localData.wrappedValue = Data() - return } - localData.wrappedValue = encoded + if localData.wrappedValue != encoded { + localData.wrappedValue = encoded - if enableSync { - NSUbiquitousKeyValueStore.default.set(encoded, forKey: key) - NSUbiquitousKeyValueStore.default.synchronize() + if enableSync { + NSUbiquitousKeyValueStore.default.set(encoded, forKey: key) + NSUbiquitousKeyValueStore.default.synchronize() + } } } @@ -472,9 +473,10 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l } } + // swiftlint:disable:next async_without_await private func performBatchedSync(for keys: Set<SettingsSyncKey>) async { for key in keys { - await triggerSyncIfNeeded(for: key) + triggerSyncIfNeeded(for: key) } } @@ -918,7 +920,7 @@ class SettingsManager: ObservableObject { // swiftlint:disable:this type_body_l #endif // MARK: - Deinitialisation - deinit { + nonisolated deinit { if let observation = syncObservation { NotificationCenter.default.removeObserver(observation) } |