mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-17 22:14:26 +01:00
Liquid: Show limited wallet pages
This commit is contained in:
@@ -10,7 +10,7 @@ namespace BTCPayServer
|
|||||||
{
|
{
|
||||||
public string NetworkCryptoCode { get; set; }
|
public string NetworkCryptoCode { get; set; }
|
||||||
public uint256 AssetId { get; set; }
|
public uint256 AssetId { get; set; }
|
||||||
public override bool WalletSupported { get; set; } = false;
|
public override bool ReadonlyWallet { get; set; } = true;
|
||||||
public int Divisibility { get; set; } = 8;
|
public int Divisibility { get; set; } = 8;
|
||||||
|
|
||||||
public override IEnumerable<(MatchedOutput matchedOutput, OutPoint outPoint)> GetValidOutputs(NewTransactionEvent evtOutputs)
|
public override IEnumerable<(MatchedOutput matchedOutput, OutPoint outPoint)> GetValidOutputs(NewTransactionEvent evtOutputs)
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ namespace BTCPayServer
|
|||||||
public Dictionary<uint, DerivationType> ElectrumMapping = new Dictionary<uint, DerivationType>();
|
public Dictionary<uint, DerivationType> ElectrumMapping = new Dictionary<uint, DerivationType>();
|
||||||
|
|
||||||
public virtual bool WalletSupported { get; set; } = true;
|
public virtual bool WalletSupported { get; set; } = true;
|
||||||
|
public virtual bool ReadonlyWallet{ get; set; } = false;
|
||||||
|
|
||||||
public int MaxTrackedConfirmation { get; internal set; } = 6;
|
public int MaxTrackedConfirmation { get; internal set; } = 6;
|
||||||
public string UriScheme { get; internal set; }
|
public string UriScheme { get; internal set; }
|
||||||
|
|||||||
@@ -246,28 +246,46 @@ namespace BTCPayServer.Controllers
|
|||||||
var walletBlob = await walletBlobAsync;
|
var walletBlob = await walletBlobAsync;
|
||||||
var walletTransactionsInfo = await walletTransactionsInfoAsync;
|
var walletTransactionsInfo = await walletTransactionsInfoAsync;
|
||||||
var model = new ListTransactionsViewModel();
|
var model = new ListTransactionsViewModel();
|
||||||
foreach (var tx in transactions.UnconfirmedTransactions.Transactions.Concat(transactions.ConfirmedTransactions.Transactions).ToArray())
|
if (transactions == null)
|
||||||
{
|
{
|
||||||
var vm = new ListTransactionsViewModel.TransactionViewModel();
|
TempData.SetStatusMessageModel(new StatusMessageModel()
|
||||||
vm.Id = tx.TransactionId.ToString();
|
|
||||||
vm.Link = string.Format(CultureInfo.InvariantCulture, paymentMethod.Network.BlockExplorerLink, vm.Id);
|
|
||||||
vm.Timestamp = tx.Timestamp;
|
|
||||||
vm.Positive = tx.BalanceChange.GetValue(wallet.Network) >= 0;
|
|
||||||
vm.Balance = tx.BalanceChange.ToString();
|
|
||||||
vm.IsConfirmed = tx.Confirmations != 0;
|
|
||||||
|
|
||||||
if (walletTransactionsInfo.TryGetValue(tx.TransactionId.ToString(), out var transactionInfo))
|
|
||||||
{
|
{
|
||||||
var labels = walletBlob.GetLabels(transactionInfo);
|
Severity = StatusMessageModel.StatusSeverity.Error,
|
||||||
vm.Labels.AddRange(labels);
|
Message =
|
||||||
model.Labels.AddRange(labels);
|
"There was an error retrieving the transactions list. Is NBXplorer configured correctly?"
|
||||||
vm.Comment = transactionInfo.Comment;
|
});
|
||||||
|
model.Transactions = new List<ListTransactionsViewModel.TransactionViewModel>();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach (var tx in transactions.UnconfirmedTransactions.Transactions
|
||||||
|
.Concat(transactions.ConfirmedTransactions.Transactions).ToArray())
|
||||||
|
{
|
||||||
|
var vm = new ListTransactionsViewModel.TransactionViewModel();
|
||||||
|
vm.Id = tx.TransactionId.ToString();
|
||||||
|
vm.Link = string.Format(CultureInfo.InvariantCulture, paymentMethod.Network.BlockExplorerLink,
|
||||||
|
vm.Id);
|
||||||
|
vm.Timestamp = tx.Timestamp;
|
||||||
|
vm.Positive = tx.BalanceChange.GetValue(wallet.Network) >= 0;
|
||||||
|
vm.Balance = tx.BalanceChange.ToString();
|
||||||
|
vm.IsConfirmed = tx.Confirmations != 0;
|
||||||
|
|
||||||
|
if (walletTransactionsInfo.TryGetValue(tx.TransactionId.ToString(), out var transactionInfo))
|
||||||
|
{
|
||||||
|
var labels = walletBlob.GetLabels(transactionInfo);
|
||||||
|
vm.Labels.AddRange(labels);
|
||||||
|
model.Labels.AddRange(labels);
|
||||||
|
vm.Comment = transactionInfo.Comment;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (labelFilter == null ||
|
||||||
|
vm.Labels.Any(l => l.Value.Equals(labelFilter, StringComparison.OrdinalIgnoreCase)))
|
||||||
|
model.Transactions.Add(vm);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (labelFilter == null || vm.Labels.Any(l => l.Value.Equals(labelFilter, StringComparison.OrdinalIgnoreCase)))
|
model.Transactions = model.Transactions.OrderByDescending(t => t.Timestamp).ToList();
|
||||||
model.Transactions.Add(vm);
|
|
||||||
}
|
}
|
||||||
model.Transactions = model.Transactions.OrderByDescending(t => t.Timestamp).ToList();
|
|
||||||
return View(model);
|
return View(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -289,7 +307,7 @@ namespace BTCPayServer.Controllers
|
|||||||
if (paymentMethod == null)
|
if (paymentMethod == null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
var network = this.NetworkProvider.GetNetwork<BTCPayNetwork>(walletId?.CryptoCode);
|
var network = this.NetworkProvider.GetNetwork<BTCPayNetwork>(walletId?.CryptoCode);
|
||||||
if (network == null)
|
if (network == null || network.ReadonlyWallet)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
var storeData = store.GetStoreBlob();
|
var storeData = store.GetStoreBlob();
|
||||||
var rateRules = store.GetStoreBlob().GetRateRules(NetworkProvider);
|
var rateRules = store.GetStoreBlob().GetRateRules(NetworkProvider);
|
||||||
@@ -351,7 +369,7 @@ namespace BTCPayServer.Controllers
|
|||||||
if (store == null)
|
if (store == null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
var network = this.NetworkProvider.GetNetwork<BTCPayNetwork>(walletId?.CryptoCode);
|
var network = this.NetworkProvider.GetNetwork<BTCPayNetwork>(walletId?.CryptoCode);
|
||||||
if (network == null)
|
if (network == null || network.ReadonlyWallet)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
vm.SupportRBF = network.SupportRBF;
|
vm.SupportRBF = network.SupportRBF;
|
||||||
decimal transactionAmountSum = 0;
|
decimal transactionAmountSum = 0;
|
||||||
@@ -872,7 +890,7 @@ namespace BTCPayServer.Controllers
|
|||||||
WalletId walletId)
|
WalletId walletId)
|
||||||
{
|
{
|
||||||
var derivationSchemeSettings = GetDerivationSchemeSettings(walletId);
|
var derivationSchemeSettings = GetDerivationSchemeSettings(walletId);
|
||||||
if (derivationSchemeSettings == null)
|
if (derivationSchemeSettings == null || derivationSchemeSettings.Network.ReadonlyWallet)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
var store = (await Repository.FindStore(walletId.StoreId, GetUserId()));
|
var store = (await Repository.FindStore(walletId.StoreId, GetUserId()));
|
||||||
var vm = new WalletSettingsViewModel()
|
var vm = new WalletSettingsViewModel()
|
||||||
@@ -901,7 +919,7 @@ namespace BTCPayServer.Controllers
|
|||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
return View(vm);
|
return View(vm);
|
||||||
var derivationScheme = GetDerivationSchemeSettings(walletId);
|
var derivationScheme = GetDerivationSchemeSettings(walletId);
|
||||||
if (derivationScheme == null)
|
if (derivationScheme == null || derivationScheme.Network.ReadonlyWallet)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
|
|
||||||
if (command == "save")
|
if (command == "save")
|
||||||
|
|||||||
@@ -1,10 +1,19 @@
|
|||||||
@inject SignInManager<ApplicationUser> SignInManager
|
@inject SignInManager<ApplicationUser> SignInManager
|
||||||
|
@inject BTCPayNetworkProvider BtcPayNetworkProvider
|
||||||
|
@{
|
||||||
|
var wallet = WalletId.Parse( this.Context.GetRouteValue("walletId").ToString());
|
||||||
|
var network = BtcPayNetworkProvider.GetNetwork<BTCPayNetwork>(wallet.CryptoCode);
|
||||||
|
}
|
||||||
<div class="nav flex-column nav-pills">
|
<div class="nav flex-column nav-pills">
|
||||||
<a class="nav-link @ViewData.IsActivePage(WalletsNavPages.Transactions)" asp-action="WalletTransactions" asp-route-walletId="@this.Context.GetRouteValue("walletId")" id="WalletTransactions">Transactions</a>
|
<a class="nav-link @ViewData.IsActivePage(WalletsNavPages.Transactions)" asp-action="WalletTransactions" asp-route-walletId="@this.Context.GetRouteValue("walletId")" id="WalletTransactions">Transactions</a>
|
||||||
<a class="nav-link @ViewData.IsActivePage(WalletsNavPages.Send)" asp-action="WalletSend" asp-route-walletId="@this.Context.GetRouteValue("walletId")" id="WalletSend">Send</a>
|
@if (!network.ReadonlyWallet)
|
||||||
|
{
|
||||||
|
<a class="nav-link @ViewData.IsActivePage(WalletsNavPages.Send)" asp-action="WalletSend" asp-route-walletId="@this.Context.GetRouteValue("walletId")" id="WalletSend">Send</a>
|
||||||
|
}
|
||||||
<a class="nav-link @ViewData.IsActivePage(WalletsNavPages.Rescan)" asp-action="WalletRescan" asp-route-walletId="@this.Context.GetRouteValue("walletId")" id="WalletRescan">Rescan</a>
|
<a class="nav-link @ViewData.IsActivePage(WalletsNavPages.Rescan)" asp-action="WalletRescan" asp-route-walletId="@this.Context.GetRouteValue("walletId")" id="WalletRescan">Rescan</a>
|
||||||
<a class="nav-link @ViewData.IsActivePage(WalletsNavPages.PSBT)" asp-action="WalletPSBT" asp-route-walletId="@this.Context.GetRouteValue("walletId")">PSBT</a>
|
@if (!network.ReadonlyWallet)
|
||||||
<a class="nav-link @ViewData.IsActivePage(WalletsNavPages.Settings)" asp-action="WalletSettings" asp-route-walletId="@this.Context.GetRouteValue("walletId")" id="WalletSettings">Settings</a>
|
{
|
||||||
|
<a class="nav-link @ViewData.IsActivePage(WalletsNavPages.PSBT)" asp-action="WalletPSBT" asp-route-walletId="@this.Context.GetRouteValue("walletId")">PSBT</a>
|
||||||
|
<a class="nav-link @ViewData.IsActivePage(WalletsNavPages.Settings)" asp-action="WalletSettings" asp-route-walletId="@this.Context.GetRouteValue("walletId")" id="WalletSettings">Settings</a>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user