Skip to content

Commit 9e11716

Browse files
committed
refactor: extract isExpiredInvoice to utils and reuse in LNbits processor
1 parent 7d49688 commit 9e11716

3 files changed

Lines changed: 8 additions & 7 deletions

File tree

src/app/maintenance-worker.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { createLogger } from '../factories/logger-factory'
1212
import { delayMs } from '../utils/misc'
1313
import { INip05VerificationRepository } from '../@types/repositories'
1414
import { InvoiceStatus } from '../@types/invoice'
15+
import { isExpiredInvoice } from '../utils/invoice'
1516
import { Nip05Verification } from '../@types/nip05'
1617
import { Settings } from '../@types/settings'
1718

@@ -21,10 +22,8 @@ const CLEAR_OLD_EVENTS_TIMEOUT_MS = 5000
2122

2223
const logger = createLogger('maintenance-worker')
2324

24-
const isNotFoundError = (error: unknown): boolean => (error as any)?.response?.status === 404
25-
26-
const isExpiredInvoice = (invoice: { expiresAt?: Date | null }): boolean =>
27-
invoice.expiresAt instanceof Date && invoice.expiresAt.getTime() <= Date.now()
25+
const isNotFoundError = (error: unknown): boolean =>
26+
(error as any)?.response?.status === 404
2827

2928
/**
3029
* Merge a re-verification outcome onto an existing verification row.

src/payments-processors/lnbits-payment-processor.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { Invoice, InvoiceStatus, InvoiceUnit } from '../@types/invoice'
55
import { AxiosInstance } from 'axios'
66
import { createLogger } from '../factories/logger-factory'
77
import { Factory } from '../@types/base'
8+
import { isExpiredInvoice } from '../utils/invoice'
89
import { Pubkey } from '../@types/base'
910
import { Settings } from '../@types/settings'
1011

@@ -53,7 +54,6 @@ export class LNbitsPaymentsProcessor implements IPaymentsProcessor {
5354
})
5455
const invoice = new LNbitsInvoice()
5556
const data = response.data
56-
const expiresAt = new Date(data.details.expiry * 1000)
5757
invoice.id = data.details.payment_hash
5858
invoice.pubkey = data.details.extra.internalId
5959
invoice.bolt11 = data.details.bolt11
@@ -62,16 +62,16 @@ export class LNbitsPaymentsProcessor implements IPaymentsProcessor {
6262
invoice.amountPaid = BigInt(Math.floor(data.details.amount / 1000))
6363
}
6464
invoice.unit = InvoiceUnit.SATS
65+
invoice.expiresAt = new Date(data.details.expiry * 1000)
6566
if (data.paid) {
6667
invoice.status = InvoiceStatus.COMPLETED
67-
} else if (expiresAt.getTime() <= Date.now()) {
68+
} else if (isExpiredInvoice(invoice)) {
6869
invoice.status = InvoiceStatus.EXPIRED
6970
} else {
7071
invoice.status = InvoiceStatus.PENDING
7172
}
7273
invoice.description = data.details.memo
7374
invoice.confirmedAt = data.paid ? new Date(data.details.time * 1000) : null
74-
invoice.expiresAt = expiresAt
7575
invoice.createdAt = new Date(data.details.time * 1000)
7676
invoice.updatedAt = new Date()
7777
return invoice

src/utils/invoice.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export const isExpiredInvoice = (invoice: { expiresAt?: Date | null }): boolean =>
2+
invoice.expiresAt instanceof Date && invoice.expiresAt.getTime() <= Date.now()

0 commit comments

Comments
 (0)