mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-18 22:44:29 +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"
|
_ => "Template"
|
||||||
};
|
};
|
||||||
var settings = JObject.Parse(row.settings);
|
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;
|
bool hasChange = false;
|
||||||
foreach (var change in changes)
|
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)
|
if (item is null)
|
||||||
continue;
|
continue;
|
||||||
var inventory = item["inventory"]!.Value<int>();
|
var inventory = item["inventory"]!.Value<int>();
|
||||||
|
|||||||
Reference in New Issue
Block a user