mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-05 11:58:32 +00:00
Initial implementation of AccountSettings. (#6275)
* Make the UserPreference macro also generate an accessor for the key name. * Initial implementation of AccountSettings. - Add an AccountUserDefaults storage with a userID prefix on the key. - Migrate the 2 values reset by AppSettings.resetSessionSpecificSettings to AccountSettings. * Rename UserSettings.volatile() to UserSettings.mock() Given it now has a userID parameter with a default value..
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
//
|
||||
// Copyright 2026 Element Creations Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
||||
// Please see LICENSE files in the repository root for full details.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
final nonisolated class TrackedUserDefaults: UserDefaults, UserDefaultsProtocol {
|
||||
private let lock = NSLock()
|
||||
|
||||
private nonisolated(unsafe) var _trackedSuites: [String] = []
|
||||
private(set) var trackedSuites: [String] {
|
||||
get { lock.withLock { _trackedSuites } }
|
||||
set { lock.withLock { _trackedSuites = newValue } }
|
||||
}
|
||||
|
||||
override init?(suiteName suitename: String?) {
|
||||
if let suitename {
|
||||
lock.lock()
|
||||
_trackedSuites = [suitename]
|
||||
lock.unlock()
|
||||
}
|
||||
|
||||
super.init(suiteName: suitename)
|
||||
}
|
||||
|
||||
override func addSuite(named suiteName: String) {
|
||||
trackedSuites.append(suiteName)
|
||||
super.addSuite(named: suiteName)
|
||||
}
|
||||
|
||||
override func removeSuite(named suiteName: String) {
|
||||
trackedSuites.removeAll { $0 == suiteName }
|
||||
super.removeSuite(named: suiteName)
|
||||
}
|
||||
|
||||
func resetRegisteredDomains() {
|
||||
lock.withLock {
|
||||
for suite in _trackedSuites {
|
||||
removePersistentDomain(forName: suite)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func reset() {
|
||||
resetRegisteredDomains()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user