Skip to content

Commit

Permalink
Merge pull request #2014 from kaloudis/zeus-1071
Browse files Browse the repository at this point in the history
ZEUS-1071: Distinguish AMP invoices
  • Loading branch information
kaloudis authored Mar 4, 2024
2 parents c1747ff + ace36aa commit 5bc0ce2
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 6 deletions.
6 changes: 6 additions & 0 deletions locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@
"general.advanced": "Advanced",
"general.clearChanges": "Clear changes",
"general.destination": "Destination",
"general.clearChanges": "Clear changes",
"restart.title": "Restart required",
"restart.msg": "ZEUS has to be restarted before the new configuration is applied.",
"restart.msg1": "Would you like to restart now?",
Expand Down Expand Up @@ -420,6 +421,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",
Expand Down Expand Up @@ -868,7 +870,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",
Expand All @@ -881,6 +885,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",
"views.Routing.RoutingEvent.sourceChannel": "Source Channel",
"views.Routing.RoutingEvent.destinationChannel": "Destination Channel",
"views.Olympians.title": "Olympians",
Expand Down
3 changes: 2 additions & 1 deletion models/Invoice.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
)
Expand Down
2 changes: 2 additions & 0 deletions stores/ActivityStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ export const DEFAULT_FILTERS = {
inTransit: false,
isFailed: false,
unconfirmed: true,
standardInvoices: true,
ampInvoices: true,
zeusPay: true,
minimumAmount: 0,
startDate: undefined,
Expand Down
14 changes: 14 additions & 0 deletions utils/ActivityFilterUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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) =>
Expand Down
12 changes: 11 additions & 1 deletion views/Activity/Activity.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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'
);
Expand Down
18 changes: 17 additions & 1 deletion views/Activity/ActivityFilter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ export default class ActivityFilter extends React.Component<
inTransit,
isFailed,
unconfirmed,
standardInvoices,
ampInvoices,
zeusPay,
minimumAmount,
startDate,
Expand Down Expand Up @@ -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',
Expand Down
22 changes: 19 additions & 3 deletions views/Invoice.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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'
Expand Down Expand Up @@ -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={
Expand All @@ -166,7 +182,7 @@ export default class InvoiceView extends React.Component<InvoiceProps> {
/>
)}

{isPaid && (
{isPaid && !is_amp && (
<KeyValue
keyValue={localeString(
'views.Invoice.settleDate'
Expand Down

0 comments on commit 5bc0ce2

Please sign in to comment.