Add support for deprecated values in field select options

This commit is contained in:
Bogdan 2023-07-21 00:49:58 +03:00 committed by Mark McDowall
parent 3c17260c72
commit d9786887f3
1 changed files with 20 additions and 18 deletions

View File

@ -123,7 +123,7 @@ namespace Sonarr.Http.ClientSchema
Placeholder = fieldAttribute.Placeholder Placeholder = fieldAttribute.Placeholder
}; };
if (fieldAttribute.Type == FieldType.Select || fieldAttribute.Type == FieldType.TagSelect) if (fieldAttribute.Type is FieldType.Select or FieldType.TagSelect)
{ {
if (fieldAttribute.SelectOptionsProviderAction.IsNotNullOrWhiteSpace()) if (fieldAttribute.SelectOptionsProviderAction.IsNotNullOrWhiteSpace())
{ {
@ -172,31 +172,33 @@ namespace Sonarr.Http.ClientSchema
{ {
if (selectOptions.IsEnum) if (selectOptions.IsEnum)
{ {
var options = selectOptions.GetFields().Where(v => v.IsStatic).Select(v => var options = selectOptions
{ .GetFields()
var name = v.Name.Replace('_', ' '); .Where(v => v.IsStatic && !v.GetCustomAttributes(false).OfType<ObsoleteAttribute>().Any())
var value = Convert.ToInt32(v.GetRawConstantValue()); .Select(v =>
var attrib = v.GetCustomAttribute<FieldOptionAttribute>();
if (attrib != null)
{ {
return new SelectOption var name = v.Name.Replace('_', ' ');
var value = Convert.ToInt32(v.GetRawConstantValue());
var attrib = v.GetCustomAttribute<FieldOptionAttribute>();
if (attrib != null)
{ {
Value = value, return new SelectOption
Name = attrib.Label ?? name, {
Order = attrib.Order, Value = value,
Hint = attrib.Hint ?? $"({value})" Name = attrib.Label ?? name,
}; Order = attrib.Order,
} Hint = attrib.Hint ?? $"({value})"
else };
{ }
return new SelectOption return new SelectOption
{ {
Value = value, Value = value,
Name = name, Name = name,
Order = value Order = value
}; };
} });
});
return options.OrderBy(o => o.Order).ToList(); return options.OrderBy(o => o.Order).ToList();
} }