Files
singlechat/ios/YpChat/Core/ProfileStore.swift
Torsten Schulz (local) bfe28a25fa
All checks were successful
Deploy SingleChat / deploy (push) Successful in 40s
android app, extension of stats
2026-08-10 14:03:34 +02:00

44 lines
1.4 KiB
Swift
Executable File

import Foundation
/// Entspricht `ProfileStore.kt` / `SavedProfile`.
struct SavedProfile: Equatable, Sendable {
var nickname: String = ""
var gender: String = ""
var age: Int = 18
var country: String = "Germany"
}
final class ProfileStore: @unchecked Sendable {
private let defaults: UserDefaults
private let prefix = "ypchat_profile."
init(defaults: UserDefaults = .standard) {
self.defaults = defaults
}
func read() -> SavedProfile {
SavedProfile(
nickname: defaults.string(forKey: prefix + "nickname") ?? "",
gender: defaults.string(forKey: prefix + "gender") ?? "",
age: {
let k = prefix + "age"
return defaults.object(forKey: k) == nil ? 18 : defaults.integer(forKey: k)
}(),
country: defaults.string(forKey: prefix + "country") ?? "Germany"
)
}
func write(_ profile: SavedProfile) {
defaults.set(profile.nickname.trimmingCharacters(in: .whitespacesAndNewlines), forKey: prefix + "nickname")
defaults.set(profile.gender, forKey: prefix + "gender")
defaults.set(profile.age, forKey: prefix + "age")
defaults.set(profile.country, forKey: prefix + "country")
}
func clear() {
for key in ["nickname", "gender", "age", "country"] {
defaults.removeObject(forKey: prefix + key)
}
}
}