Skip to content

Commit 0553ab7

Browse files
committed
follow-up prev
PaymentRequest.error is really not intuitive.........
1 parent d2de8de commit 0553ab7

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

electrum/gui/qt/main_window.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
from functools import partial
3838
import queue
3939
import asyncio
40+
from typing import Optional
4041

4142
from PyQt5.QtGui import QPixmap, QKeySequence, QIcon, QCursor
4243
from PyQt5.QtCore import Qt, QRect, QStringListModel, QSize, pyqtSignal
@@ -71,6 +72,7 @@
7172
from electrum.exchange_rate import FxThread
7273
from electrum.simple_config import SimpleConfig
7374
from electrum.logging import Logger
75+
from electrum.paymentrequest import PR_PAID
7476

7577
from .exception_window import Exception_Hook
7678
from .amountedit import AmountEdit, BTCAmountEdit, MyLineEdit, FeerateEdit
@@ -109,9 +111,6 @@ def keyPressEvent(self, e):
109111
self.func()
110112

111113

112-
from electrum.paymentrequest import PR_PAID
113-
114-
115114
class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
116115

117116
payment_request_ok_signal = pyqtSignal()
@@ -141,7 +140,7 @@ def __init__(self, gui_object, wallet: Abstract_Wallet):
141140
self.tray = gui_object.tray
142141
self.app = gui_object.app
143142
self.cleaned_up = False
144-
self.payment_request = None
143+
self.payment_request = None # type: Optional[paymentrequest.PaymentRequest]
145144
self.checking_accounts = False
146145
self.qr_window = None
147146
self.not_enough_funds = False
@@ -1604,8 +1603,6 @@ def check_send_tab_outputs_and_show_errors(self, outputs) -> bool:
16041603
"""
16051604
pr = self.payment_request
16061605
if pr:
1607-
if pr.error:
1608-
return True
16091606
if pr.has_expired():
16101607
self.show_error(_('Payment request has expired'))
16111608
return True

electrum/paymentrequest.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import time
2828
import traceback
2929
import json
30+
from typing import Optional
3031

3132
import certifi
3233
import urllib.parse
@@ -106,15 +107,15 @@ async def get_payment_request(url: str) -> 'PaymentRequest':
106107
else:
107108
data = None
108109
error = f"Unknown scheme for payment request. URL: {url}"
109-
pr = PaymentRequest(data, error)
110+
pr = PaymentRequest(data, error=error)
110111
return pr
111112

112113

113114
class PaymentRequest:
114115

115-
def __init__(self, data, error=None):
116+
def __init__(self, data, *, error=None):
116117
self.raw = data
117-
self.error = error
118+
self.error = error # FIXME overloaded and also used when 'verify' succeeds
118119
self.parse(data)
119120
self.requestor = None # known after verify
120121
self.tx = None
@@ -235,7 +236,9 @@ def verify_dnssec(self, pr, contacts):
235236
self.error = "unknown algo"
236237
return False
237238

238-
def has_expired(self):
239+
def has_expired(self) -> Optional[bool]:
240+
if not hasattr(self, 'details'):
241+
return None
239242
return self.details.expires and self.details.expires < int(time.time())
240243

241244
def get_expiration_date(self):

0 commit comments

Comments
 (0)