aboutsummaryrefslogtreecommitdiff
path: root/Hutch/App/AccountSession.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Hutch/App/AccountSession.swift')
-rw-r--r--Hutch/App/AccountSession.swift32
1 files changed, 32 insertions, 0 deletions
diff --git a/Hutch/App/AccountSession.swift b/Hutch/App/AccountSession.swift
new file mode 100644
index 0000000..1918b0a
--- /dev/null
+++ b/Hutch/App/AccountSession.swift
@@ -0,0 +1,32 @@
+import Foundation
+
+struct AccountSession: Sendable {
+ let account: AccountEntry
+ let user: User
+ let client: SRHTClient
+ let defaults: UserDefaults
+ let systemStatusRepository: SystemStatusRepository
+
+ var id: String {
+ account.id
+ }
+}
+
+enum AccountDefaultsStore {
+ private static let suitePrefix = "net.cleberg.Hutch.account"
+
+ static func userDefaults(for accountID: String) -> UserDefaults {
+ let suiteName = suiteName(for: accountID)
+ return UserDefaults(suiteName: suiteName) ?? .standard
+ }
+
+ static func clear(accountID: String) {
+ let suiteName = suiteName(for: accountID)
+ guard let defaults = UserDefaults(suiteName: suiteName) else { return }
+ defaults.removePersistentDomain(forName: suiteName)
+ }
+
+ private static func suiteName(for accountID: String) -> String {
+ "\(suitePrefix).\(accountID)"
+ }
+}