summaryrefslogtreecommitdiff
path: root/Sora/Data/Settings
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-09-03 22:28:08 -0700
committerFuwn <[email protected]>2025-09-03 22:28:08 -0700
commite42ace815c0e33e90a6e576942d7905f01a314dd (patch)
tree4e3a8b15e6e2ebfb5436014660c990a57350e069 /Sora/Data/Settings
parentfeat: Development commit (diff)
downloadsora-testing-e42ace815c0e33e90a6e576942d7905f01a314dd.tar.xz
sora-testing-e42ace815c0e33e90a6e576942d7905f01a314dd.zip
feat: Development commit
Diffstat (limited to 'Sora/Data/Settings')
-rw-r--r--Sora/Data/Settings/SettingsManager.swift20
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)
}