88 lines
2.6 KiB
Python
88 lines
2.6 KiB
Python
from http import HTTPStatus
|
|
|
|
from fastapi import Depends, Request
|
|
from fastapi.templating import Jinja2Temps
|
|
from starlette.exceptions import HTTPException
|
|
from starlette.responses import HTMLResponse
|
|
|
|
from lnbits.core.models import User
|
|
from lnbits.decorators import check_user_exists
|
|
from lnbits.settings import settings
|
|
|
|
from . import temp_ext, template_renderer
|
|
from .crud import get_temp
|
|
|
|
temps = Jinja2Temps(directory="temps")
|
|
|
|
|
|
#######################################
|
|
##### ADD YOUR PAGE ENDPOINTS HERE ####
|
|
#######################################
|
|
|
|
|
|
# Backend admin page
|
|
|
|
@temp_ext.get("/", response_class=HTMLResponse)
|
|
async def index(request: Request, user: User = Depends(check_user_exists)):
|
|
return template_renderer().TempResponse(
|
|
"temp/index.html", {"request": request, "user": user.dict()}
|
|
)
|
|
|
|
|
|
# Frontend shareable page
|
|
|
|
@temp_ext.get("/{temp_id}")
|
|
async def temp(request: Request, temp_id):
|
|
temp = await get_temp(temp_id)
|
|
if not temp:
|
|
raise HTTPException(
|
|
status_code=HTTPStatus.NOT_FOUND, detail="Temp does not exist."
|
|
)
|
|
return template_renderer().TempResponse(
|
|
"temp/temp.html",
|
|
{
|
|
"request": request,
|
|
"temp": temp,
|
|
"withdrawamtemps": temp.withdrawamtemps,
|
|
"web_manifest": f"/temp/manifest/{temp_id}.webmanifest",
|
|
},
|
|
)
|
|
|
|
|
|
# Manifest, customise or remove manifest completely
|
|
|
|
@temp_ext.get("/manifest/{temp_id}.webmanifest")
|
|
async def manifest(temp_id: str):
|
|
temp= await get_temp(temp_id)
|
|
if not temp:
|
|
raise HTTPException(
|
|
status_code=HTTPStatus.NOT_FOUND, detail="Temp does not exist."
|
|
)
|
|
|
|
return {
|
|
"short_name": settings.lnbits_site_title,
|
|
"name": temp.name + " - " + settings.lnbits_site_title,
|
|
"icons": [
|
|
{
|
|
"src": settings.lnbits_custom_logo
|
|
if settings.lnbits_custom_logo
|
|
else "https://cdn.jsdelivr.net/gh/lnbits/lnbits@0.3.0/docs/logos/lnbits.png",
|
|
"type": "image/png",
|
|
"sizes": "900x900",
|
|
}
|
|
],
|
|
"start_url": "/temp/" + temp_id,
|
|
"background_color": "#1F2234",
|
|
"description": "Minimal extension to build on",
|
|
"display": "standalone",
|
|
"scope": "/temp/" + temp_id,
|
|
"theme_color": "#1F2234",
|
|
"shortcuts": [
|
|
{
|
|
"name": temp.name + " - " + settings.lnbits_site_title,
|
|
"short_name": temp.name,
|
|
"description": temp.name + " - " + settings.lnbits_site_title,
|
|
"url": "/temp/" + temp_id,
|
|
}
|
|
],
|
|
}
|