From 55f244ed4eb3a06572b595e6509e084b1a56a577 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Tue, 30 Jun 2026 13:39:22 +0300 Subject: [PATCH] refactor: simplify --- lnbits/app.py | 8 +++++++- lnbits/core/models/misc.py | 10 +++++++++- lnbits/core/tasks.py | 8 +++----- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/lnbits/app.py b/lnbits/app.py index fe05ff1fa..b03591283 100644 --- a/lnbits/app.py +++ b/lnbits/app.py @@ -37,6 +37,7 @@ from lnbits.core.services.payments import check_pending_payments from lnbits.core.tasks import ( audit_queue, collect_exchange_rates_data, + dispatch_wasm_invoice_paid, purge_audit_data, run_by_the_minute_tasks, wait_for_audit_data, @@ -507,7 +508,12 @@ def register_async_tasks(app: FastAPI) -> None: # core invoice listener invoice_queue: asyncio.Queue = asyncio.Queue() register_invoice_listener(invoice_queue, "core") - create_permanent_task(lambda: wait_for_paid_invoices(invoice_queue, app)) + + async def dispatch_extension_invoice_paid(payment) -> None: + await dispatch_wasm_invoice_paid(app, payment) + + core_app_extra.dispatch_extension_invoice_paid = dispatch_extension_invoice_paid + create_permanent_task(lambda: wait_for_paid_invoices(invoice_queue)) create_permanent_task(run_by_the_minute_tasks) create_permanent_task(purge_audit_data) diff --git a/lnbits/core/models/misc.py b/lnbits/core/models/misc.py index 5acefcd57..4417079de 100644 --- a/lnbits/core/models/misc.py +++ b/lnbits/core/models/misc.py @@ -1,6 +1,7 @@ from __future__ import annotations -from collections.abc import Callable +from collections.abc import Awaitable, Callable +from typing import Any from pydantic import BaseModel @@ -9,10 +10,17 @@ def _do_nothing(*_): pass +async def _do_nothing_async(_: Any) -> None: + pass + + class CoreAppExtra: register_new_ext_routes: Callable = _do_nothing register_new_wasm_ext_routes: Callable = _do_nothing register_new_ratelimiter: Callable + dispatch_extension_invoice_paid: Callable[[Any], Awaitable[None]] = ( + _do_nothing_async + ) class ConversionData(BaseModel): diff --git a/lnbits/core/tasks.py b/lnbits/core/tasks.py index dcddb38e6..f63bededa 100644 --- a/lnbits/core/tasks.py +++ b/lnbits/core/tasks.py @@ -13,6 +13,7 @@ from lnbits.core.crud.audit import delete_expired_audit_entries from lnbits.core.crud.payments import get_payments_status_count from lnbits.core.crud.users import get_accounts from lnbits.core.crud.wallets import get_wallets_count +from lnbits.core.db import core_app_extra from lnbits.core.models.audit import AuditEntry from lnbits.core.models.extensions import InstallableExtension from lnbits.core.models.notifications import NotificationType @@ -92,9 +93,7 @@ async def _notify_server_status() -> None: enqueue_admin_notification(NotificationType.server_status, values) -async def wait_for_paid_invoices( - invoice_paid_queue: asyncio.Queue, app: FastAPI | None = None -) -> None: +async def wait_for_paid_invoices(invoice_paid_queue: asyncio.Queue) -> None: """ This worker dispatches events to all extensions and dispatches webhooks. """ @@ -105,8 +104,7 @@ async def wait_for_paid_invoices( wallet = await get_wallet(payment.wallet_id) if wallet: await send_payment_notification(wallet, payment) - if app: - await dispatch_wasm_invoice_paid(app, payment) + await core_app_extra.dispatch_extension_invoice_paid(payment) async def dispatch_wasm_invoice_paid(app: FastAPI, payment: Any) -> None: