Skip to content

Commit 8f4784f

Browse files
committed
fix: blacklist could prevent app launch in v7.1.0
1 parent 696a489 commit 8f4784f

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

src/logic/Preferences.swift

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ class Preferences {
129129
static var hideWindowlessApps: Bool { defaults.bool("hideWindowlessApps") }
130130
// periphery:ignore
131131
static var startAtLogin: Bool { defaults.bool("startAtLogin") }
132-
static var blacklist: [BlacklistEntry] { jsonDecode([BlacklistEntry].self, defaults.string("blacklist")) }
132+
static var blacklist: [BlacklistEntry] { defaults.json("blacklist", [BlacklistEntry].self) }
133133
static var previewFocusedWindow: Bool { defaults.bool("previewFocusedWindow") }
134134
static var screenRecordingPermissionSkipped: Bool { defaults.bool("screenRecordingPermissionSkipped") }
135135

@@ -424,10 +424,6 @@ class Preferences {
424424
})
425425
}
426426

427-
static func jsonDecode<T>(_ type: T.Type, _ value: String) -> T where T: Decodable {
428-
return try! JSONDecoder().decode(type, from: value.data(using: .utf8)!)
429-
}
430-
431427
static func jsonEncode<T>(_ value: T) -> String where T: Encodable {
432428
return String(data: try! JSONEncoder().encode(value), encoding: .utf8)!
433429
}
@@ -1075,10 +1071,10 @@ enum CrashPolicyPreference: CaseIterable, MacroPreference {
10751071
}
10761072
}
10771073

1078-
enum BlacklistHidePreference: CaseIterable, MacroPreference, Codable {
1079-
case none
1080-
case always
1081-
case whenNoOpenWindow
1074+
enum BlacklistHidePreference: String/* required for jsonEncode */, CaseIterable, MacroPreference, Codable {
1075+
case none = "0"
1076+
case always = "1"
1077+
case whenNoOpenWindow = "2"
10821078

10831079
var localizedString: LocalizedString {
10841080
switch self {
@@ -1089,10 +1085,10 @@ enum BlacklistHidePreference: CaseIterable, MacroPreference, Codable {
10891085
}
10901086
}
10911087

1092-
enum BlacklistIgnorePreference: CaseIterable, MacroPreference, Codable {
1093-
case none
1094-
case always
1095-
case whenFullscreen
1088+
enum BlacklistIgnorePreference: String/* required for jsonEncode */, CaseIterable, MacroPreference, Codable {
1089+
case none = "0"
1090+
case always = "1"
1091+
case whenFullscreen = "2"
10961092

10971093
var localizedString: LocalizedString {
10981094
switch self {
@@ -1152,4 +1148,12 @@ extension UserDefaults {
11521148
func macroPref<A>(_ key: String, _ macroPreferences: [A]) -> A {
11531149
return getThenConvertOrReset(key, { s in Int(s).flatMap { macroPreferences[safe: $0] } })
11541150
}
1151+
1152+
func json<T>(_ key: String, _ type: T.Type) -> T where T: Decodable {
1153+
return getThenConvertOrReset(key, { s in jsonDecode(s, type) })
1154+
}
1155+
1156+
private func jsonDecode<T>(_ value: String, _ type: T.Type) -> T? where T: Decodable {
1157+
return value.data(using: .utf8).flatMap { try? JSONDecoder().decode(type, from: $0) }
1158+
}
11551159
}

0 commit comments

Comments
 (0)