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