diff --git a/lnbits/core/services/payments.py b/lnbits/core/services/payments.py index 5187cd66c..bdc96801b 100644 --- a/lnbits/core/services/payments.py +++ b/lnbits/core/services/payments.py @@ -178,13 +178,20 @@ async def update_pending_payments(wallet_id: str): exclude_uncheckable=True, ) for payment in pending_payments: - status = await payment.check_status() - if status.failed: - payment.status = PaymentState.FAILED - await update_payment(payment) - elif status.success: - payment.status = PaymentState.SUCCESS - await update_payment(payment) + await update_pending_payment(payment) + + +async def update_pending_payment(payment: Payment) -> bool: + status = await payment.check_status() + if status.failed: + payment.status = PaymentState.FAILED + await update_payment(payment) + return True + if status.success: + payment.status = PaymentState.SUCCESS + await update_payment(payment) + return True + return False def fee_reserve_total(amount_msat: int, internal: bool = False) -> int: diff --git a/lnbits/core/views/payment_api.py b/lnbits/core/views/payment_api.py index 6cfcc511c..18ee97a39 100644 --- a/lnbits/core/views/payment_api.py +++ b/lnbits/core/views/payment_api.py @@ -37,7 +37,10 @@ from lnbits.core.models import ( Wallet, ) from lnbits.core.models.users import User -from lnbits.core.services.payments import get_payments_daily_stats +from lnbits.core.services.payments import ( + get_payments_daily_stats, + update_pending_payment, +) from lnbits.db import Filters, Page from lnbits.decorators import ( WalletTypeInfo, @@ -180,11 +183,14 @@ async def api_payments_paginated( key_info: WalletTypeInfo = Depends(require_invoice_key), filters: Filters = Depends(parse_filters(PaymentFilters)), ): - await update_pending_payments(key_info.wallet.id) page = await get_payments_paginated( wallet_id=key_info.wallet.id, filters=filters, ) + for payment in page.data: + if payment.pending: + await update_pending_payment(payment) + return page