mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2024-11-19 18:11:36 +01:00
19d5e64063
* Fix constant fields being editable on UI * fix redirect to checkout if invoice is settled (redirect to receipt instead) * enhance: make mirror field type able to map values * Introduce invoice amount adjustment fields for form * Integrate invoice amount adjustment fields for form on pos * Support mirror in editor * Indicate when special field names are used * polsih mirror view and name suggestions for fields * clarify * hide hidden field from ui * Minor adjustmentts * Improve mirror field editing --------- Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
35 lines
1.0 KiB
C#
35 lines
1.0 KiB
C#
using System.Collections.Generic;
|
|
using BTCPayServer.Abstractions.Form;
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
namespace BTCPayServer.Forms;
|
|
|
|
public class FieldValueMirror : IFormComponentProvider
|
|
{
|
|
public string View { get; } = null;
|
|
public void Validate(Form form, Field field)
|
|
{
|
|
if (form.GetFieldByFullName(field.Value) is null)
|
|
{
|
|
field.ValidationErrors = new List<string> {$"{field.Name} requires {field.Value} to be present"};
|
|
}
|
|
}
|
|
|
|
public void Register(Dictionary<string, IFormComponentProvider> typeToComponentProvider)
|
|
{
|
|
typeToComponentProvider.Add("mirror", this);
|
|
}
|
|
|
|
public string GetValue(Form form, Field field)
|
|
{
|
|
var rawValue = form.GetFieldByFullName(field.Value)?.Value;
|
|
if (rawValue is not null && field.AdditionalData?.TryGetValue("valuemap", out var valueMap) is true &&
|
|
valueMap is JObject map && map.TryGetValue(rawValue, out var mappedValue))
|
|
{
|
|
return mappedValue.Value<string>();
|
|
}
|
|
|
|
return rawValue;
|
|
}
|
|
}
|