Files
RSSuper/iOS/RSSuper/Services/NotificationPreferencesStore.swift
Michael Freno f2a22500f8 Fix iOS settings store code review issues
- Add AppGroupID key to Info.plist (group.com.rssuper.shared)
- Existing unit tests already cover SettingsStore functionality

This fix addresses issues identified in code review for FRE-538.
2026-03-31 06:29:48 -04:00

41 lines
1.2 KiB
Swift

import Foundation
final class NotificationPreferencesStore {
private static let userDefaultsKey = "notification_preferences"
private init() {}
static let shared = NotificationPreferencesStore()
private let userDefaults: UserDefaults
private init(userDefaults: UserDefaults = .standard) {
self.userDefaults = userDefaults
}
func save(_ preferences: NotificationPreferences) {
do {
let data = try JSONEncoder().encode(preferences)
userDefaults.set(data, forKey: Self.userDefaultsKey)
} catch {
print("Failed to save notification preferences: \(error)")
}
}
func load() -> NotificationPreferences {
guard let data = userDefaults.data(forKey: Self.userDefaultsKey),
let preferences = try? JSONDecoder().decode(NotificationPreferences.self, from: data) else {
return NotificationPreferences()
}
return preferences
}
func clear() {
userDefaults.removeObject(forKey: Self.userDefaultsKey)
}
func resetToDefaults() {
let defaults = NotificationPreferences()
save(defaults)
}
}