diff --git a/lnbits/app.py b/lnbits/app.py index 56614b186..0f2d194b7 100644 --- a/lnbits/app.py +++ b/lnbits/app.py @@ -126,22 +126,18 @@ async def check_installed_extensions(app: FastAPI): The 'data' directory (where the '.zip' files live) is expected to persist state. Zips that are missing will be re-downloaded. """ - + shutil.rmtree(os.path.join("lnbits", "upgrades"), True) installed_extensions = await get_installed_extensions() for ext in installed_extensions: try: installed = check_installed_extension(ext) if not installed: - extension = Extension.from_installable_ext(ext) - register_ext_routes(app, extension) - current_version = (await db_versions()).get(ext.id, 0) - await migrate_extension_database(extension, current_version) + await restore_installed_extension(app, ext) + logger.warning(f"✔️ Successfully re-installed extension: {ext.id}") except: logger.warning(f"Failed to re-install extension: {ext.id}") - shutil.rmtree(os.path.join("lnbits", "upgrades"), True) - def check_installed_extension(ext: InstallableExtension) -> bool: zip_files = glob.glob( @@ -158,6 +154,19 @@ def check_installed_extension(ext: InstallableExtension) -> bool: return False +async def restore_installed_extension(app: FastAPI, ext: InstallableExtension): + extension = Extension.from_installable_ext(ext) + register_ext_routes(app, extension) + + current_version = (await db_versions()).get(ext.id, 0) + await migrate_extension_database(extension, current_version) + + # mount routes for the new version + core_app_extra.register_new_ext_routes(extension) + if ext.module_installed: + ext.nofiy_upgrade() + + def register_routes(app: FastAPI) -> None: """Register FastAPI routes / LNbits extensions.""" app.include_router(core_app)