feat: modernize error page (#2949)
* can't figure this out! * raise here so it gets picked up by exceptions * add few more info for error rendering * add a few more checks for browser not fail safe just one more layer * cleaner error display ... hopefully * add go to extension * keep buttons add go to extension * feat: identify extensions that are not installed * fix: status code * fix: full path * add account/logout button if 401 prevent getting stuck * fix: ext access * fix user button * fix: 404 page * fix: json 404 response * fix: dumb rendering * fix: `/api` request always json * fix: extension api path * test: check regtest * test: investgate * something made ws slower? * fix: change error code --------- Co-authored-by: Vlad Stan <stan.v.vlad@gmail.com> Co-authored-by: dni ⚡ <office@dnilabs.com> Co-authored-by: Arc <33088785+arcbtc@users.noreply.github.com>
This commit is contained in:
co-authored by
Vlad Stan
dni ⚡
Arc
parent
eeca7de10d
commit
4511891297
@@ -586,7 +586,6 @@ class InstallableExtension(BaseModel):
|
||||
cls,
|
||||
) -> list[InstallableExtension]:
|
||||
extension_list: list[InstallableExtension] = []
|
||||
extension_id_list: list[str] = []
|
||||
|
||||
for url in settings.lnbits_extensions_manifests:
|
||||
try:
|
||||
@@ -607,7 +606,6 @@ class InstallableExtension(BaseModel):
|
||||
meta.featured = ext.id in manifest.featured
|
||||
ext.meta = meta
|
||||
extension_list += [ext]
|
||||
extension_id_list += [ext.id]
|
||||
|
||||
for e in manifest.extensions:
|
||||
release = ExtensionRelease.from_explicit_release(url, e)
|
||||
@@ -623,10 +621,10 @@ class InstallableExtension(BaseModel):
|
||||
meta.featured = ext.id in manifest.featured
|
||||
ext.meta = meta
|
||||
extension_list += [ext]
|
||||
extension_id_list += [e.id]
|
||||
except Exception as e:
|
||||
logger.warning(f"Manifest {url} failed with '{e!s}'")
|
||||
|
||||
settings.lnbits_all_extensions_ids = {e.id for e in extension_list}
|
||||
return extension_list
|
||||
|
||||
@classmethod
|
||||
|
||||
@@ -16,6 +16,7 @@ from lnbits.core.crud.payments import get_payments_status_count
|
||||
from lnbits.core.crud.users import get_accounts
|
||||
from lnbits.core.crud.wallets import get_wallets_count
|
||||
from lnbits.core.models import AuditEntry, Payment
|
||||
from lnbits.core.models.extensions import InstallableExtension
|
||||
from lnbits.core.models.notifications import NotificationType
|
||||
from lnbits.core.services import (
|
||||
send_payment_notification,
|
||||
@@ -62,6 +63,13 @@ async def run_by_the_minute_tasks():
|
||||
except Exception as ex:
|
||||
logger.error(ex)
|
||||
|
||||
if minute_counter % 60 == 0:
|
||||
try:
|
||||
# initialize the list of all extensions
|
||||
await InstallableExtension.get_installable_extensions()
|
||||
except Exception as ex:
|
||||
logger.error(ex)
|
||||
|
||||
minute_counter += 1
|
||||
await asyncio.sleep(60)
|
||||
|
||||
|
||||
@@ -50,12 +50,9 @@ async def home(request: Request, lightning: str = ""):
|
||||
@generic_router.get("/first_install", response_class=HTMLResponse)
|
||||
async def first_install(request: Request):
|
||||
if not settings.first_install:
|
||||
return template_renderer().TemplateResponse(
|
||||
request,
|
||||
"error.html",
|
||||
{
|
||||
"err": "Super user account has already been configured.",
|
||||
},
|
||||
raise HTTPException(
|
||||
status_code=HTTPStatus.BAD_REQUEST,
|
||||
detail="Super user account has already been configured.",
|
||||
)
|
||||
return template_renderer().TemplateResponse(
|
||||
request,
|
||||
@@ -180,8 +177,9 @@ async def wallet(
|
||||
wallet = user.wallets[0]
|
||||
|
||||
if not wallet or wallet.deleted:
|
||||
return template_renderer().TemplateResponse(
|
||||
request, "error.html", {"err": "Wallet not found"}, HTTPStatus.NOT_FOUND
|
||||
raise HTTPException(
|
||||
status_code=HTTPStatus.NOT_FOUND,
|
||||
detail="Wallet not found",
|
||||
)
|
||||
context = {
|
||||
"user": user.json(),
|
||||
|
||||
Reference in New Issue
Block a user