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()
//}
|