fix: link
This commit is contained in:
@@ -144,6 +144,7 @@ class UserExtension(BaseModel):
|
|||||||
class Extension(BaseModel):
|
class Extension(BaseModel):
|
||||||
code: str
|
code: str
|
||||||
is_valid: bool
|
is_valid: bool
|
||||||
|
is_wasm: bool = False
|
||||||
name: str | None = None
|
name: str | None = None
|
||||||
short_description: str | None = None
|
short_description: str | None = None
|
||||||
tile: str | None = None
|
tile: str | None = None
|
||||||
@@ -167,6 +168,7 @@ class Extension(BaseModel):
|
|||||||
return Extension(
|
return Extension(
|
||||||
code=ext_info.id,
|
code=ext_info.id,
|
||||||
is_valid=True,
|
is_valid=True,
|
||||||
|
is_wasm=ext_info.is_wasm,
|
||||||
name=ext_info.name,
|
name=ext_info.name,
|
||||||
short_description=ext_info.short_description,
|
short_description=ext_info.short_description,
|
||||||
tile=ext_info.icon,
|
tile=ext_info.icon,
|
||||||
@@ -400,6 +402,18 @@ class InstallableExtension(BaseModel):
|
|||||||
return False
|
return False
|
||||||
return self.meta.pay_to_enable.required is True
|
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):
|
async def download_archive(self):
|
||||||
logger.info(f"Downloading extension {self.name} ({self.installed_version}).")
|
logger.info(f"Downloading extension {self.name} ({self.installed_version}).")
|
||||||
ext_zip_file = self.zip_path
|
ext_zip_file = self.zip_path
|
||||||
|
|||||||
@@ -35,6 +35,18 @@ window.app.component('lnbits-manage-extension-list', {
|
|||||||
.toLocaleLowerCase()
|
.toLocaleLowerCase()
|
||||||
.includes(this.searchTerm.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() {
|
async created() {
|
||||||
|
|||||||
@@ -18,13 +18,18 @@
|
|||||||
<q-item
|
<q-item
|
||||||
v-for="extension in userExtensions"
|
v-for="extension in userExtensions"
|
||||||
clickable
|
clickable
|
||||||
:active="$route.path.startsWith('/' + extension.code)"
|
:active="extensionActive(extension)"
|
||||||
tag="a"
|
tag="a"
|
||||||
:to="'/' + extension.code + '/'"
|
:to="extensionUrl(extension)"
|
||||||
>
|
>
|
||||||
<q-item-section side>
|
<q-item-section side>
|
||||||
<q-avatar size="md">
|
<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-avatar>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
@@ -34,7 +39,7 @@
|
|||||||
</q-item-section>
|
</q-item-section>
|
||||||
<q-item-section
|
<q-item-section
|
||||||
side
|
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-icon name="chevron_right" color="grey-5" size="md"></q-icon>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
|
|||||||
Reference in New Issue
Block a user