Files
QueueCube/QueueCube/Backend/Settings.swift

56 lines
1.4 KiB
Swift

//
// Settings.swift
// QueueCube
//
// Created by James Magahern on 6/10/25.
//
import Foundation
struct Settings
{
var configuredServers: [Server]
func configuredServers(_ servers: [Server]) -> Self {
var copy = self
copy.configuredServers = servers
return copy
}
var isConfigured: Bool {
!configuredServers.isEmpty
}
static func fromDefaults() -> Settings {
let configuredServers: [Server] = {
guard let configuredServersData = UserDefaults.standard.data(forKey: Keys.configuredServers.rawValue)
else { return [] }
guard let configuredServers = try? PropertyListDecoder().decode([Server].self, from: configuredServersData)
else { return [] }
return configuredServers
}()
return Settings(configuredServers: configuredServers)
}
func save() {
let configuredServersData = try! PropertyListEncoder().encode(configuredServers)
UserDefaults.standard.set(configuredServersData, forKey: Keys.configuredServers.rawValue)
NotificationCenter.default.post(name: .settingsChanged, object: nil)
}
// MARK: - Types
enum Keys: String
{
case configuredServers
}
}
extension Notification.Name
{
static let settingsChanged = Notification.Name("settingsChanged")
}