aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Models/Preferences.swift
blob: 324c6d5c93a3d5955398d08fc14e77910ffc5418 (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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import SwiftUI

enum PrefsKeys: String {
  case username = "username"
  case userIconID = "user icon id"
  case refusePrivateMessages = "refuse private messages"
  case refusePrivateChat = "refuse private chat"
  case enableAutomaticMessage = "enable automatic message"
  case automaticMessage = "automatic message"
}

@Observable
class Prefs {
  init() {
    UserDefaults.standard.register(defaults:[
      PrefsKeys.username.rawValue: "guest",
      PrefsKeys.userIconID.rawValue: 137,
      PrefsKeys.refusePrivateMessages.rawValue: false,
      PrefsKeys.refusePrivateChat.rawValue: false,
      PrefsKeys.enableAutomaticMessage.rawValue: false,
      PrefsKeys.automaticMessage.rawValue: "",
    ])
    
    self.username = UserDefaults.standard.string(forKey: PrefsKeys.username.rawValue)!
    self.userIconID = UserDefaults.standard.integer(forKey: PrefsKeys.userIconID.rawValue)
    self.refusePrivateMessages = UserDefaults.standard.bool(forKey: PrefsKeys.refusePrivateMessages.rawValue)
    self.refusePrivateChat = UserDefaults.standard.bool(forKey: PrefsKeys.refusePrivateChat.rawValue)
    self.enableAutomaticMessage = UserDefaults.standard.bool(forKey: PrefsKeys.enableAutomaticMessage.rawValue)
    self.automaticMessage = UserDefaults.standard.string(forKey: PrefsKeys.automaticMessage.rawValue)!
  }
  
  var username: String {
    didSet { UserDefaults.standard.set(self.username, forKey: PrefsKeys.username.rawValue) }
  }
  
  var userIconID: Int {
    didSet { UserDefaults.standard.set(self.userIconID, forKey: PrefsKeys.userIconID.rawValue) }
  }
  
  var refusePrivateMessages: Bool {
    didSet { UserDefaults.standard.set(self.refusePrivateMessages, forKey: PrefsKeys.refusePrivateMessages.rawValue) }
  }
  
  var refusePrivateChat: Bool {
    didSet { UserDefaults.standard.set(self.refusePrivateChat, forKey: PrefsKeys.refusePrivateChat.rawValue) }
  }
  
  var enableAutomaticMessage: Bool {
    didSet { UserDefaults.standard.set(self.enableAutomaticMessage, forKey: PrefsKeys.enableAutomaticMessage.rawValue) }
  }
  
  var automaticMessage: String {
    didSet { UserDefaults.standard.set(self.automaticMessage, forKey: PrefsKeys.automaticMessage.rawValue) }
  }
}

//@Observable
//final class Preferences {
//  
//  var username: String {
//    get {
//      access(keyPath: \.username)
//      return UserDefaults.standard.object(forKey: "username") as? String ?? "guest"
//    }
//    set {
//      withMutation(keyPath: \.username) {
//        UserDefaults.standard.set(newValue, forKey: "username")
//      }
//    }
//  }
//  
//  var refusePrivateMessages: Bool {
//    get { return UserDefaults.standard.object(forKey: "refuse private messages") as? Bool ?? false }
//    set { UserDefaults.standard.set(newValue, forKey: "refuse private messages") }
//  }
//  
//  var refusePrivateChat: Bool {
//    get { return UserDefaults.standard.object(forKey: "refuse private chat") as? Bool ?? false }
//    set { UserDefaults.standard.set(newValue, forKey: "refuse private chat") }
//  }
//  
//  var automaticResponseEnabled: Bool {
//    get { return UserDefaults.standard.object(forKey: "enable automatic response") as? Bool ?? false }
//    set { UserDefaults.standard.set(newValue, forKey: "enable automatic response") }
//  }
//  
//  var automaticResponse: String {
//    get { return UserDefaults.standard.object(forKey: "automatic response") as? String ?? "" }
//    set { UserDefaults.standard.set(newValue, forKey: "automatic response") }
//  }
//  
//  var userIconID: Int {
//    get { return UserDefaults.standard.object(forKey: "user icon") as? Int ?? 404 }
//    set { UserDefaults.standard.set(newValue, forKey: "user icon") }
//  }
//  
////  @AppStorage("username") public var username: String = "guest"
////  @AppStorage("refuse private messages") public var refusePrivateMessages: Bool = false
////  @AppStorage("refuse private chat") public var refusePrivateChat: Bool = false
////  @AppStorage("enable automatic response") public var enableAutomaticResponse: Bool = false
////  @AppStorage("automatic response") public var automaticResponse: String = ""
////  
////  // Icon
////  @AppStorage("user icon id") public var iconID: Int = 404
//  
//  public static let shared = Preferences()
//}