diff --git a/Packages/TuskerPreferences/Sources/TuskerPreferences/Keys/AdvancedKeys.swift b/Packages/TuskerPreferences/Sources/TuskerPreferences/Keys/AdvancedKeys.swift index 25a80815..7baf2249 100644 --- a/Packages/TuskerPreferences/Sources/TuskerPreferences/Keys/AdvancedKeys.swift +++ b/Packages/TuskerPreferences/Sources/TuskerPreferences/Keys/AdvancedKeys.swift @@ -12,6 +12,17 @@ struct StatusContentTypeKey: MigratablePreferenceKey { static var defaultValue: StatusContentType { .plain } } -struct FeatureFlagsKey: MigratablePreferenceKey { +struct FeatureFlagsKey: MigratablePreferenceKey, CustomCodablePreferenceKey { static var defaultValue: Set { [] } + + static func encode(value: Set, to encoder: any Encoder) throws { + var container = encoder.singleValueContainer() + try container.encode(value.map(\.rawValue)) + } + + static func decode(from decoder: any Decoder) throws -> Set? { + let container = try decoder.singleValueContainer() + let names = try container.decode([String].self) + return Set(names.compactMap(FeatureFlag.init(rawValue:))) + } }