summaryrefslogtreecommitdiff
path: root/Jel/Controllers/SettingsController.swift
blob: 2b912c4f56749a9f324e98a7ead9c5118ca81da2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//
//  SettingsController.swift
//  Jel
//
//  Created by zerocool on 12/13/23.
//

import Foundation

enum AppearanceState: Int, CaseIterable, Identifiable, CustomStringConvertible {
  case automatic
  case light
  case dark
  
  var id: Self { self }
  
  var description: String {
    switch self {
      case .light:
        return "Light"
      case .dark:
        return "Dark"
      case .automatic:
        return "Automatic"
    }
  }
}

class SettingsController: ObservableObject {
  static let shared: SettingsController = SettingsController()
  
  @Published var appearance: AppearanceState = .automatic
  
  private let defaults = UserDefaults.standard
  
  func save() {
    defaults.set(self.appearance.rawValue, forKey: "Settings_appearance")
  }
  
  func load() {
    let oldAppearance = defaults.integer(forKey: "Settings_appearance")
    self.appearance = AppearanceState(rawValue: oldAppearance) ?? .automatic
  }
}