From 00c44c612fc123650184b28be3c2ff162f0dda58 Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Mon, 15 Apr 2024 10:52:14 -0400 Subject: [PATCH] Fix feature flag preference decoding with old flags --- .../TuskerPreferences/Keys/AdvancedKeys.swift | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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:))) + } }