Skip to content

Commit 8593273

Browse files
committed
Fix a crash
1 parent 5f80e5c commit 8593273

1 file changed

Lines changed: 19 additions & 4 deletions

File tree

Tool/Sources/Preferences/Types/SuggestionFeatureProvider.swift

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,35 @@ public enum BuiltInSuggestionFeatureProvider: Int, CaseIterable, Codable {
55
case codeium
66
}
77

8-
public enum SuggestionFeatureProvider: Codable, RawRepresentable, Hashable {
8+
public enum SuggestionFeatureProvider: RawRepresentable, Hashable {
99
case builtIn(BuiltInSuggestionFeatureProvider)
1010
case `extension`(name: String, bundleIdentifier: String)
1111

12+
enum Storage: Codable {
13+
case builtIn(BuiltInSuggestionFeatureProvider)
14+
case `extension`(name: String, bundleIdentifier: String)
15+
}
16+
1217
public init?(rawValue: String) {
1318
guard let data = rawValue.data(using: .utf8),
14-
let value = try? JSONDecoder().decode(Self.self, from: data)
19+
let value = try? JSONDecoder().decode(Storage.self, from: data)
1520
else { return nil }
1621

17-
self = value
22+
switch value {
23+
case let .builtIn(provider):
24+
self = .builtIn(provider)
25+
case let .extension(name, bundleIdentifier):
26+
self = .extension(name: name, bundleIdentifier: bundleIdentifier)
27+
}
1828
}
1929

2030
public var rawValue: String {
21-
if let data = try? JSONEncoder().encode(self) {
31+
let storage: Storage = switch self {
32+
case let .builtIn(provider): .builtIn(provider)
33+
case let .extension(name, bundleIdentifier):
34+
.extension(name: name, bundleIdentifier: bundleIdentifier)
35+
}
36+
if let data = try? JSONEncoder().encode(storage) {
2237
return String(data: data, encoding: .utf8) ?? ""
2338
}
2439
return ""

0 commit comments

Comments
 (0)