From df5543c2806c57d4c9aacba1b7f965258d3f2b27 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Mon, 29 Jun 2026 12:44:50 +0300 Subject: [PATCH] fix: activate wasm extension --- lnbits/app.py | 8 ++++++++ lnbits/core/models/misc.py | 1 + lnbits/core/services/extensions.py | 10 ++++++++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lnbits/app.py b/lnbits/app.py index 0cd26cafd..2b2297b91 100644 --- a/lnbits/app.py +++ b/lnbits/app.py @@ -176,6 +176,7 @@ def create_app() -> FastAPI: # Allow registering new extensions routes without direct access to the `app` object core_app_extra.register_new_ext_routes = register_new_ext_routes(app) + core_app_extra.register_new_wasm_ext_routes = register_new_wasm_ext_routes(app) core_app_extra.register_new_ratelimiter = register_new_ratelimiter(app) # register static files @@ -423,6 +424,13 @@ def register_new_ext_routes(app: FastAPI) -> Callable: return register_new_ext_routes_fn +def register_new_wasm_ext_routes(app: FastAPI) -> Callable: + def register_new_wasm_ext_routes_fn(ext_id: str): + register_wasm_extension(app, ext_id) + + return register_new_wasm_ext_routes_fn + + def register_new_ratelimiter(app: FastAPI) -> Callable: def register_new_ratelimiter_fn(): limiter = Limiter( diff --git a/lnbits/core/models/misc.py b/lnbits/core/models/misc.py index 5aad3fdc9..5acefcd57 100644 --- a/lnbits/core/models/misc.py +++ b/lnbits/core/models/misc.py @@ -11,6 +11,7 @@ def _do_nothing(*_): class CoreAppExtra: register_new_ext_routes: Callable = _do_nothing + register_new_wasm_ext_routes: Callable = _do_nothing register_new_ratelimiter: Callable diff --git a/lnbits/core/services/extensions.py b/lnbits/core/services/extensions.py index cf64347b3..d327b2aca 100644 --- a/lnbits/core/services/extensions.py +++ b/lnbits/core/services/extensions.py @@ -75,11 +75,12 @@ async def install_extension( await update_installed_extension(ext_info) extension = Extension.from_installable_ext(ext_info) - if extension.is_upgrade_extension: + if extension.is_upgrade_extension and not extension.is_wasm: # call stop while the old routes are still active await stop_extension_background_work(ext_info.id) - await start_extension_background_work(ext_info.id) + if not extension.is_wasm: + await start_extension_background_work(ext_info.id) return extension @@ -188,6 +189,11 @@ async def uninstall_extension(ext_id: str): async def activate_extension(ext: Extension): + if ext.is_wasm: + core_app_extra.register_new_wasm_ext_routes(ext.code) + await update_installed_extension_state(ext_id=ext.code, active=True) + return + core_app_extra.register_new_ext_routes(ext) await update_installed_extension_state(ext_id=ext.code, active=True) await start_extension_background_work(ext.code)