@@ -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