diff --git a/__init__.py b/__init__.py index aeca6cd..3e6365b 100644 --- a/__init__.py +++ b/__init__.py @@ -1,16 +1,14 @@ import asyncio -from typing import List +from loguru import logger from fastapi import APIRouter from lnbits.db import Database from lnbits.helpers import template_renderer -from lnbits.tasks import catch_everything_and_restart +from lnbits.tasks import create_permanent_unique_task db = Database("ext_splitpayments") -scheduled_tasks: List[asyncio.Task] = [] - splitpayments_static_files = [ { "path": "/splitpayments/static", @@ -31,7 +29,15 @@ from .views import * # noqa: F401,F403 from .views_api import * # noqa: F401,F403 +scheduled_tasks: list[asyncio.Task] = [] + +def splitpayments_stop(): + for task in scheduled_tasks: + try: + task.cancel() + except Exception as ex: + logger.warning(ex) + def splitpayments_start(): - loop = asyncio.get_event_loop() - task = loop.create_task(catch_everything_and_restart(wait_for_paid_invoices)) + task = create_permanent_unique_task("ext_splitpayments", wait_for_paid_invoices) scheduled_tasks.append(task) diff --git a/views_api.py b/views_api.py index 48e5b31..ce7f342 100644 --- a/views_api.py +++ b/views_api.py @@ -6,9 +6,9 @@ from loguru import logger from starlette.exceptions import HTTPException from lnbits.core.crud import get_wallet, get_wallet_for_key -from lnbits.decorators import WalletTypeInfo, check_admin, require_admin_key +from lnbits.decorators import WalletTypeInfo, require_admin_key -from . import scheduled_tasks, splitpayments_ext +from . import splitpayments_ext from .crud import get_targets, set_targets from .models import Target, TargetPutList @@ -81,16 +81,3 @@ async def api_targets_delete( source_wallet: WalletTypeInfo = Depends(require_admin_key), ) -> None: await set_targets(source_wallet.wallet.id, []) - - -# deinit extension invoice listener -@splitpayments_ext.delete( - "/api/v1", status_code=HTTPStatus.OK, dependencies=[Depends(check_admin)] -) -async def api_stop(): - for t in scheduled_tasks: - try: - t.cancel() - except Exception as ex: - logger.warning(ex) - return {"success": True}