Compare commits
14 Commits
v2.0.0-bet
...
v2.0.1
Author | SHA1 | Date | |
---|---|---|---|
8a5a160645 | |||
5cbadc09f9 | |||
7aa87d397e | |||
693eceb80f | |||
7d8fc14159 | |||
4687bb95cb | |||
e3ec07da76 | |||
910801d305 | |||
5ad0b128aa | |||
5cbeea4fb3 | |||
a6e18736d6 | |||
373b90e3b5 | |||
92f9b226fe | |||
0ac6553840 |
@ -63,7 +63,6 @@ namespace BTCPayServer.Tests
|
||||
//no tether on our regtest, lets create it and set it
|
||||
var tether = tester.NetworkProvider.GetNetwork<ElementsBTCPayNetwork>("USDT");
|
||||
var lbtc = tester.NetworkProvider.GetNetwork<ElementsBTCPayNetwork>("LBTC");
|
||||
var etb = tester.NetworkProvider.GetNetwork<ElementsBTCPayNetwork>("ETB");
|
||||
var issueAssetResult = await tester.LBTCExplorerNode.SendCommandAsync("issueasset", 100000, 0);
|
||||
tether.AssetId = uint256.Parse(issueAssetResult.Result["asset"].ToString());
|
||||
((ElementsBTCPayNetwork)tester.PayTester.GetService<BTCPayWalletProvider>().GetWallet("USDT").Network)
|
||||
@ -71,15 +70,10 @@ namespace BTCPayServer.Tests
|
||||
Assert.Equal(tether.AssetId, tester.NetworkProvider.GetNetwork<ElementsBTCPayNetwork>("USDT").AssetId);
|
||||
Assert.Equal(tether.AssetId, ((ElementsBTCPayNetwork)tester.PayTester.GetService<BTCPayWalletProvider>().GetWallet("USDT").Network).AssetId);
|
||||
|
||||
var issueAssetResult2 = await tester.LBTCExplorerNode.SendCommandAsync("issueasset", 100000, 0);
|
||||
etb.AssetId = uint256.Parse(issueAssetResult2.Result["asset"].ToString());
|
||||
((ElementsBTCPayNetwork)tester.PayTester.GetService<BTCPayWalletProvider>().GetWallet("ETB").Network)
|
||||
.AssetId = etb.AssetId;
|
||||
|
||||
|
||||
user.RegisterDerivationScheme("LBTC");
|
||||
user.RegisterDerivationScheme("USDT");
|
||||
user.RegisterDerivationScheme("ETB");
|
||||
|
||||
//test: register 2 assets on the same elements network and make sure paying an invoice on one does not affect the other in any way
|
||||
var invoice = await user.BitPay.CreateInvoiceAsync(new Invoice(0.1m, "BTC"));
|
||||
@ -109,11 +103,7 @@ namespace BTCPayServer.Tests
|
||||
Assert.Equal("paid", localInvoice.Status);
|
||||
Assert.Single(localInvoice.CryptoInfo.Single(info => info.CryptoCode.Equals("USDT", StringComparison.InvariantCultureIgnoreCase)).Payments);
|
||||
});
|
||||
|
||||
//test precision based on https://github.com/ElementsProject/elements/issues/805#issuecomment-601277606
|
||||
var etbBip21 = new BitcoinUrlBuilder(invoice.CryptoInfo.Single(info => info.CryptoCode == "ETB").PaymentUrls.BIP21, etb.NBitcoinNetwork);
|
||||
//precision = 2, 1ETB = 0.00000100
|
||||
Assert.Equal(100, etbBip21.Amount.Satoshi);
|
||||
|
||||
|
||||
var lbtcBip21 = new BitcoinUrlBuilder(invoice.CryptoInfo.Single(info => info.CryptoCode == "LBTC").PaymentUrls.BIP21, lbtc.NBitcoinNetwork);
|
||||
//precision = 8, 0.1 = 0.1
|
||||
|
@ -106,9 +106,14 @@
|
||||
</li>
|
||||
@if (ViewData.IsCategoryActive(typeof(WalletsNavPages), scheme.WalletId.ToString()) || ViewData.IsPageActive([WalletsNavPages.Settings], scheme.WalletId.ToString()) || ViewData.IsPageActive([StoreNavPages.OnchainSettings], categoryId))
|
||||
{
|
||||
<li class="nav-item nav-item-sub">
|
||||
<a id="WalletNav-Send" class="nav-link @ViewData.ActivePageClass([WalletsNavPages.Send, WalletsNavPages.PSBT], scheme.WalletId.ToString())" asp-area="" asp-controller="UIWallets" asp-action="WalletSend" asp-route-walletId="@scheme.WalletId" text-translate="true">Send</a>
|
||||
</li>
|
||||
@if (!scheme.ReadonlyWallet)
|
||||
{
|
||||
<li class="nav-item nav-item-sub">
|
||||
<a id="WalletNav-Send" class="nav-link @ViewData.ActivePageClass([WalletsNavPages.Send, WalletsNavPages.PSBT], scheme.WalletId.ToString())" asp-area="" asp-controller="UIWallets" asp-action="WalletSend" asp-route-walletId="@scheme.WalletId" text-translate="true">Send</a>
|
||||
</li>
|
||||
}
|
||||
|
||||
|
||||
<li class="nav-item nav-item-sub">
|
||||
<a id="WalletNav-Receive" class="nav-link @ViewData.ActivePageClass(WalletsNavPages.Receive, scheme.WalletId.ToString())" asp-area="" asp-controller="UIWallets" asp-action="WalletReceive" asp-route-walletId="@scheme.WalletId" text-translate="true">Receive</a>
|
||||
</li>
|
||||
|
@ -146,6 +146,7 @@ public partial class UIStoresController
|
||||
Crypto = network.CryptoCode,
|
||||
PaymentMethodId = handler.PaymentMethodId,
|
||||
WalletSupported = network.WalletSupported,
|
||||
ReadonlyWallet = network.ReadonlyWallet,
|
||||
Value = value,
|
||||
WalletId = new WalletId(store.Id, network.CryptoCode),
|
||||
Enabled = !excludeFilters.Match(handler.PaymentMethodId) && strategy != null,
|
||||
|
@ -9,6 +9,7 @@ namespace BTCPayServer.Models.StoreViewModels
|
||||
public string Value { get; set; }
|
||||
public WalletId WalletId { get; set; }
|
||||
public bool WalletSupported { get; set; }
|
||||
public bool ReadonlyWallet { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
public bool Collapsed { get; set; }
|
||||
}
|
||||
|
@ -89,6 +89,9 @@ public class LightningPendingPayoutListener : BaseAsyncService
|
||||
var handler = _payoutHandlers.TryGet(payoutData.GetPayoutMethodId()) as LightningLikePayoutHandler;
|
||||
if (handler is null || handler.PayoutsPaymentProcessing.Contains(payoutData.Id))
|
||||
continue;
|
||||
using var track = handler.PayoutsPaymentProcessing.StartTracking();
|
||||
if (!track.TryTrack(payoutData.Id))
|
||||
continue;
|
||||
var proof = handler.ParseProof(payoutData) as PayoutLightningBlob;
|
||||
|
||||
LightningPayment payment = null;
|
||||
|
@ -104,7 +104,6 @@ namespace BTCPayServer.Payments
|
||||
"XMR",
|
||||
"ZEC",
|
||||
"LCAD",
|
||||
"ETB",
|
||||
"LBTC",
|
||||
"USDt",
|
||||
"MONA",
|
||||
|
@ -311,11 +311,13 @@ public class LightningAutomatedPayoutProcessor : BaseAutomatedPayoutProcessor<Li
|
||||
}
|
||||
else
|
||||
{
|
||||
// Payment will be saved as pending, the LightningPendingPayoutListener will handle settling/cancelling
|
||||
payoutData.State = PayoutState.InProgress;
|
||||
payoutData.SetProofBlob(proofBlob, null);
|
||||
return new ResultVM
|
||||
{
|
||||
PayoutId = payoutData.Id,
|
||||
Result = PayResult.Unknown,
|
||||
Result = PayResult.Ok,
|
||||
Destination = payoutBlob.Destination,
|
||||
Message = "The payment has been initiated but is still in-flight."
|
||||
};
|
||||
|
@ -1,15 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BTCPayServer.Abstractions.Models;
|
||||
using BTCPayServer.Hosting;
|
||||
using BTCPayServer.Logging;
|
||||
using Microsoft.AspNetCore.HttpOverrides;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NBitcoin;
|
||||
using NBitcoin.Protocol;
|
||||
using NBXplorer;
|
||||
|
||||
namespace BTCPayServer.Plugins.Altcoins
|
||||
@ -37,15 +28,12 @@ namespace BTCPayServer.Plugins.Altcoins
|
||||
{
|
||||
// Activating LBTC automatically activate the other liquid assets
|
||||
InitUSDT(services, selectedChains, liquidNBX);
|
||||
InitETB(services, selectedChains, liquidNBX);
|
||||
InitLCAD(services, selectedChains, liquidNBX);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (selectedChains.Contains("USDT"))
|
||||
InitUSDT(services, selectedChains, liquidNBX);
|
||||
if (selectedChains.Contains("ETB"))
|
||||
InitETB(services, selectedChains, liquidNBX);
|
||||
if (selectedChains.Contains("LCAD"))
|
||||
InitLCAD(services, selectedChains, liquidNBX);
|
||||
}
|
||||
|
@ -27,7 +27,11 @@ public partial class AltcoinsPlugin
|
||||
CryptoImagePath = "imlegacy/liquid.png",
|
||||
DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(ChainName),
|
||||
CoinType = ChainName == ChainName.Mainnet ? new KeyPath("1776'") : new KeyPath("1'"),
|
||||
SupportRBF = true
|
||||
SupportRBF = true,
|
||||
SupportLightning = false,
|
||||
SupportPayJoin = false,
|
||||
VaultSupported = false,
|
||||
ReadonlyWallet = true
|
||||
}.SetDefaultElectrumMapping(ChainName);
|
||||
|
||||
var blockExplorerLink = ChainName == ChainName.Mainnet ? "https://liquid.network/tx/{0}" : "https://liquid.network/testnet/tx/{0}";
|
||||
|
@ -30,10 +30,13 @@ public partial class AltcoinsPlugin
|
||||
DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(ChainName),
|
||||
CoinType = ChainName == ChainName.Mainnet ? new KeyPath("1776'") : new KeyPath("1'"),
|
||||
SupportRBF = true,
|
||||
SupportLightning = false
|
||||
SupportLightning = false,
|
||||
SupportPayJoin = false,
|
||||
VaultSupported = false,
|
||||
ReadonlyWallet = true
|
||||
}.SetDefaultElectrumMapping(ChainName);
|
||||
services.AddBTCPayNetwork(network)
|
||||
.AddTransactionLinkProvider(PaymentTypes.CHAIN.GetPaymentMethodId(nbxplorerNetwork.CryptoCode), new DefaultTransactionLinkProvider(LiquidBlockExplorer));
|
||||
.AddTransactionLinkProvider(PaymentTypes.CHAIN.GetPaymentMethodId("USDt"), new DefaultTransactionLinkProvider(LiquidBlockExplorer));
|
||||
services.AddCurrencyData(new CurrencyData()
|
||||
{
|
||||
Code = "USDt",
|
||||
@ -45,35 +48,6 @@ public partial class AltcoinsPlugin
|
||||
selectedChains.Add("LBTC");
|
||||
}
|
||||
|
||||
private void InitETB(IServiceCollection services, SelectedChains selectedChains, NBXplorer.NBXplorerNetwork nbxplorerNetwork)
|
||||
{
|
||||
var network = new ElementsBTCPayNetwork()
|
||||
{
|
||||
CryptoCode = "ETB",
|
||||
NetworkCryptoCode = "LBTC",
|
||||
ShowSyncSummary = false,
|
||||
DefaultRateRules = new[]
|
||||
{
|
||||
|
||||
"ETB_X = ETB_BTC * BTC_X",
|
||||
"ETB_BTC = bitpay(ETB_BTC)"
|
||||
},
|
||||
Divisibility = 2,
|
||||
AssetId = new uint256("aa775044c32a7df391902b3659f46dfe004ccb2644ce2ddc7dba31e889391caf"),
|
||||
DisplayName = "Ethiopian Birr",
|
||||
NBXplorerNetwork = nbxplorerNetwork,
|
||||
CryptoImagePath = "imlegacy/etb.png",
|
||||
DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(ChainName),
|
||||
CoinType = ChainName == ChainName.Mainnet ? new KeyPath("1776'") : new KeyPath("1'"),
|
||||
SupportRBF = true,
|
||||
SupportLightning = false
|
||||
}.SetDefaultElectrumMapping(ChainName);
|
||||
|
||||
services.AddBTCPayNetwork(network)
|
||||
.AddTransactionLinkProvider(PaymentTypes.CHAIN.GetPaymentMethodId(nbxplorerNetwork.CryptoCode), new DefaultTransactionLinkProvider(LiquidBlockExplorer));
|
||||
selectedChains.Add("LBTC");
|
||||
}
|
||||
|
||||
string LiquidBlockExplorer => ChainName == ChainName.Mainnet ? "https://liquid.network/tx/{0}" : "https://liquid.network/testnet/tx/{0}";
|
||||
private void InitLCAD(IServiceCollection services, SelectedChains selectedChains, NBXplorer.NBXplorerNetwork nbxplorerNetwork)
|
||||
{
|
||||
@ -95,11 +69,14 @@ public partial class AltcoinsPlugin
|
||||
CryptoImagePath = "imlegacy/lcad.png",
|
||||
DefaultSettings = BTCPayDefaultSettings.GetDefaultSettings(ChainName),
|
||||
CoinType = ChainName == ChainName.Mainnet ? new KeyPath("1776'") : new KeyPath("1'"),
|
||||
SupportRBF = true,
|
||||
SupportLightning = false
|
||||
SupportRBF = true,
|
||||
SupportLightning = false,
|
||||
SupportPayJoin = false,
|
||||
VaultSupported = false,
|
||||
ReadonlyWallet = true
|
||||
}.SetDefaultElectrumMapping(ChainName);
|
||||
services.AddBTCPayNetwork(network)
|
||||
.AddTransactionLinkProvider(PaymentTypes.CHAIN.GetPaymentMethodId(nbxplorerNetwork.CryptoCode), new DefaultTransactionLinkProvider(LiquidBlockExplorer));
|
||||
.AddTransactionLinkProvider(PaymentTypes.CHAIN.GetPaymentMethodId("LCAD"), new DefaultTransactionLinkProvider(LiquidBlockExplorer));
|
||||
selectedChains.Add("LBTC");
|
||||
}
|
||||
|
||||
|
@ -228,8 +228,7 @@ namespace BTCPayServer.Plugins.Crowdfund
|
||||
ProgressPercentage = (currentPayments.TotalCurrency / settings.TargetAmount) * 100,
|
||||
PendingProgressPercentage = (pendingPayments.TotalCurrency / settings.TargetAmount) * 100,
|
||||
LastUpdated = DateTime.UtcNow,
|
||||
PaymentStats = GetPaymentStats(currentPayments),
|
||||
PendingPaymentStats = GetPaymentStats(pendingPayments),
|
||||
PaymentStats = GetPaymentStats(currentPayments, pendingPayments),
|
||||
LastResetDate = lastResetDate,
|
||||
NextResetDate = nextResetDate,
|
||||
CurrentPendingAmount = pendingPayments.TotalCurrency,
|
||||
@ -244,17 +243,21 @@ namespace BTCPayServer.Plugins.Crowdfund
|
||||
return vm;
|
||||
}
|
||||
|
||||
private Dictionary<string, PaymentStat> GetPaymentStats(InvoiceStatistics stats)
|
||||
private Dictionary<string, PaymentStat> GetPaymentStats(InvoiceStatistics stats, InvoiceStatistics pendingSats)
|
||||
{
|
||||
var r = new Dictionary<string, PaymentStat>();
|
||||
var total = stats.Select(s => s.Value.CurrencyValue).Sum();
|
||||
foreach (var kv in stats)
|
||||
var allStats = stats.Concat(pendingSats);
|
||||
var total = allStats
|
||||
.Select(s => s.Value.CurrencyValue).Sum();
|
||||
foreach (var kv in allStats
|
||||
.GroupBy(k => k.Key, k => k.Value)
|
||||
.Select(g => (g.Key, CurrencyValue: g.Sum(s => s.CurrencyValue))))
|
||||
{
|
||||
var pmi = PaymentMethodId.Parse(kv.Key);
|
||||
r.TryAdd(kv.Key, new PaymentStat()
|
||||
{
|
||||
Label = _prettyNameProvider.PrettyName(pmi),
|
||||
Percent = (kv.Value.CurrencyValue / total) * 100.0m,
|
||||
Percent = (kv.CurrencyValue / total) * 100.0m,
|
||||
// Note that the LNURL will have the same LN
|
||||
IsLightning = pmi == PaymentTypes.LN.GetPaymentMethodId(kv.Key)
|
||||
});
|
||||
|
@ -56,7 +56,6 @@ namespace BTCPayServer.Plugins.Crowdfund.Models
|
||||
public decimal? PendingProgressPercentage { get; set; }
|
||||
public DateTime LastUpdated { get; set; }
|
||||
public Dictionary<string, PaymentStat> PaymentStats { get; set; }
|
||||
public Dictionary<string, PaymentStat> PendingPaymentStats { get; set; }
|
||||
public DateTime? LastResetDate { get; set; }
|
||||
public DateTime? NextResetDate { get; set; }
|
||||
}
|
||||
|
@ -65,5 +65,17 @@ namespace BTCPayServer.Plugins
|
||||
var result = await httpClient.GetStringAsync($"api/v1/plugins{queryString}");
|
||||
return JsonConvert.DeserializeObject<PublishedVersion[]>(result, serializerSettings) ?? throw new InvalidOperationException();
|
||||
}
|
||||
public async Task<PublishedVersion> GetPlugin(string pluginSlug, string version)
|
||||
{
|
||||
try
|
||||
{
|
||||
var result = await httpClient.GetStringAsync($"api/v1/plugins/{pluginSlug}/versions/{version}");
|
||||
return JsonConvert.DeserializeObject<PublishedVersion>(result, serializerSettings);
|
||||
}
|
||||
catch (HttpRequestException ex) when (ex.StatusCode == System.Net.HttpStatusCode.NotFound)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -72,9 +72,11 @@ namespace BTCPayServer.Plugins
|
||||
var dest = _dataDirectories.Value.PluginDir;
|
||||
var filedest = Path.Join(dest, pluginIdentifier + ".btcpay");
|
||||
var filemanifestdest = Path.Join(dest, pluginIdentifier + ".json");
|
||||
var pluginSelector = $"[{Uri.EscapeDataString(pluginIdentifier)}]";
|
||||
version = Uri.EscapeDataString(version);
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(filedest));
|
||||
var url = $"api/v1/plugins/[{Uri.EscapeDataString(pluginIdentifier)}]/versions/{Uri.EscapeDataString(version)}/download";
|
||||
var manifest = (await _pluginBuilderClient.GetPublishedVersions(null, true)).Select(v => v.ManifestInfo.ToObject<AvailablePlugin>()).FirstOrDefault(p => p.Identifier == pluginIdentifier);
|
||||
var url = $"api/v1/plugins/{pluginSelector}/versions/{version}/download";
|
||||
var manifest = (await _pluginBuilderClient.GetPlugin(pluginSelector, version))?.ManifestInfo?.ToObject<AvailablePlugin>();
|
||||
await File.WriteAllTextAsync(filemanifestdest, JsonConvert.SerializeObject(manifest, Formatting.Indented));
|
||||
using var resp2 = await _pluginBuilderClient.HttpClient.GetAsync(url);
|
||||
await using var fs = new FileStream(filedest, FileMode.Create, FileAccess.ReadWrite);
|
||||
|
@ -91,7 +91,7 @@ namespace BTCPayServer
|
||||
}
|
||||
catch (Exception e) when (PluginManager.IsExceptionByPlugin(e, out var pluginName))
|
||||
{
|
||||
logs.Configuration.LogError(e, $"Disabling plugin {pluginName} as it crashed on startup");
|
||||
logs.Configuration.LogError(e, $"Plugin crash during startup detected, disabling {pluginName}...");
|
||||
var pluginDir = new DataDirectories().Configure(conf).PluginDir;
|
||||
PluginManager.DisablePlugin(pluginDir, pluginName);
|
||||
}
|
||||
|
@ -65,7 +65,11 @@
|
||||
</template>
|
||||
</div>
|
||||
<div class="keypad">
|
||||
<button v-for="k in keys" :key="k" :disabled="k === '+' && mode !== 'amounts'" v-on:click.prevent="keyPressed(k)" v-on:dblclick.prevent="doubleClick(k)" type="button" class="btn btn-secondary btn-lg" :data-key="k">{{ k }}</button>
|
||||
<button v-for="k in keys" :key="k" :disabled="k === '+' && mode !== 'amounts'" v-on:click.prevent="keyPressed(k)" v-on:dblclick.prevent="doubleClick(k)" type="button" class="btn btn-secondary btn-lg" :data-key="k">
|
||||
<template v-if="k === 'C'"><vc:icon symbol="keypad-clear"/></template>
|
||||
<template v-else-if="k === '+'"><vc:icon symbol="keypad-plus"/></template>
|
||||
<template v-else>{{ k }}</template>
|
||||
</button>
|
||||
</div>
|
||||
<button class="btn btn-lg btn-primary mx-3" type="submit" :disabled="payButtonLoading || totalNumeric <= 0" id="pay-button">
|
||||
<div v-if="payButtonLoading" class="spinner-border spinner-border-sm" id="pay-button-spinner" role="status">
|
||||
|
@ -97,11 +97,11 @@
|
||||
}
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="text-muted text-nowrap" text-translate="true">Start Date</span>
|
||||
<span class="text-nowrap">@Model.StartDate.ToString("g")</span>
|
||||
<span class="text-nowrap">@Model.StartDate.ToBrowserDate()</span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="text-muted text-nowrap" text-translate="true">Last Updated</span>
|
||||
<span class="text-nowrap">@Model.LastRefreshed.ToString("g")</span>
|
||||
<span class="text-nowrap">@Model.LastRefreshed.ToBrowserDate()</span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center only-for-js gap-3 my-3">
|
||||
<button type="button" class="btn btn-link fw-semibold d-print-none p-0" id="copyLink" text-translate="true">
|
||||
|
@ -14,10 +14,7 @@
|
||||
<li>
|
||||
<a asp-action="LogsView" asp-route-file="@file.Name" asp-route-offset="@Model.LogFileOffset">@file.Name</a>
|
||||
<a asp-action="LogsView" asp-route-file="@file.Name" asp-route-offset="@Model.LogFileOffset" asp-route-download="true" class="mx-2">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-download" viewBox="0 0 16 16">
|
||||
<path d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5"/>
|
||||
<path d="M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708z"/>
|
||||
</svg>
|
||||
<vc:icon symbol="actions-download" />
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
|
@ -224,7 +224,7 @@
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<label asp-for="DomainToAppMapping[index].Domain" class="form-label"></label>
|
||||
<button type="submit" title="@StringLocalizer["Remove domain mapping"]" name="command" value="@($"remove-domain:{index}")" class="d-inline-block ms-2 btn text-danger btn-link p-0 mb-2">
|
||||
<span class="fa fa-times"></span>
|
||||
<vc:icon symbol="cross"/>
|
||||
<span text-translate="true">Remove Mapping</span>
|
||||
</button>
|
||||
</div>
|
||||
|
@ -111,37 +111,12 @@ app = new Vue({
|
||||
return this.srvModel.targetCurrency.toUpperCase();
|
||||
},
|
||||
paymentStats: function(){
|
||||
var result= [];
|
||||
var combinedStats = {};
|
||||
var keys = Object.keys(this.srvModel.info.paymentStats);
|
||||
|
||||
var result = [];
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
if(combinedStats[keys[i]]){
|
||||
combinedStats[keys[i]] +=this.srvModel.info.paymentStats[keys[i]];
|
||||
}else{
|
||||
combinedStats[keys[i]] =this.srvModel.info.paymentStats[keys[i]];
|
||||
}
|
||||
}
|
||||
|
||||
keys = Object.keys(this.srvModel.info.pendingPaymentStats);
|
||||
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
if(combinedStats[keys[i]]){
|
||||
combinedStats[keys[i]] +=this.srvModel.info.pendingPaymentStats[keys[i]];
|
||||
}else{
|
||||
combinedStats[keys[i]] =this.srvModel.info.pendingPaymentStats[keys[i]];
|
||||
}
|
||||
}
|
||||
|
||||
keys = Object.keys(combinedStats);
|
||||
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
if(!combinedStats[keys[i]]){
|
||||
continue;
|
||||
}
|
||||
var value = combinedStats[keys[i]].percent.toFixed(2) + '%';
|
||||
var newItem = {key:keys[i], value: value, label: combinedStats[keys[i]].label};
|
||||
newItem.lightning = combinedStats[keys[i]].isLightning;
|
||||
var value = this.srvModel.info.paymentStats[keys[i]].percent.toFixed(2) + '%';
|
||||
var newItem = { key: keys[i], value: value, label: this.srvModel.info.paymentStats[keys[i]].label};
|
||||
newItem.lightning = this.srvModel.info.paymentStats[keys[i]].isLightning;
|
||||
result.push(newItem);
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@
|
||||
<symbol id="actions-archive" viewBox="0 0 24 24" fill="none"><path d="M4.61536 7.38461C4.84258 7.38461 14.5562 7.38461 19.3846 7.38461" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/><path d="M20 18.5V7.787C20 7.32766 19.8419 6.88232 19.5522 6.52582L17.9502 4.55411C17.6654 4.20355 17.2377 4 16.786 4H7.21396C6.76226 4 6.33462 4.20355 6.04978 4.55411L4.44777 6.52582C4.15811 6.88232 4 7.32766 4 7.787V18.5C4 19.3284 4.67157 20 5.5 20H18.5C19.3284 20 20 19.3284 20 18.5Z" stroke="currentColor" stroke-width="1.5"/><path d="M12 11V16M12 16L9.53845 13.5385M12 16L14.7692 13.5385" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></symbol>
|
||||
<symbol id="actions-comment" viewBox="0 0 24 24" fill="none"><path d="M20 15.625V5.875C20 5.04657 19.3284 4.375 18.5 4.375H12H5.5C4.67157 4.375 4 5.04657 4 5.875V15.625C4 16.4534 4.67157 17.125 5.5 17.125H9.5L12 19.625L14.5 17.125H18.5C19.3284 17.125 20 16.4534 20 15.625Z" stroke="currentColor" stroke-width="1.5"/><path d="M8.5 8.875H15.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/><path d="M8.5 12.625H15.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></symbol>
|
||||
<symbol id="actions-copy" viewBox="0 0 16 16" fill="none"><path d="M13.3333 6H7.33333C6.59695 6 6 6.59695 6 7.33333V13.3333C6 14.0697 6.59695 14.6667 7.33333 14.6667H13.3333C14.0697 14.6667 14.6667 14.0697 14.6667 13.3333V7.33333C14.6667 6.59695 14.0697 6 13.3333 6Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M3.33203 10.0007H2.66536C2.31174 10.0007 1.9726 9.86018 1.72256 9.61013C1.47251 9.36008 1.33203 9.02094 1.33203 8.66732V2.66732C1.33203 2.3137 1.47251 1.97456 1.72256 1.72451C1.9726 1.47446 2.31174 1.33398 2.66536 1.33398H8.66536C9.01899 1.33398 9.35813 1.47446 9.60817 1.72451C9.85822 1.97456 9.9987 2.3137 9.9987 2.66732V3.33398" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></symbol>
|
||||
<symbol id="actions-download" viewBox="0 0 24 24" fill="none"><path d="M6 13.1132L12.3868 19.5L18.7735 13.1132" stroke="currentColor" stroke-width="2" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/><path d="M12.39 5.5V19.3632" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></symbol>
|
||||
<symbol id="actions-drag" viewBox="0 0 24 24" fill="none"><rect x="8.5" y="4" width="2.5" height="2.5" fill="currentColor"/><rect x="13" y="4" width="2.5" height="2.5" fill="currentColor"/><rect x="8.5" y="8.5" width="2.5" height="2.5" fill="currentColor"/><rect x="13" y="8.5" width="2.5" height="2.5" fill="currentColor"/><rect x="8.5" y="13" width="2.5" height="2.5" fill="currentColor"/><rect x="13" y="13" width="2.5" height="2.5" fill="currentColor"/><rect x="8.5" y="17.5" width="2.5" height="2.5" fill="currentColor"/><rect x="13" y="17.5" width="2.5" height="2.5" fill="currentColor"/></symbol>
|
||||
<symbol id="actions-email" viewBox="0 0 24 24" fill="none"><rect x="4" y="5.5" width="16" height="13" rx="2" stroke="currentColor" stroke-width="1.5"/><path d="M4 9L12 13L20 9" stroke="currentColor" stroke-width="1.5"/></symbol>
|
||||
<symbol id="actions-hide" viewBox="0 0 24 24" fill="none"><path d="M4.14258 6.31C4.25933 6.14908 4.43519 6.0411 4.63152 6.00978C4.82784 5.97847 5.02857 6.02638 5.18958 6.143L19.6896 16.643C19.7724 16.6995 19.8431 16.7721 19.8973 16.8564C19.9516 16.9407 19.9885 17.0351 20.0057 17.1339C20.0229 17.2326 20.0201 17.3339 19.9975 17.4316C19.9748 17.5293 19.9329 17.6214 19.874 17.7026C19.8152 17.7838 19.7406 17.8524 19.6548 17.9043C19.569 17.9562 19.4737 17.9903 19.3744 18.0047C19.2752 18.0191 19.1741 18.0134 19.077 17.9881C18.98 17.9627 18.8891 17.9181 18.8096 17.857L16.5616 16.229C15.3456 17.19 13.7916 18 11.9996 18C10.0186 18 8.32958 17.008 7.06658 15.922C5.79658 14.832 4.87958 13.577 4.42958 12.9C4.2521 12.634 4.15738 12.3213 4.15738 12.0015C4.15738 11.6817 4.2521 11.369 4.42958 11.103C4.78258 10.57 5.42458 9.683 6.29758 8.798L4.30958 7.357C4.14866 7.24025 4.04068 7.06439 4.00937 6.86807C3.97805 6.67174 4.02597 6.47101 4.14258 6.31ZM5.67858 11.932C5.66451 11.9519 5.65684 11.9756 5.65658 12C5.65658 12.021 5.66258 12.045 5.67858 12.068C6.09058 12.689 6.92058 13.818 8.04458 14.785C9.17458 15.758 10.5266 16.5 11.9996 16.5C13.1946 16.5 14.3096 16.012 15.2896 15.309L13.0626 13.695C12.7249 13.9071 12.3316 14.0134 11.9331 14.0003C11.5346 13.9872 11.1491 13.8553 10.8261 13.6215C10.5031 13.3878 10.2574 13.0628 10.1205 12.6883C9.98351 12.3138 9.96162 11.907 10.0576 11.52L7.52858 9.688C6.83678 10.3707 6.21686 11.1227 5.67858 11.932ZM11.9996 7.5C11.4836 7.5 10.9826 7.59 10.5006 7.751C10.4065 7.78486 10.3065 7.79955 10.2066 7.79421C10.1067 7.78886 10.0089 7.76358 9.91894 7.71987C9.82896 7.67615 9.74864 7.61488 9.6827 7.53965C9.61677 7.46443 9.56654 7.37677 9.53499 7.28185C9.50344 7.18692 9.49119 7.08664 9.49898 6.98691C9.50676 6.88718 9.53442 6.79002 9.58032 6.70114C9.62622 6.61226 9.68943 6.53346 9.76625 6.46938C9.84306 6.40529 9.93191 6.35723 10.0276 6.328C10.6629 6.11284 11.3288 6.00207 11.9996 6C13.9806 6 15.6696 6.992 16.9326 8.078C18.2026 9.169 19.1196 10.423 19.5696 11.101C19.7472 11.3672 19.8419 11.68 19.8419 12C19.8419 12.32 19.7472 12.6328 19.5696 12.899C19.4596 13.065 19.3216 13.264 19.1596 13.486C19.1013 13.5654 19.028 13.6327 18.9438 13.6838C18.8596 13.7349 18.7661 13.7689 18.6688 13.7839C18.5714 13.7989 18.4721 13.7946 18.3764 13.7712C18.2807 13.7478 18.1905 13.7057 18.1111 13.6475C18.0316 13.5893 17.9644 13.5159 17.9133 13.4317C17.8622 13.3475 17.8282 13.2541 17.8132 13.1567C17.7982 13.0593 17.8025 12.96 17.8259 12.8643C17.8493 12.7686 17.8913 12.6784 17.9496 12.599C18.0976 12.398 18.2216 12.217 18.3206 12.069C18.3347 12.0489 18.3423 12.025 18.3423 12.0005C18.3423 11.976 18.3347 11.9521 18.3206 11.932C17.9086 11.311 17.0786 10.182 15.9546 9.215C14.8246 8.242 13.4726 7.5 11.9996 7.5Z" fill="currentColor"/></symbol>
|
||||
@ -45,6 +46,8 @@
|
||||
<symbol id="forms-text" viewBox="0 0 24 24" fill="none"><rect x="1" y="1" width="22" height="22" rx="3" stroke="currentColor" stroke-width="2"/><path d="M7 7.75H17" stroke="currentColor" stroke-width="2" stroke-linecap="round"/><path d="M12 8V16" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></symbol>
|
||||
<symbol id="info" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 22.39c5.739 0 10.39-4.651 10.39-10.39C22.39 6.261 17.74 1.61 12 1.61 6.261 1.61 1.61 6.26 1.61 12c0 5.739 4.651 10.39 10.39 10.39zm0-2.597a7.793 7.793 0 1 0 0-15.586 7.793 7.793 0 0 0 0 15.586z" fill="currentColor"/><path d="M12 6.805a1.299 1.299 0 1 0 0 2.597 1.299 1.299 0 0 0 0-2.597zM10.701 12s0-1.299 1.299-1.299S13.299 12 13.299 12v3.897s0 1.298-1.299 1.298-1.299-1.298-1.299-1.298z" fill="currentColor"/></symbol>
|
||||
<symbol id="key" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.5 9.5C10.5003 8.65387 10.769 7.82965 11.2673 7.14583C11.7657 6.46202 12.468 5.95384 13.2733 5.69436C14.0787 5.43488 14.9456 5.43748 15.7494 5.70176C16.5532 5.96605 17.2525 6.47842 17.7467 7.1652C18.2409 7.85198 18.5047 8.6778 18.4999 9.52392C18.4952 10.37 18.2223 11.1929 17.7205 11.8741C17.2186 12.5553 16.5137 13.0599 15.707 13.3152C14.9003 13.5705 14.0334 13.5634 13.231 13.295C13.0989 13.2507 12.9571 13.2441 12.8214 13.2759C12.6858 13.3077 12.5617 13.3766 12.463 13.475L11.44 14.5H10.25C10.0511 14.5 9.86032 14.579 9.71967 14.7197C9.57902 14.8603 9.5 15.0511 9.5 15.25V16.44L9.44 16.5H8.25C8.05109 16.5 7.86032 16.579 7.71967 16.7197C7.57902 16.8603 7.5 17.0511 7.5 17.25V18.44L7.44 18.5H5.75C5.6837 18.5 5.62011 18.4737 5.57322 18.4268C5.52634 18.3799 5.5 18.3163 5.5 18.25V16.56L10.524 11.537C10.6226 11.4384 10.6917 11.3144 10.7237 11.1787C10.7556 11.0431 10.7492 10.9012 10.705 10.769C10.5686 10.3598 10.4994 9.93129 10.5 9.5ZM14.5 4C13.6681 3.99986 12.847 4.18843 12.0985 4.55153C11.35 4.91463 10.6937 5.44279 10.1788 6.09625C9.66398 6.74971 9.30409 7.51145 9.12623 8.32412C8.94837 9.13679 8.95718 9.97923 9.152 10.788L4.22 15.72C4.07931 15.8605 4.00018 16.0512 4 16.25V18.25C4 19.216 4.784 20 5.75 20H7.75C7.94885 19.9998 8.13948 19.9207 8.28 19.78L8.78 19.28C8.92069 19.1395 8.99983 18.9488 9 18.75V18H9.75C9.94885 17.9998 10.1395 17.9207 10.28 17.78L10.78 17.28C10.9207 17.1395 10.9998 16.9488 11 16.75V16H11.75C11.9488 15.9998 12.1395 15.9207 12.28 15.78L13.212 14.848C13.9672 15.0293 14.7523 15.0487 15.5155 14.9047C16.2787 14.7608 17.0028 14.4568 17.64 14.0128C18.2773 13.5689 18.8133 12.995 19.2128 12.3289C19.6123 11.6628 19.8662 10.9197 19.9577 10.1485C20.0493 9.37721 19.9765 8.59531 19.7441 7.85422C19.5117 7.11314 19.125 6.42968 18.6094 5.84883C18.0938 5.26798 17.461 4.80292 16.7527 4.48426C16.0444 4.16559 15.2767 4.00055 14.5 4ZM15 10C15.2652 10 15.5196 9.89464 15.7071 9.70711C15.8946 9.51957 16 9.26522 16 9C16 8.73478 15.8946 8.48043 15.7071 8.29289C15.5196 8.10536 15.2652 8 15 8C14.7348 8 14.4804 8.10536 14.2929 8.29289C14.1054 8.48043 14 8.73478 14 9C14 9.26522 14.1054 9.51957 14.2929 9.70711C14.4804 9.89464 14.7348 10 15 10Z" fill="currentColor"/></symbol>
|
||||
<symbol id="keypad-clear" viewBox="0 0 24 24" fill="none"><path d="M16.6858 5.54919L11.9452 10.3416L7.20314 5.49379L7.20314 5.49379L7.20167 5.4923C6.71724 5.00257 5.97108 5.00257 5.48664 5.4923L5.48664 5.4923C5.00445 5.97977 5.00445 6.72702 5.48664 7.21448L10.2344 12.0142L5.48664 16.814C5.00445 17.3014 5.00445 18.0487 5.48664 18.5361L5.48664 18.5361C5.75044 18.8028 6.0883 18.875 6.37226 18.875C6.65621 18.875 6.99412 18.8028 7.25793 18.5361L12 13.7422L16.742 18.5361C17.0058 18.8028 17.3437 18.875 17.6277 18.875C17.9116 18.875 18.2495 18.8028 18.5134 18.5361C18.9955 18.0487 18.9955 17.3014 18.5134 16.814L18.5134 16.8139L18.5089 16.8095L13.6574 12.0667L18.4008 7.27138C18.883 6.78391 18.883 6.03666 18.4008 5.54919C17.9163 5.05946 17.1702 5.05946 16.6858 5.54919Z" fill="currentColor" stroke="currentColor" stroke-width="0.75"/></symbol>
|
||||
<symbol id="keypad-plus" viewBox="0 0 24 24" fill="none"><path d="M5.253 13.255L10.7739 13.225L10.7438 18.7458C10.7418 19.1291 10.9344 19.4185 11.1245 19.6087C11.3147 19.7988 11.6041 19.9914 11.9874 19.9894C12.6676 19.9857 13.1958 19.4575 13.1995 18.7772L13.1995 18.7772L13.1994 18.7689L13.1365 13.2121L18.6599 13.1821C19.3402 13.1784 19.8684 12.6502 19.8721 11.9699C19.8758 11.2854 19.3468 10.7564 18.6622 10.7601L13.1442 10.7901L13.2054 5.23803L13.2054 5.23803L13.2054 5.23523C13.2092 4.5507 12.6802 4.02169 11.9956 4.02541L11.9956 4.02541C11.3153 4.02912 10.7872 4.55724 10.7835 5.23753L10.7534 10.7693L5.22163 10.7994C4.54134 10.8031 4.01322 11.3312 4.00952 12.0115C4.00743 12.3947 4.19999 12.6841 4.39017 12.8743C4.58032 13.0645 4.86979 13.2571 5.253 13.255Z" fill="currentColor" stroke="currentColor"/></symbol>
|
||||
<symbol id="lightning-node" viewBox="0 0 24 24" fill="none"><path d="M14 4C14 5.10457 13.1046 6 12 6C10.8954 6 10 5.10457 10 4C10 2.89543 10.8954 2 12 2C13.1046 2 14 2.89543 14 4Z" fill="currentColor"/><path d="M20 14C21.1046 14 22 13.1046 22 12C22 10.8954 21.1046 10 20 10C18.8954 10 18 10.8954 18 12C18 13.1046 18.8954 14 20 14Z" fill="currentColor"/><path d="M14 20C14 21.1046 13.1046 22 12 22C10.8954 22 10 21.1046 10 20C10 18.8954 10.8954 18 12 18C13.1046 18 14 18.8954 14 20Z" fill="currentColor"/><path d="M4 14C5.10457 14 6 13.1046 6 12C6 10.8954 5.10457 10 4 10C2.89543 10 2 10.8954 2 12C2 13.1046 2.89543 14 4 14Z" fill="currentColor"/><path d="M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z" fill="currentColor"/></symbol>
|
||||
<symbol id="lightning" viewBox="0 0 24 24" fill="none"><path d="M17.57 10.7c-.1-.23-.27-.34-.5-.34h-4.3l.5-3.76a.48.48 0 0 0-.33-.55.52.52 0 0 0-.66.17l-5.45 6.54a.59.59 0 0 0-.05.6c.1.17.27.28.49.28h4.3l-.49 3.76c-.05.22.11.5.33.55.06.05.17.05.22.05a.5.5 0 0 0 .44-.22l5.45-6.54c.1-.17.16-.39.05-.55Z" fill="currentColor"/></symbol>
|
||||
<symbol id="lock" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.13333 8.26667V10.4H7.86667C7.3716 10.4 6.8968 10.5967 6.54673 10.9467C6.19667 11.2968 6 11.7716 6 12.2667V18.1333C6 19.1637 6.83627 20 7.86667 20H16.9333C17.4284 20 17.9032 19.8033 18.2533 19.4533C18.6033 19.1032 18.8 18.6284 18.8 18.1333V12.2667C18.8 11.7716 18.6033 11.2968 18.2533 10.9467C17.9032 10.5967 17.4284 10.4 16.9333 10.4H16.6667V8.26667C16.6667 7.13508 16.2171 6.04983 15.417 5.24968C14.6168 4.44952 13.5316 4 12.4 4C11.2684 4 10.1832 4.44952 9.38301 5.24968C8.58286 6.04983 8.13333 7.13508 8.13333 8.26667ZM15.0667 10.4V8.26667C15.0667 7.55942 14.7857 6.88115 14.2856 6.38105C13.7855 5.88095 13.1072 5.6 12.4 5.6C11.6928 5.6 11.0145 5.88095 10.5144 6.38105C10.0143 6.88115 9.73333 7.55942 9.73333 8.26667V10.4H15.0667ZM16.6667 12H16.9333C17.0041 12 17.0719 12.0281 17.1219 12.0781C17.1719 12.1281 17.2 12.1959 17.2 12.2667V18.1333C17.2 18.2041 17.1719 18.2719 17.1219 18.3219C17.0719 18.3719 17.0041 18.4 16.9333 18.4H7.86667C7.79594 18.4 7.72811 18.3719 7.6781 18.3219C7.6281 18.2719 7.6 18.2041 7.6 18.1333V12.2667C7.6 12.1959 7.6281 12.1281 7.6781 12.0781C7.72811 12.0281 7.79594 12 7.86667 12H16.6667Z" fill="currentColor"/></symbol>
|
||||
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 101 KiB |
@ -271,10 +271,12 @@ const posCommon = {
|
||||
item.classList.remove('posItem--first')
|
||||
item.classList.remove('posItem--last')
|
||||
})
|
||||
const $displayed = this.$refs.posItems.querySelectorAll('.posItem.posItem--displayed')
|
||||
if ($displayed.length > 0) {
|
||||
$displayed[0].classList.add('posItem--first')
|
||||
$displayed[$displayed.length - 1].classList.add('posItem--last')
|
||||
if (this.$refs.posItems) {
|
||||
const $displayed = this.$refs.posItems.querySelectorAll('.posItem.posItem--displayed')
|
||||
if ($displayed.length > 0) {
|
||||
$displayed[0].classList.add('posItem--first')
|
||||
$displayed[$displayed.length - 1].classList.add('posItem--last')
|
||||
}
|
||||
}
|
||||
},
|
||||
hideRecentTransactions() {
|
||||
|
@ -59,6 +59,8 @@ button[data-bs-toggle] .icon {
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
}
|
||||
.keypad .btn {
|
||||
--icon-size: 1.75rem;
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
@ -66,16 +68,13 @@ button[data-bs-toggle] .icon {
|
||||
position: relative;
|
||||
border-radius: 0;
|
||||
border-color: transparent !important;
|
||||
font-weight: var(--btcpay-font-weight-semibold);
|
||||
font-size: 24px;
|
||||
font-weight: var(--btcpay-font-weight-bold);
|
||||
font-size: var(--icon-size);
|
||||
min-height: 3.5rem;
|
||||
height: 8vh;
|
||||
max-height: 6rem;
|
||||
color: var(--btcpay-body-text);
|
||||
}
|
||||
.keypad .btn[data-key="+"] {
|
||||
font-size: 2.25em;
|
||||
}
|
||||
.btcpay-pills label,
|
||||
.btn-secondary.rounded-pill {
|
||||
padding-left: 1rem;
|
||||
|
@ -84,7 +84,8 @@ document.addEventListener("DOMContentLoaded",function () {
|
||||
keyPressed (key) {
|
||||
if (this.keypadTarget === 'amounts') {
|
||||
const lastIndex = this.amounts.length - 1;
|
||||
const lastAmount = this.amounts[lastIndex];
|
||||
let lastAmount = this.amounts[lastIndex];
|
||||
if (isNaN(lastAmount)) lastAmount = null;
|
||||
if (key === 'C') {
|
||||
if (!lastAmount && lastIndex === 0) {
|
||||
// clear completely
|
||||
|
@ -1,5 +1,5 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<Version>2.0.0</Version>
|
||||
<Version>2.0.1</Version>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
110
Changelog.md
110
Changelog.md
@ -1,5 +1,114 @@
|
||||
# Changelog
|
||||
|
||||
## 2.0.1
|
||||
|
||||
### Bug fixes
|
||||
|
||||
* Fix: Wrong manifest downloaded when installing plugin on old btcpay (Ported on 1.13.x) (#6354, #6344)
|
||||
* Resolve pull payment timezone (#6348) @TChukwuleta
|
||||
* Fix: Payouts with unknown state should be considered pending @jackstar12
|
||||
* Fix: Crowdfund page was crashing from 2.0.0 (#6347, #6342, #6346)
|
||||
|
||||
## 2.0.0
|
||||
|
||||
BTCPay Server 2.0 contains a lot of new features, but also breaking changes.
|
||||
Please refer to our blog post before upgrading — here are the most noteworthy things:
|
||||
|
||||
* Large instances may experience a few minutes of database migration
|
||||
* Custom integrations and plugins need to get updated as well to ensure compatibility with our 2.0 API
|
||||
* Developers leveraging the Greenfield API should check our breaking changes to ensure 2.0 compatibility
|
||||
|
||||
### New feature
|
||||
|
||||
* Interface localization (#5662 #6118 #6119 #6120 #6203 #6271 #6292 #6302 #6318) @NicolasDorier @dennisreimann
|
||||
* New sidebar navigation (#5744 #6267) @dstrukt @dennisreimann
|
||||
* Improved onboarding flow (#6188 #6231 #6233) @dstrukt @dennisreimann @pavlenex
|
||||
* Improved branding options (#5947 #5992) @dennisreimann @dstrukt
|
||||
* Support pluginable rate providers (#5777) @Kukks
|
||||
* User: Add name and profile picture (#6008) @dennisreimann @NicolasDorier
|
||||
* Greenfield: Manage notifications (#6058) @dennisreimann
|
||||
* Greenfield: Add file endpoints and upload (#6075) @dennisreimann
|
||||
|
||||
### Bug fixes
|
||||
|
||||
* Greenfield: Fix payment method update regression (#5932) @dennisreimann
|
||||
* Allow to use a different Postgres schema (#5901) @NicolasDorier
|
||||
* Checkout: Minor fixes and improvements (#5962 #6181 #6297) @dennisreimann @NicolasDorier
|
||||
* Fix connecting to websockets without reverse proxy (#5981) @NicolasDorier
|
||||
* Allow user to input a passphrase for Trezor v1 (#5980) @NicolasDorier
|
||||
* Fix taproot PSBT parsing and show better error message (#5993) @NicolasDorier
|
||||
* Invoice refund fixes (#6086) @NicolasDorier
|
||||
* Lightning: Incorrect rounding of amounts (#6201 #6202) @NicolasDorier
|
||||
* Lightning: Fix lightning payment status check (#6219) @jackstar12
|
||||
* POS: Fix accounting for manually entered keypad amounts (#6178) @dennisreimann
|
||||
* XMR: Fix status message (#6111) @napoly
|
||||
* Fix Monero and ZCash not tracking addresses @NicolasDorier
|
||||
* Move wallet payment settings back to store settings (#6251) @dennisreimann
|
||||
* Dashboard: Fix app stats sorting (#6265) @dennisreimann
|
||||
|
||||
### Improvements
|
||||
|
||||
* The Big Cleanup: Refactor BTCPay internals (#5809 #5900 #5944 #5974 #5982 #6152 #6153 #6197 #6198 #6215 #6243 #6304 #6314) @NicolasDorier
|
||||
* Database and Migration cleanups (#5905 #5904 #5939 #5937 #5971 #5989 #6170 #6173 #6207 #6232 #6240 #6244 #6260) @NicolasDorier
|
||||
* Show Lightning node availability in navigation (#5951) @dennisreimann @NicolasDorier
|
||||
* Deployment: Guard against running current master (#5959) @Kukks
|
||||
* Pull Payments: Show better error message for invalid destination (#5969) @NicolasDorier
|
||||
* Payout: Add topups to payouts (#6187) @NicolasDorier
|
||||
* Payout: Automated processors get disabled after repeated failures (#6320) @NicolasDorier
|
||||
* Receipt: Cut lightning payment so receipt takes less space @rockstardev
|
||||
* Recommended exchange to be resolved during invoice creation (#5976) @NicolasDorier
|
||||
* Design system and icon updates for 2.0 (#5938) @dstrukt @dennisreimann
|
||||
* POS: UI improvements (#6009 #6055 #6088 #6172) @dennisreimann @TChukwuleta
|
||||
* POS: Validate IDs when parsing items template (#6228) @dennisreimann
|
||||
* POS: Option for user sign in via the QR code (#6231) @dennisreimann
|
||||
* Shopify: Refactor logic (#6029) @Kukks
|
||||
* BTCPayServerClient refactoring (#6024) @dennisreimann
|
||||
* Greenfield: API clarifications @ndeet
|
||||
* Greenfield: Uniformize Wallet API's path (#6209) @NicolasDorier
|
||||
* Greenfield: Refactor app endpoints (#6051) @dennisreimann
|
||||
* Greenfield: Add store id for notifications (#6093) @dennisreimann
|
||||
* Greenfield: App endpoints for sales statistics (#6103) @dennisreimann
|
||||
* Greenfield: Set the label when generating a wallet for store (#6186) @NicolasDorier
|
||||
* Greenfield: Renaming of various properties in the Payouts API (#6246) @NicolasDorier
|
||||
* Greenfield: Select default payoutMethodId if none are selected in the refund route (#6315) @NicolasDorier
|
||||
* Notifications: Improved List View (#6050 #6169) @TChukwuleta
|
||||
* Shopify: Create invoice when the payment page opens (#6109) @NicolasDorier
|
||||
* Dashboard: Include hover to display total sales per day (#6174)
|
||||
* Invoice: Improve zero amount invoice handling (#6199) @dennisreimann
|
||||
* Wallet: Improve TX ID display (#6190) @dennisreimann
|
||||
* Wallet: Generate receive address automatically (#6122) @dennisreimann
|
||||
* Wallet: UI improvemnts (#5851) @dennisreimann
|
||||
* Make Role Permissions more human legible (#6191) @dennisreimann
|
||||
* Handle password reset when SMTP isn't configured or validated (#6150) @TChukwuleta
|
||||
* Prevent app creation without wallet creation (#6255) @TChukwuleta
|
||||
* Crowdfund: Add image upload support (#6254) @TChukwuleta
|
||||
* Optimize load time of StoreRoles related pages/routes (#6245) @NicolasDorier
|
||||
* Plugins: Make development of plugins easier (#6270) @NicolasDorier
|
||||
* Plugins: Support for searching plugins by name @rockstardev
|
||||
* Plugins: Disable plugins crashing at startup (#6290) @NicolasDorier
|
||||
* Plugins: Improve UX for uninstalling disabled plugins (#6291) @NicolasDorier
|
||||
* Plugins: Provide store info to modify-lnurlp-request filter (#6312) @jackstar12
|
||||
* Checkout: Show warnings if NFC payment isn't complete (#6288) @NicolasDorier
|
||||
* Checkout: Make `BitcoinCheckoutModelExtension` support other payment handlers (#6311) @jackstar12
|
||||
* UI: Paging improvements (#6332) @dennisreimann
|
||||
* UI: Add download button to logs view (#6330) @jackstar12
|
||||
* Boltcard: Require non interactivity for payments (#6289) @NicolasDorier
|
||||
* LND: Upgrade to 0.18.3-beta (#6303) @rockstardev
|
||||
* Core Lightning: Upgrade to 24.08.2 (#6323) @NicolasDorier
|
||||
|
||||
## Deprecations
|
||||
|
||||
* Remove experimental custodian accounts feature (#5863 #6193) @Kukks
|
||||
* Remove Checkout V1 (#5906) @NicolasDorier
|
||||
* Remove MySQL and SQlite dependencies (#5910) @NicolasDorier
|
||||
* Remove period concept from PullPayment (#5963) @NicolasDorier
|
||||
* Remove the Altcoins build (#6177) @NicolasDorier
|
||||
* Dashboard: Remove View All link for Top Items (#6072) @dennisreimann
|
||||
|
||||
## 1.13.6
|
||||
|
||||
* Fix: Wrong manifest downloaded when installing plugin on old btcpay (Ported on 1.13.x) (#6354, #6344)
|
||||
|
||||
## 1.13.5
|
||||
|
||||
### Bug fixes
|
||||
@ -36,7 +145,6 @@
|
||||
* Fix invoice paid for topping up a pull payment didn't top up. @NicolasDorier
|
||||
* Pull payment: Enable CORS for LNURL request (#6044) @dennisreimann
|
||||
|
||||
|
||||
## 1.13.2
|
||||
|
||||
### New features
|
||||
|
Reference in New Issue
Block a user