fix: link

This commit is contained in:
Vlad Stan
2026-07-01 16:57:19 +03:00
parent 850e1c72f6
commit f563c232ad
3 changed files with 35 additions and 4 deletions
+14
View File
@@ -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
@@ -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() {
@@ -18,13 +18,18 @@
<q-item
v-for="extension in userExtensions"
clickable
:active="$route.path.startsWith('/' + extension.code)"
:active="extensionActive(extension)"
tag="a"
:to="'/' + extension.code + '/'"
:to="extensionUrl(extension)"
>
<q-item-section side>
<q-avatar size="md">
<q-img :src="extension.tile" style="max-width: 20px"></q-img>
<img
v-if="extension.tile"
:src="extension.tile"
style="width: 20px; height: 20px; object-fit: contain"
/>
<q-icon v-else name="extension" size="20px"></q-icon>
</q-avatar>
</q-item-section>
<q-item-section>
@@ -34,7 +39,7 @@
</q-item-section>
<q-item-section
side
v-show="$route.path.startsWith('/' + extension.code)"
v-show="extensionActive(extension)"
>
<q-icon name="chevron_right" color="grey-5" size="md"></q-icon>
</q-item-section>