diff --git a/models.py b/models.py index ff8c657..0b4b910 100644 --- a/models.py +++ b/models.py @@ -47,6 +47,11 @@ class WithdrawLink(BaseModel): "Example: lnurlw://${window.location.hostname}/lnurlw/${id}" ), ) + lnurl_url: str | None = Field( + default=None, + no_database=True, + description="The raw LNURL callback URL (use for QR code generation)", + ) @property def is_spent(self) -> bool: diff --git a/static/js/index.js b/static/js/index.js index bcfa832..a5f4dbf 100644 --- a/static/js/index.js +++ b/static/js/index.js @@ -138,7 +138,7 @@ window.app = Vue.createApp({ const link = _.findWhere(this.withdrawLinks, {id: linkId}) this.qrCodeDialog.data = _.clone(link) this.qrCodeDialog.show = true - this.activeUrl = `${window.location.origin}/withdraw/api/v1/lnurl/${link.unique_hash}` + this.activeUrl = link.lnurl_url }, openUpdateDialog(linkId) { let link = _.findWhere(this.withdrawLinks, {id: linkId}) diff --git a/templates/withdraw/display.html b/templates/withdraw/display.html index 4d06e11..f9fbd53 100644 --- a/templates/withdraw/display.html +++ b/templates/withdraw/display.html @@ -55,7 +55,7 @@
data() { return { spent: {{ 'true' if spent else 'false' }}, - url: `${window.location.origin}/withdraw/api/v1/lnurl/{{ unique_hash }}`, + url: '{{ lnurl_url }}', lnurl: '', nfcTagWriting: false } diff --git a/views.py b/views.py index ba48a5d..4fc06e3 100644 --- a/views.py +++ b/views.py @@ -33,12 +33,20 @@ async def display(request: Request, link_id): status_code=HTTPStatus.NOT_FOUND, detail="Withdraw link does not exist." ) + try: + lnurl = create_lnurl(link, request) + except ValueError as exc: + raise HTTPException( + status_code=HTTPStatus.INTERNAL_SERVER_ERROR, + detail=str(exc), + ) from exc + return withdraw_renderer().TemplateResponse( "withdraw/display.html", { "request": request, "spent": link.is_spent, - "unique_hash": link.unique_hash, + "lnurl_url": str(lnurl.url), }, ) diff --git a/views_api.py b/views_api.py index c80e744..514372d 100644 --- a/views_api.py +++ b/views_api.py @@ -45,6 +45,7 @@ async def api_links( detail=str(exc), ) from exc linkk.lnurl = str(lnurl.bech32) + linkk.lnurl_url = str(lnurl.url) return links @@ -75,6 +76,7 @@ async def api_link_retrieve( detail=str(exc), ) from exc link.lnurl = str(lnurl.bech32) + link.lnurl_url = str(lnurl.url) return link @@ -166,6 +168,7 @@ async def api_link_create_or_update( ) from exc link.lnurl = str(lnurl.bech32) + link.lnurl_url = str(lnurl.url) return link