updated UserDefaults demo to not use AppVersionKey

Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
Matt Bruce 2026-01-23 14:05:35 -06:00
parent f136869171
commit 9a938b68c2
4 changed files with 25 additions and 4 deletions

View File

@ -10,6 +10,7 @@ struct AppStorageCatalog: StorageKeyCatalog {
// Order here is purely for readability in audit reports. // Order here is purely for readability in audit reports.
[ [
.key(.appVersion), .key(.appVersion),
.key(.userDefaultsDemoValue),
.key(.userPreferences), .key(.userPreferences),
.key(.credentials), .key(.credentials),
.key(.lastLocation), .key(.lastLocation),

View File

@ -1,7 +1,7 @@
import Foundation import Foundation
import LocalData import LocalData
/// UserDefaults key used in the demo and as a lightweight migration flag. /// UserDefaults key used as a lightweight migration flag.
extension StorageKey where Value == String { extension StorageKey where Value == String {
/// Stores the app version in standard UserDefaults. /// Stores the app version in standard UserDefaults.
/// - Domain: UserDefaults (standard) /// - Domain: UserDefaults (standard)

View File

@ -0,0 +1,20 @@
import Foundation
import LocalData
/// UserDefaults key used exclusively by the UserDefaults demo screen.
extension StorageKey where Value == String {
/// Stores a demo value in standard UserDefaults.
/// - Domain: UserDefaults (standard)
/// - Security: None
/// - Sync: Automatic for small data
nonisolated static let userDefaultsDemoValue = StorageKey(
name: "user_defaults_demo_value",
domain: .userDefaults(suite: nil),
security: .none,
serializer: .json,
owner: "SampleApp",
description: "Stores a demo value for the UserDefaults screen.",
availability: .all,
syncPolicy: .automaticSmall
)
}

View File

@ -142,7 +142,7 @@ struct UserDefaultsDemo: View {
isLoading = true isLoading = true
Task { Task {
do { do {
let key = StorageKey.appVersion let key = StorageKey.userDefaultsDemoValue
try await StorageRouter.shared.set(inputText, for: key) try await StorageRouter.shared.set(inputText, for: key)
statusMessage = "✓ Saved successfully" statusMessage = "✓ Saved successfully"
} catch { } catch {
@ -157,7 +157,7 @@ struct UserDefaultsDemo: View {
isLoading = true isLoading = true
Task { Task {
do { do {
let key = StorageKey.appVersion let key = StorageKey.userDefaultsDemoValue
let value = try await StorageRouter.shared.get(key) let value = try await StorageRouter.shared.get(key)
storedValue = value storedValue = value
inputText = value // Sync to field inputText = value // Sync to field
@ -177,7 +177,7 @@ struct UserDefaultsDemo: View {
isLoading = true isLoading = true
Task { Task {
do { do {
let key = StorageKey.appVersion let key = StorageKey.userDefaultsDemoValue
try await StorageRouter.shared.remove(key) try await StorageRouter.shared.remove(key)
storedValue = "" storedValue = ""
statusMessage = "✓ Removed successfully" statusMessage = "✓ Removed successfully"