ZEUS-1071: Distinguish AMP invoices

This commit is contained in:
Evan Kaloudis
2024-03-02 04:11:32 -05:00
parent 94b4863c45
commit d0eb506243
7 changed files with 70 additions and 6 deletions
+5
View File
@@ -418,6 +418,7 @@
"views.Invoice.paymentHash": "Payment Hash",
"views.Invoice.paymentRequest": "Payment Request",
"views.Invoice.copyPaymentRequest": "Copy Payment Request",
"views.Invoice.invoiceAmount": "Invoice amount",
"views.Invoices.keysendMessage": "Keysend message",
"views.LNDConnectConfigQRScanner.error": "Error fetching lndconnect config",
"views.LncQRScanner.error": "Error parsing LNC config",
@@ -868,7 +869,9 @@
"views.Activity.expired": "Expired",
"views.Activity.youSent": "You sent",
"views.Activity.youReceived": "You received",
"views.Activity.youReceivedAmp": "You received (AMP)",
"views.Activity.requestedPayment": "Requested Payment",
"views.Activity.requestedPaymentAmp": "Requested Payment (AMP)",
"views.Activity.expiredRequested": "Expired Request",
"views.Activity.channelOperation": "Self send or Channel operation",
"views.ActivityFilter.title": "Filter Activity",
@@ -881,6 +884,8 @@
"views.ActivityFilter.minimumAmount": "Minimum Amount (sats)",
"views.ActivityFilter.inTransit": "In transit payments",
"views.ActivityFilter.isFailed": "Failed payments",
"views.ActivityFilter.standardInvoices": "Standard invoices",
"views.ActivityFilter.ampInvoices": "AMP invoices",
"general.clearChanges": "Clear changes",
"views.Routing.RoutingEvent.sourceChannel": "Source Channel",
"views.Routing.RoutingEvent.destinationChannel": "Destination Channel",
+2 -1
View File
@@ -51,6 +51,7 @@ export default class Invoice extends BaseModel {
public r_preimage: any;
public cltv_expiry: string;
public htlcs: Array<HTLC>;
public is_amp?: boolean;
// c-lightning, eclair
public bolt11: string;
public label: string;
@@ -194,7 +195,7 @@ export default class Invoice extends BaseModel {
}
@computed public get getDisplayTimeShort(): string {
return this.isPaid
return this.isPaid && !this.is_amp
? DateTimeUtils.listFormattedDateShort(
this.settle_date || this.paid_at || this.timestamp || 0
)
+2
View File
@@ -42,6 +42,8 @@ export const DEFAULT_FILTERS = {
inTransit: false,
isFailed: false,
unconfirmed: true,
standardInvoices: true,
ampInvoices: true,
zeusPay: true,
minimumAmount: 0,
startDate: undefined,
+14
View File
@@ -75,6 +75,20 @@ class ActivityFilterUtils {
);
}
if (filter.standardInvoices == false) {
filteredActivity = filteredActivity.filter(
(activity: any) =>
!(activity instanceof Invoice && !activity.is_amp)
);
}
if (filter.ampInvoices == false) {
filteredActivity = filteredActivity.filter(
(activity: any) =>
!(activity instanceof Invoice && activity.is_amp)
);
}
if (filter.zeusPay == false) {
filteredActivity = filteredActivity.filter(
(activity: any) =>
+11 -1
View File
@@ -252,11 +252,21 @@ export default class Activity extends React.PureComponent<
if (item instanceof Invoice) {
displayName = item.isPaid
? localeString('views.Activity.youReceived')
? item.is_amp
? localeString(
'views.Activity.youReceivedAmp'
)
: localeString(
'views.Activity.youReceived'
)
: item.isExpired
? localeString(
'views.Activity.expiredRequested'
)
: item.is_amp
? localeString(
'views.Activity.requestedPaymentAmp'
)
: localeString(
'views.Activity.requestedPayment'
);
+17 -1
View File
@@ -77,6 +77,8 @@ export default class ActivityFilter extends React.Component<
inTransit,
isFailed,
unconfirmed,
standardInvoices,
ampInvoices,
zeusPay,
minimumAmount,
startDate,
@@ -210,7 +212,21 @@ export default class ActivityFilter extends React.Component<
condition: BackendUtils.isLNDBased()
},
{
label: 'ZEUS PAY',
label: localeString('views.ActivityFilter.standardInvoices'),
value: standardInvoices,
var: 'standardInvoices',
type: 'Toggle',
condition: BackendUtils.isLNDBased()
},
{
label: localeString('views.ActivityFilter.ampInvoices'),
value: ampInvoices,
var: 'ampInvoices',
type: 'Toggle',
condition: BackendUtils.isLNDBased()
},
{
label: 'ZEUS Pay',
value: zeusPay,
var: 'zeusPay',
type: 'Toggle',
+19 -3
View File
@@ -68,7 +68,9 @@ export default class InvoiceView extends React.Component<InvoiceProps> {
formattedOriginalTimeUntilExpiry,
formattedTimeUntilExpiry,
getPaymentRequest,
getKeysendMessage
getKeysendMessage,
is_amp,
value
} = invoice;
const privateInvoice = invoice.private;
const noteKey = getRPreimage || payment_hash;
@@ -103,7 +105,9 @@ export default class InvoiceView extends React.Component<InvoiceProps> {
<Header
leftComponent="Back"
centerComponent={{
text: localeString('views.Invoice.title'),
text: is_amp
? localeString('views.Receive.ampInvoice')
: localeString('views.Invoice.title'),
style: {
color: themeColor('text'),
fontFamily: 'PPNeueMontreal-Book'
@@ -150,6 +154,18 @@ export default class InvoiceView extends React.Component<InvoiceProps> {
/>
)}
{is_amp && isPaid && (
<KeyValue
keyValue={localeString(
'views.Invoice.invoiceAmount'
)}
value={
<Amount sats={value} sensitive toggleable />
}
sensitive
/>
)}
<KeyValue
keyValue={localeString('views.Invoice.memo')}
value={
@@ -166,7 +182,7 @@ export default class InvoiceView extends React.Component<InvoiceProps> {
/>
)}
{isPaid && (
{isPaid && !is_amp && (
<KeyValue
keyValue={localeString(
'views.Invoice.settleDate'