mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-09-17 17:14:18 +02:00
Fixed: (Cardigann) Use of the default value for new select settings
Fixes #1929
This commit is contained in:
@@ -292,56 +292,60 @@ namespace NzbDrone.Core.Indexers.Definitions.Cardigann
|
|||||||
foreach (var setting in _definition.Settings)
|
foreach (var setting in _definition.Settings)
|
||||||
{
|
{
|
||||||
var name = ".Config." + setting.Name;
|
var name = ".Config." + setting.Name;
|
||||||
var value = Settings.ExtraFieldData.GetValueOrDefault(setting.Name, setting.Default);
|
|
||||||
|
|
||||||
if ((setting.Type != "password" && setting.Name != "apikey" && setting.Name != "rsskey") && indexerLogging)
|
object defaultValue = setting.Type switch
|
||||||
|
{
|
||||||
|
"select" => setting.Options.OrderBy(x => x.Key).Select(x => x.Key).ToList().IndexOf(setting.Default).ToString().ParseInt64() ?? 0,
|
||||||
|
_ => setting.Default
|
||||||
|
};
|
||||||
|
|
||||||
|
var value = Settings.ExtraFieldData.GetValueOrDefault(setting.Name, defaultValue);
|
||||||
|
|
||||||
|
if (indexerLogging && setting.Type != "password" && setting.Name != "apikey" && setting.Name != "rsskey")
|
||||||
{
|
{
|
||||||
_logger.Trace($"{name} got value {value.ToJson()}");
|
_logger.Trace($"{name} got value {value.ToJson()}");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (setting.Type == "text" || setting.Type == "password")
|
switch (setting.Type)
|
||||||
{
|
{
|
||||||
variables[name] = value;
|
case "text":
|
||||||
}
|
case "password":
|
||||||
else if (setting.Type == "checkbox")
|
variables[name] = value;
|
||||||
{
|
break;
|
||||||
if (value is string stringValue && bool.TryParse(stringValue, out var result))
|
case "checkbox":
|
||||||
{
|
if (value is string stringValue && bool.TryParse(stringValue, out var result))
|
||||||
value = result;
|
{
|
||||||
}
|
value = result;
|
||||||
|
}
|
||||||
|
|
||||||
variables[name] = (bool)value ? ".True" : null;
|
variables[name] = (bool)value ? ".True" : null;
|
||||||
}
|
break;
|
||||||
else if (setting.Type == "select")
|
case "select":
|
||||||
{
|
if (indexerLogging)
|
||||||
if (indexerLogging)
|
{
|
||||||
{
|
_logger.Trace($"Setting options: {setting.Options.ToJson()}");
|
||||||
_logger.Trace($"Setting options: {setting.Options.ToJson()}");
|
}
|
||||||
}
|
|
||||||
|
|
||||||
var sorted = setting.Options.OrderBy(x => x.Key).ToList();
|
var sorted = setting.Options.OrderBy(x => x.Key).ToList();
|
||||||
var selected = sorted[(int)(long)value];
|
var selected = sorted[(int)(long)value];
|
||||||
|
|
||||||
if (indexerLogging)
|
if (indexerLogging)
|
||||||
{
|
{
|
||||||
_logger.Debug($"Selected option: {selected.ToJson()}");
|
_logger.Debug($"Selected option: {selected.ToJson()}");
|
||||||
}
|
}
|
||||||
|
|
||||||
variables[name] = selected.Key;
|
variables[name] = selected.Key;
|
||||||
}
|
break;
|
||||||
else if (setting.Type == "info")
|
case "info":
|
||||||
{
|
variables[name] = value;
|
||||||
variables[name] = value;
|
break;
|
||||||
}
|
case "cardigannCaptcha":
|
||||||
else if (setting.Type == "cardigannCaptcha")
|
break;
|
||||||
{
|
default:
|
||||||
}
|
throw new NotSupportedException($"Type {setting.Type} is not supported.");
|
||||||
else
|
|
||||||
{
|
|
||||||
throw new NotSupportedException($"Type {setting.Type} is not supported.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (setting.Type != "password" && setting.Name != "apikey" && setting.Name != "rsskey" && indexerLogging && variables.ContainsKey(name))
|
if (indexerLogging && setting.Type != "password" && setting.Name != "apikey" && setting.Name != "rsskey" && variables.ContainsKey(name))
|
||||||
{
|
{
|
||||||
_logger.Debug($"Setting {setting.Name} to {variables[name].ToJson()}");
|
_logger.Debug($"Setting {setting.Name} to {variables[name].ToJson()}");
|
||||||
}
|
}
|
||||||
|
@@ -152,25 +152,12 @@ namespace Prowlarr.Api.V1.Indexers
|
|||||||
|
|
||||||
private object MapValue(SettingsField setting, object value)
|
private object MapValue(SettingsField setting, object value)
|
||||||
{
|
{
|
||||||
if (setting.Type == "select")
|
return setting.Type switch
|
||||||
{
|
{
|
||||||
return value.ToString().ParseInt64() ?? 0;
|
"select" => value.ToString().ParseInt64() ?? 0,
|
||||||
}
|
"checkbox" => bool.TryParse(value.ToString(), out var result) && result,
|
||||||
else if (setting.Type == "checkbox")
|
_ => value?.ToString() ?? string.Empty
|
||||||
{
|
};
|
||||||
if (bool.TryParse(value.ToString(), out var result))
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return value?.ToString() ?? string.Empty;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Field MapField(SettingsField setting, int order)
|
private Field MapField(SettingsField setting, int order)
|
||||||
@@ -196,14 +183,7 @@ namespace Prowlarr.Api.V1.Indexers
|
|||||||
}
|
}
|
||||||
else if (setting.Type == "checkbox")
|
else if (setting.Type == "checkbox")
|
||||||
{
|
{
|
||||||
if (bool.TryParse(setting.Default, out var value))
|
field.Value = bool.TryParse(setting.Default, out var value) && value;
|
||||||
{
|
|
||||||
field.Value = value;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
field.Value = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user