Compare commits
1 Commits
master
...
revert-225
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cba41eec5b |
2
.github/workflows/build-test.yml
vendored
2
.github/workflows/build-test.yml
vendored
@ -7,7 +7,7 @@ on:
|
||||
- '**/*.md'
|
||||
- '**/*.gitignore'
|
||||
- '**/*.gitattributes'
|
||||
pull_request_target:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
|
||||
|
||||
@ -1,8 +1,4 @@
|
||||
@using BTCPayApp.Core.Auth
|
||||
@using BTCPayApp.UI.Features
|
||||
@using BTCPayServer.Client.Models
|
||||
@inject IAccountManager AccountManager
|
||||
@inject IDispatcher Dispatcher
|
||||
<div @attributes="InputAttributes" class="@CssClass">
|
||||
@if (Invoices is not null)
|
||||
{
|
||||
@ -48,21 +44,4 @@
|
||||
public Dictionary<string, object>? InputAttributes { get; set; }
|
||||
|
||||
private string CssClass => $"invoice-list {(InputAttributes?.ContainsKey("class") is true ? InputAttributes["class"] : "")}".Trim();
|
||||
|
||||
private string? StoreId => AccountManager.CurrentStore?.Id;
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
{
|
||||
if (firstRender)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(StoreId))
|
||||
{
|
||||
Dispatcher.Dispatch(new StoreState.FetchInvoices(StoreId));
|
||||
}
|
||||
}
|
||||
}
|
||||
private async void OnStateChanged(object? sender, EventArgs e)
|
||||
{
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
}
|
||||
|
||||
@ -98,21 +98,18 @@
|
||||
</button>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-center">
|
||||
<button class="btn btn-lg btn-primary mx-3" type="submit" disabled="@(IsSubmitting || amount == 0)" id="pay-button" @onclick="HandleSubmit">
|
||||
@if (IsSubmitting)
|
||||
{
|
||||
<div class="spinner-border spinner-border-sm" role="status">
|
||||
<span class="visually-hidden">Loading...</span>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span>Charge</span>
|
||||
}
|
||||
</button>
|
||||
</div>
|
||||
<button class="btn btn-lg btn-primary mx-3" type="submit" disabled="@(IsSubmitting || amount == 0)" id="pay-button" @onclick="HandleSubmit">
|
||||
@if (IsSubmitting)
|
||||
{
|
||||
<div class="spinner-border spinner-border-sm" role="status">
|
||||
<span class="visually-hidden">Loading...</span>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span>Charge</span>
|
||||
}
|
||||
</button>
|
||||
|
||||
@if (CanAccessRecentTransactions)
|
||||
{
|
||||
|
||||
@ -36,10 +36,6 @@
|
||||
{
|
||||
<Alert Type="danger">@Error</Alert>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(_successMessage))
|
||||
{
|
||||
<Alert Type="success">@_successMessage</Alert>
|
||||
}
|
||||
@if (Invoice is not null)
|
||||
{
|
||||
@if (CanCheckout)
|
||||
@ -60,64 +56,45 @@
|
||||
<InvoiceStatusDisplay Invoice="@Invoice"/>
|
||||
</div>
|
||||
|
||||
<div class="invoice-actions mt-3 mb-3">
|
||||
<div class="row g-2">
|
||||
@if (!string.IsNullOrEmpty(ReceiptUrl))
|
||||
{
|
||||
<div class="col-4">
|
||||
<a class="btn btn-outline-secondary btn-sm w-100" href="@ReceiptUrl" rel="noreferrer noopener" target="_blank">Receipt</a>
|
||||
</div>
|
||||
}
|
||||
@if (!Invoice.Archived)
|
||||
{
|
||||
<div class="col-4">
|
||||
<button class="btn btn-outline-secondary btn-sm w-100" @onclick="ToggleArchive">
|
||||
Archive
|
||||
</button>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4 class="mt-4">General Information</h4>
|
||||
<div class="box">
|
||||
<table class="table my-0">
|
||||
<tbody>
|
||||
@if (Invoice.Metadata.TryGetValue("orderId", out var orderId))
|
||||
{
|
||||
<tr>
|
||||
<th>Order Id</th>
|
||||
<td>
|
||||
@if (Invoice.Metadata.TryGetValue("orderUrl", out var orderUrl))
|
||||
{
|
||||
<a href="@orderUrl" rel="noreferrer noopener" target="_blank">@orderId</a>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span>@orderId</span>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (Invoice.Metadata.TryGetValue("paymentRequestId", out var paymentRequestId))
|
||||
{
|
||||
<tr>
|
||||
<th>Payment Request Id</th>
|
||||
<td>@paymentRequestId</td>
|
||||
</tr>
|
||||
}
|
||||
@if (Invoice.Metadata.TryGetValue("orderId", out var orderId))
|
||||
{
|
||||
<tr>
|
||||
<th>Created</th>
|
||||
<th>Order Id</th>
|
||||
<td>
|
||||
<DateDisplay DateTimeOffset="@Invoice.CreatedTime"/>
|
||||
@if (Invoice.Metadata.TryGetValue("orderUrl", out var orderUrl))
|
||||
{
|
||||
<a href="@orderUrl" rel="noreferrer noopener" target="_blank">@orderId</a>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span>@orderId</span>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (Invoice.Metadata.TryGetValue("paymentRequestId", out var paymentRequestId))
|
||||
{
|
||||
<tr>
|
||||
<th>Expired</th>
|
||||
<td>
|
||||
<DateDisplay DateTimeOffset="@Invoice.ExpirationTime"/>
|
||||
</td>
|
||||
<th>Payment Request Id</th>
|
||||
<td>@paymentRequestId</td>
|
||||
</tr>
|
||||
}
|
||||
<tr>
|
||||
<th>Created</th>
|
||||
<td>
|
||||
<DateDisplay DateTimeOffset="@Invoice.CreatedTime"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Expired</th>
|
||||
<td>
|
||||
<DateDisplay DateTimeOffset="@Invoice.ExpirationTime"/>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@ -134,27 +111,27 @@
|
||||
<div class="box">
|
||||
<table class="table my-0">
|
||||
<tbody>
|
||||
@if (!string.IsNullOrEmpty(itemCode?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Item code</th>
|
||||
<td>@itemCode</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(itemDesc?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Item Description</th>
|
||||
<td>@itemDesc</td>
|
||||
</tr>
|
||||
}
|
||||
@if (taxIncluded is not null)
|
||||
{
|
||||
<tr>
|
||||
<th>Tax Included</th>
|
||||
<td>@taxIncluded</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(itemCode?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Item code</th>
|
||||
<td>@itemCode</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(itemDesc?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Item Description</th>
|
||||
<td>@itemDesc</td>
|
||||
</tr>
|
||||
}
|
||||
@if (taxIncluded is not null)
|
||||
{
|
||||
<tr>
|
||||
<th>Tax Included</th>
|
||||
<td>@taxIncluded</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@ -173,80 +150,80 @@
|
||||
Invoice.Metadata.TryGetValue("buyerZip", out var buyerZip);
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerName?.ToString()) || !string.IsNullOrEmpty(buyerEmail?.ToString()) ||
|
||||
!string.IsNullOrEmpty(buyerPhone?.ToString()) || !string.IsNullOrEmpty(buyerAddress1?.ToString()) ||
|
||||
!string.IsNullOrEmpty(buyerAddress2?.ToString()) || !string.IsNullOrEmpty(buyerCity?.ToString()) ||
|
||||
!string.IsNullOrEmpty(buyerState?.ToString()) || !string.IsNullOrEmpty(buyerCountry?.ToString()) ||
|
||||
!string.IsNullOrEmpty(buyerZip?.ToString()))
|
||||
!string.IsNullOrEmpty(buyerPhone?.ToString()) || !string.IsNullOrEmpty(buyerAddress1?.ToString()) ||
|
||||
!string.IsNullOrEmpty(buyerAddress2?.ToString()) || !string.IsNullOrEmpty(buyerCity?.ToString()) ||
|
||||
!string.IsNullOrEmpty(buyerState?.ToString()) || !string.IsNullOrEmpty(buyerCountry?.ToString()) ||
|
||||
!string.IsNullOrEmpty(buyerZip?.ToString()))
|
||||
{
|
||||
<h4 class="mt-4">Buyer Information</h4>
|
||||
<div class="box">
|
||||
<table class="table my-0">
|
||||
<tbody>
|
||||
@if (!string.IsNullOrEmpty(buyerName?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<td>@buyerName</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerEmail?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Email</th>
|
||||
<td>
|
||||
<a href="mailto:@buyerEmail">@buyerEmail</a>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerPhone?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Phone</th>
|
||||
<td>@buyerPhone</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerAddress1?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Address 1</th>
|
||||
<td>@buyerAddress1</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerAddress2?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Address 2</th>
|
||||
<td>@buyerAddress2</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerCity?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>City</th>
|
||||
<td>@buyerCity</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerState?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>State</th>
|
||||
<td>@buyerState</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerCountry?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Country</th>
|
||||
<td>@buyerCountry</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerZip?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Zip</th>
|
||||
<td>@buyerZip</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerName?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<td>@buyerName</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerEmail?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Email</th>
|
||||
<td>
|
||||
<a href="mailto:@buyerEmail">@buyerEmail</a>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerPhone?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Phone</th>
|
||||
<td>@buyerPhone</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerAddress1?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Address 1</th>
|
||||
<td>@buyerAddress1</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerAddress2?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Address 2</th>
|
||||
<td>@buyerAddress2</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerCity?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>City</th>
|
||||
<td>@buyerCity</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerState?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>State</th>
|
||||
<td>@buyerState</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerCountry?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Country</th>
|
||||
<td>@buyerCountry</td>
|
||||
</tr>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(buyerZip?.ToString()))
|
||||
{
|
||||
<tr>
|
||||
<th>Zip</th>
|
||||
<td>@buyerZip</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@ -350,13 +327,13 @@
|
||||
|
||||
if (!string.IsNullOrEmpty(StoreId) && !string.IsNullOrEmpty(InvoiceId))
|
||||
{
|
||||
Dispatcher.Dispatch(new StoreState.FetchInvoice(StoreId, InvoiceId));
|
||||
if (Invoice == null)
|
||||
Dispatcher.Dispatch(new StoreState.FetchInvoice(StoreId, InvoiceId));
|
||||
if (PaymentMethods == null)
|
||||
Dispatcher.Dispatch(new StoreState.FetchInvoicePaymentMethods(StoreId, InvoiceId));
|
||||
}
|
||||
}
|
||||
|
||||
private string? _successMessage;
|
||||
private string? StoreId => AccountManager.CurrentStore?.Id;
|
||||
private AppUserStoreInfo? StoreInfo => StoreState.Value.StoreInfo;
|
||||
private InvoiceData? Invoice => !string.IsNullOrEmpty(InvoiceId) ? StoreState.Value.GetInvoice(InvoiceId!)?.Data : null;
|
||||
@ -376,14 +353,4 @@
|
||||
|
||||
private string GetTitle() => $"Invoice {Invoice?.Id}".Trim();
|
||||
private bool CanCheckout => Invoice is { Status: InvoiceStatus.New };
|
||||
|
||||
private async Task ToggleArchive()
|
||||
{
|
||||
await AccountManager.GetClient().ArchiveInvoice(StoreId, InvoiceId);
|
||||
_successMessage = "The invoice has been archived and will no longer appear in the invoice list by default";
|
||||
if (!string.IsNullOrEmpty(StoreId) && !string.IsNullOrEmpty(InvoiceId))
|
||||
{
|
||||
Dispatcher.Dispatch(new StoreState.FetchInvoice(StoreId, InvoiceId));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user