From f2708937c2f7828e6853fa95e03945bbf9bdc883 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Fri, 21 Jul 2023 00:49:58 +0300 Subject: [PATCH] Add support for deprecated values in field select options (cherry picked from commit d9786887f3fe30ef60ad9c50b3272bf60dfef309) Closes #3917 --- src/Lidarr.Http/ClientSchema/SchemaBuilder.cs | 57 +++++++++++-------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/src/Lidarr.Http/ClientSchema/SchemaBuilder.cs b/src/Lidarr.Http/ClientSchema/SchemaBuilder.cs index 3c3c4c777c..f6f9a15575 100644 --- a/src/Lidarr.Http/ClientSchema/SchemaBuilder.cs +++ b/src/Lidarr.Http/ClientSchema/SchemaBuilder.cs @@ -107,7 +107,7 @@ private static FieldMapping[] GetFieldMapping(Type type, string prefix, Func GetSelectOptions(Type selectOptions) { - var options = selectOptions.GetFields().Where(v => v.IsStatic).Select(v => + if (selectOptions.IsEnum) { - var name = v.Name.Replace('_', ' '); - var value = Convert.ToInt32(v.GetRawConstantValue()); - var attrib = v.GetCustomAttribute(); - if (attrib != null) - { - return new SelectOption - { - Value = value, - Name = attrib.Label ?? name, - Order = attrib.Order, - Hint = attrib.Hint ?? $"({value})" - }; - } - else - { - return new SelectOption + var options = selectOptions + .GetFields() + .Where(v => v.IsStatic && !v.GetCustomAttributes(false).OfType().Any()) + .Select(v => { - Value = value, - Name = name, - Order = value - }; - } - }); + var name = v.Name.Replace('_', ' '); + var value = Convert.ToInt32(v.GetRawConstantValue()); + var attrib = v.GetCustomAttribute(); + + if (attrib != null) + { + return new SelectOption + { + Value = value, + Name = attrib.Label ?? name, + Order = attrib.Order, + Hint = attrib.Hint ?? $"({value})" + }; + } + + return new SelectOption + { + Value = value, + Name = name, + Order = value + }; + }); + + return options.OrderBy(o => o.Order).ToList(); + } - return options.OrderBy(o => o.Order).ToList(); + throw new NotSupportedException(); } private static Func GetValueConverter(Type propertyType)