diff --git a/lnbits/core/models/extensions.py b/lnbits/core/models/extensions.py index 5872ecb67..70af071aa 100644 --- a/lnbits/core/models/extensions.py +++ b/lnbits/core/models/extensions.py @@ -144,6 +144,7 @@ class UserExtension(BaseModel): class Extension(BaseModel): code: str is_valid: bool + is_wasm: bool = False name: str | None = None short_description: str | None = None tile: str | None = None @@ -167,6 +168,7 @@ class Extension(BaseModel): return Extension( code=ext_info.id, is_valid=True, + is_wasm=ext_info.is_wasm, name=ext_info.name, short_description=ext_info.short_description, tile=ext_info.icon, @@ -400,6 +402,18 @@ class InstallableExtension(BaseModel): return False return self.meta.pay_to_enable.required is True + @property + def is_wasm(self) -> bool: + config_path = Path(self.ext_dir, "config.json") + if not config_path.is_file(): + return False + try: + with open(config_path, encoding="utf-8") as json_file: + config_json = json.load(json_file) + except Exception: + return False + return config_json.get("extension_type") == "wasm" + async def download_archive(self): logger.info(f"Downloading extension {self.name} ({self.installed_version}).") ext_zip_file = self.zip_path diff --git a/lnbits/static/js/components/lnbits-manage-extension-list.js b/lnbits/static/js/components/lnbits-manage-extension-list.js index 77d6a834f..4e41de6a6 100644 --- a/lnbits/static/js/components/lnbits-manage-extension-list.js +++ b/lnbits/static/js/components/lnbits-manage-extension-list.js @@ -35,6 +35,18 @@ window.app.component('lnbits-manage-extension-list', { .toLocaleLowerCase() .includes(this.searchTerm.toLocaleLowerCase()) }) + }, + extensionUrl(extension) { + if (extension.is_wasm) { + return `/ext/${extension.code}` + } + return `/${extension.code}/` + }, + extensionActive(extension) { + const extensionPath = extension.is_wasm + ? `/ext/${extension.code}` + : `/${extension.code}` + return this.$route.path.startsWith(extensionPath) } }, async created() { diff --git a/lnbits/templates/components/lnbits-manage-extension-list.vue b/lnbits/templates/components/lnbits-manage-extension-list.vue index 6705d6dc3..3d4459813 100644 --- a/lnbits/templates/components/lnbits-manage-extension-list.vue +++ b/lnbits/templates/components/lnbits-manage-extension-list.vue @@ -18,13 +18,18 @@ - + + @@ -34,7 +39,7 @@