From 59aaea47fdefa4dac8dc2695f44334fe09841a56 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Tue, 6 Apr 2021 10:22:37 -0300 Subject: [PATCH 1/3] lndrest: capture the pay error properly. --- lnbits/wallets/lndrest.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/lnbits/wallets/lndrest.py b/lnbits/wallets/lndrest.py index fa46c573..b6746c6b 100644 --- a/lnbits/wallets/lndrest.py +++ b/lnbits/wallets/lndrest.py @@ -102,12 +102,8 @@ class LndRestWallet(Wallet): timeout=180, ) - if r.is_error: - error_message = r.text - try: - error_message = r.json()["error"] - except: - pass + if r.is_error or r.json().get("payment_error"): + error_message = r.json().get("payment_error") or r.text return PaymentResponse(False, None, 0, None, error_message) data = r.json() From 82731dc901780b959d6ebecc4f61be137c8d2884 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Tue, 6 Apr 2021 14:57:51 -0300 Subject: [PATCH 2/3] a special error for when payments fail. --- lnbits/core/services.py | 9 +++++++-- lnbits/core/views/api.py | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lnbits/core/services.py b/lnbits/core/services.py index d623b118..10b33073 100644 --- a/lnbits/core/services.py +++ b/lnbits/core/services.py @@ -29,6 +29,10 @@ from .crud import ( ) +class PaymentFailure(Exception): + pass + + async def create_invoice( *, wallet_id: str, @@ -162,8 +166,9 @@ async def pay_invoice( ) await delete_payment(temp_id, conn=conn) else: - raise Exception( - payment.error_message or "Failed to pay_invoice on backend." + raise PaymentFailure( + payment.error_message + or "Payment failed, but backend didn't give us an error message." ) return invoice.payment_hash diff --git a/lnbits/core/views/api.py b/lnbits/core/views/api.py index 2d1b99a9..02cb788a 100644 --- a/lnbits/core/views/api.py +++ b/lnbits/core/views/api.py @@ -12,7 +12,7 @@ from lnbits import bolt11 from lnbits.decorators import api_check_wallet_key, api_validate_post_request from .. import core_app, db -from ..services import create_invoice, pay_invoice, perform_lnurlauth +from ..services import PaymentFailure, create_invoice, pay_invoice, perform_lnurlauth from ..tasks import sse_listeners @@ -127,6 +127,8 @@ async def api_payments_pay_invoice(): return jsonify({"message": str(e)}), HTTPStatus.BAD_REQUEST except PermissionError as e: return jsonify({"message": str(e)}), HTTPStatus.FORBIDDEN + except PaymentFailure as e: + return jsonify({"message": str(e)}), 520 except Exception as exc: raise exc From c26f6fcbdff391a61dc70d3dd4f670a6d6c032b0 Mon Sep 17 00:00:00 2001 From: davidfrayne Date: Thu, 8 Apr 2021 13:46:52 +0100 Subject: [PATCH 3/3] added meta-tags to base.html to allow fullscreen app launch on mobiles. --- lnbits/templates/base.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lnbits/templates/base.html b/lnbits/templates/base.html index d81cf2a9..59016e99 100644 --- a/lnbits/templates/base.html +++ b/lnbits/templates/base.html @@ -14,6 +14,8 @@ name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> + + {% block head_scripts %}{% endblock %}