mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-18 14:34:23 +01:00
AppService: Update inventory only for known app types (#5590)
There are apps, which do not have a template and hence no inventory. Accessing it via `settings[templatePath]!.Value` causes exceptions in those cases.
This commit is contained in:
@@ -401,11 +401,21 @@ retry:
|
||||
_ => "Template"
|
||||
};
|
||||
var settings = JObject.Parse(row.settings);
|
||||
var items = JArray.Parse(settings[templatePath]!.Value<string>()!);
|
||||
if (!settings.TryGetValue(templatePath, out var template))
|
||||
return;
|
||||
|
||||
var items = template.Type switch
|
||||
{
|
||||
JTokenType.String => JArray.Parse(template.Value<string>()!),
|
||||
JTokenType.Array => (JArray)template,
|
||||
_ => null
|
||||
};
|
||||
if (items is null)
|
||||
return;
|
||||
bool hasChange = false;
|
||||
foreach (var change in changes)
|
||||
{
|
||||
var item = items.FirstOrDefault(i => i["id"]?.Value<string>() == change.ItemId && i["inventory"] is not null && i["inventory"]!.Type is JTokenType.Integer);
|
||||
var item = items.FirstOrDefault(i => i["id"]?.Value<string>() == change.ItemId && i["inventory"]?.Type is JTokenType.Integer);
|
||||
if (item is null)
|
||||
continue;
|
||||
var inventory = item["inventory"]!.Value<int>();
|
||||
|
||||
Reference in New Issue
Block a user