From 5fbd1f08c46fd223e34dc233b1254a01e25e0070 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Sat, 5 Jun 2021 15:20:05 -0300 Subject: [PATCH] lnurlp: only send success_action when it exists. --- lnbits/extensions/lnurlp/lnurl.py | 15 +++++++++------ lnbits/extensions/lnurlp/models.py | 15 ++++++++++----- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/lnbits/extensions/lnurlp/lnurl.py b/lnbits/extensions/lnurlp/lnurl.py index 5d8bcf08d..13a5e85a3 100644 --- a/lnbits/extensions/lnurlp/lnurl.py +++ b/lnbits/extensions/lnurlp/lnurl.py @@ -95,10 +95,13 @@ async def api_lnurl_callback(link_id): extra={"tag": "lnurlp", "link": link.id, "comment": comment}, ) - resp = LnurlPayActionResponse( - pr=payment_request, - success_action=link.success_action(payment_hash), - routes=[], - ) + resp = { + "routes": [], + "pr": payment_request, + } - return jsonify(resp.dict()), HTTPStatus.OK + success_action = link.success_action(payment_hash) + if success_action: + resp["success_action"] = success_action + + return jsonify(), HTTPStatus.OK diff --git a/lnbits/extensions/lnurlp/models.py b/lnbits/extensions/lnurlp/models.py index 9d0e4fd97..e02d7ea6c 100644 --- a/lnbits/extensions/lnurlp/models.py +++ b/lnbits/extensions/lnurlp/models.py @@ -5,7 +5,6 @@ from typing import NamedTuple, Optional, Dict from sqlite3 import Row from lnurl import Lnurl, encode as lnurl_encode # type: ignore from lnurl.types import LnurlPayMetadata # type: ignore -from lnurl.models import LnurlPaySuccessAction, MessageAction, UrlAction # type: ignore class PayLink(NamedTuple): @@ -36,15 +35,21 @@ class PayLink(NamedTuple): def lnurlpay_metadata(self) -> LnurlPayMetadata: return LnurlPayMetadata(json.dumps([["text/plain", self.description]])) - def success_action(self, payment_hash: str) -> Optional[LnurlPaySuccessAction]: + def success_action(self, payment_hash: str) -> Optional[Dict]: if self.success_url: url: ParseResult = urlparse(self.success_url) qs: Dict = parse_qs(url.query) qs["payment_hash"] = payment_hash url = url._replace(query=urlencode(qs, doseq=True)) - raw: str = urlunparse(url) - return UrlAction(url=raw, description=self.success_text) + return { + "tag": "url", + "description": self.success_text or "~", + "url": urlunparse(url), + } elif self.success_text: - return MessageAction(message=self.success_text) + return { + "tag": "message", + "message": self.success_text, + } else: return None