mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-02-22 14:22:40 +01:00
* Add labels for recent txs dashboard widget It is not with the rich data for now, but a good start. * Turn labels into links * Add rich info to dashboard labels * Use truncate-center component for recent transactions --------- Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
143 lines
4.6 KiB
C#
143 lines
4.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using BTCPayServer.Client.Models;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
namespace BTCPayServer.Services.Labels
|
|
{
|
|
|
|
[Obsolete]
|
|
public abstract class Label : LabelData
|
|
{
|
|
static void FixLegacy(JObject jObj, ReferenceLabel refLabel)
|
|
{
|
|
if (refLabel.Reference is null && jObj.ContainsKey("id"))
|
|
refLabel.Reference = jObj["id"].Value<string>();
|
|
FixLegacy(jObj, (Label)refLabel);
|
|
}
|
|
static void FixLegacy(JObject jObj, PayoutLabel payoutLabel)
|
|
{
|
|
if (jObj.ContainsKey("id") && payoutLabel.PullPaymentPayouts.Count is 0)
|
|
{
|
|
var pullPaymentId = jObj["pullPaymentId"]?.Value<string>() ?? string.Empty;
|
|
payoutLabel.PullPaymentPayouts.Add(pullPaymentId, new List<string>() { jObj["id"].Value<string>() });
|
|
}
|
|
else if (jObj.ContainsKey("payoutId") && jObj.ContainsKey("pullPaymentId"))
|
|
{
|
|
var pullPaymentId = jObj["pullPaymentId"]?.Value<string>() ?? string.Empty;
|
|
var payoutId = jObj["payoutId"]?.Value<string>() ?? string.Empty;
|
|
payoutLabel.PullPaymentPayouts.Add(pullPaymentId, new List<string>() { payoutId });
|
|
}
|
|
FixLegacy(jObj, (Label)payoutLabel);
|
|
}
|
|
static void FixLegacy(JObject jObj, Label label)
|
|
{
|
|
if (label.Type is null)
|
|
label.Type = jObj["value"].Value<string>();
|
|
if (label.Text is null)
|
|
label.Text = label.Type;
|
|
}
|
|
static void FixLegacy(JObject jObj, RawLabel rawLabel)
|
|
{
|
|
rawLabel.Type = "raw";
|
|
FixLegacy(jObj, (Label)rawLabel);
|
|
}
|
|
|
|
static Label()
|
|
{
|
|
SerializerSettings = new JsonSerializerSettings()
|
|
{
|
|
ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()
|
|
};
|
|
Serializer = JsonSerializer.Create(SerializerSettings);
|
|
}
|
|
|
|
public static JsonSerializerSettings SerializerSettings;
|
|
public static JsonSerializer Serializer;
|
|
public static Label Parse(string str)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(str);
|
|
if (str.StartsWith("{", StringComparison.InvariantCultureIgnoreCase))
|
|
{
|
|
var jObj = JObject.Parse(str);
|
|
string type = null;
|
|
// Legacy label
|
|
if (!jObj.ContainsKey("type"))
|
|
{
|
|
type = jObj["value"].Value<string>();
|
|
}
|
|
else
|
|
{
|
|
type = jObj["type"].Value<string>();
|
|
}
|
|
|
|
switch (type)
|
|
{
|
|
case "raw":
|
|
var rawLabel = JsonConvert.DeserializeObject<RawLabel>(str);
|
|
FixLegacy(jObj, rawLabel);
|
|
return rawLabel;
|
|
case "invoice":
|
|
case "payment-request":
|
|
case "app":
|
|
case "pj-exposed":
|
|
var refLabel = JsonConvert.DeserializeObject<ReferenceLabel>(str);
|
|
FixLegacy(jObj, refLabel);
|
|
return refLabel;
|
|
case "payout":
|
|
var payoutLabel = JsonConvert.DeserializeObject<PayoutLabel>(str);
|
|
FixLegacy(jObj, payoutLabel);
|
|
return payoutLabel;
|
|
default:
|
|
// Legacy
|
|
return new RawLabel(jObj["value"].Value<string>());
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return new RawLabel(str);
|
|
}
|
|
}
|
|
}
|
|
|
|
[Obsolete]
|
|
public class RawLabel : Label
|
|
{
|
|
public RawLabel()
|
|
{
|
|
Type = "raw";
|
|
}
|
|
public RawLabel(string text) : this()
|
|
{
|
|
Text = text;
|
|
}
|
|
}
|
|
[Obsolete]
|
|
public class ReferenceLabel : Label
|
|
{
|
|
public ReferenceLabel()
|
|
{
|
|
|
|
}
|
|
public ReferenceLabel(string type, string reference)
|
|
{
|
|
Text = type;
|
|
Reference = reference;
|
|
Type = type;
|
|
}
|
|
[JsonProperty("ref")]
|
|
public string Reference { get; set; }
|
|
}
|
|
[Obsolete]
|
|
public class PayoutLabel : Label
|
|
{
|
|
public PayoutLabel()
|
|
{
|
|
Type = "payout";
|
|
Text = "payout";
|
|
}
|
|
|
|
public Dictionary<string, List<string>> PullPaymentPayouts { get; set; } = new();
|
|
}
|
|
}
|