[feat] Extension details page (#2544)
* feat: add empty dialog * feat: add `details_link` field for extension * feat: show info icon if `details_link` present * feat: add extension details endpoint * feat: first details page * feat: carousel working * feat: full screen * fix: layout * fix: repo site * fix: release icon * fix: repo link * feat: terms and conditions partial * chore: fix typing * fix: info icon layout * chore: add try-catch * feat: layout improvements * feat: add video link * fix: show terms and conditions * chore: code format * feat: add `details_link` * fix: github release details * feat: add close button * chore: code clean-up * chore: revert some changes * feat: i18n * chore: `make bundle` * chore: make bundle * feat: terms and conditions is a link now
This commit is contained in:
@@ -37,6 +37,7 @@ from lnbits.extension_manager import (
|
||||
ReleasePaymentInfo,
|
||||
UserExtensionInfo,
|
||||
fetch_github_release_config,
|
||||
fetch_release_details,
|
||||
fetch_release_payment_info,
|
||||
get_valid_extensions,
|
||||
)
|
||||
@@ -128,6 +129,35 @@ async def api_install_extension(
|
||||
) from exc
|
||||
|
||||
|
||||
@extension_router.get("/{ext_id}/details", dependencies=[Depends(check_user_exists)])
|
||||
async def api_extension_details(
|
||||
ext_id: str,
|
||||
details_link: str,
|
||||
):
|
||||
|
||||
try:
|
||||
all_releases = await InstallableExtension.get_extension_releases(ext_id)
|
||||
|
||||
release = next(
|
||||
(r for r in all_releases if r.details_link == details_link), None
|
||||
)
|
||||
assert release, "Details not found for release"
|
||||
|
||||
release_details = await fetch_release_details(details_link)
|
||||
assert release_details, "Cannot fetch details for release"
|
||||
release_details["icon"] = release.icon
|
||||
release_details["repo"] = release.repo
|
||||
return release_details
|
||||
except AssertionError as exc:
|
||||
raise HTTPException(HTTPStatus.BAD_REQUEST, str(exc)) from exc
|
||||
except Exception as exc:
|
||||
logger.warning(exc)
|
||||
raise HTTPException(
|
||||
HTTPStatus.INTERNAL_SERVER_ERROR,
|
||||
f"Failed to get details for extension {ext_id}.",
|
||||
) from exc
|
||||
|
||||
|
||||
@extension_router.put("/{ext_id}/sell")
|
||||
async def api_update_pay_to_enable(
|
||||
ext_id: str,
|
||||
|
||||
Reference in New Issue
Block a user