mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-05 20:09:04 +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,42 @@
|
||||
//
|
||||
// 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 Combine
|
||||
import Foundation
|
||||
import Macros
|
||||
|
||||
final nonisolated class AccountSettings: @unchecked Sendable {
|
||||
/// UserDefaults to be used on reads and writes.
|
||||
private let store: AccountUserDefaults
|
||||
private let userID: String
|
||||
|
||||
// MARK: Session
|
||||
|
||||
@UserPreference(defaultValue: false)
|
||||
var hasRunIdentityConfirmationOnboarding: Bool
|
||||
|
||||
// MARK: Search
|
||||
|
||||
/// The queries the user searched for and the rooms they opened from the results, most recent first.
|
||||
@UserPreference(defaultValue: [SearchBreadcrumb]())
|
||||
var searchBreadcrumbs: [SearchBreadcrumb]
|
||||
|
||||
init(userID: String, store: UserDefaultsProtocol) {
|
||||
self.store = .init(userID: userID, store: store)
|
||||
self.userID = userID
|
||||
}
|
||||
|
||||
func migrateAppSettingsValue(_ keyPath: KeyPath<AccountSettings, UserPreferenceKey>) {
|
||||
let storeKey = self[keyPath: keyPath].rawValue
|
||||
store.migrateAppSettingsValue(forKey: storeKey)
|
||||
}
|
||||
|
||||
func reset() {
|
||||
MXLog.warning("Resetting AccountSettings for \(userID).")
|
||||
store.reset()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user