Browse Source

payserver: better handle running with --offline

```
 19.70 | E | plugin | Plugin error. plugin: payserver, hook: wallet_export_request
Traceback (most recent call last):
  File "/home/user/wspace/electrum/electrum/plugin.py", line 227, in run_hook
    r = f(*args)
  File "/home/user/wspace/electrum/electrum/plugins/payserver/payserver.py", line 69, in wallet_export_request
    d['view_url'] = self.view_url(key)
  File "/home/user/wspace/electrum/electrum/plugins/payserver/payserver.py", line 55, in view_url
    return self.server.base_url + self.server.root + '/pay?id=' + key
AttributeError: 'NoneType' object has no attribute 'base_url'
```
```
 23.22 | E | gui.qt.exception_window.Exception_Hook | exception caught by crash reporter
Traceback (most recent call last):
  File "/home/user/wspace/electrum/electrum/plugins/payserver/qt.py", line 48, in settings_dialog
    url = self.server.base_url + self.server.root + '/create_invoice.html'
AttributeError: 'NoneType' object has no attribute 'base_url'
```
master
SomberNight 3 years ago
parent
commit
b20933de6d
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
  1. 9
      electrum/plugins/payserver/payserver.py
  2. 4
      electrum/plugins/payserver/qt.py

9
electrum/plugins/payserver/payserver.py

@ -26,7 +26,7 @@
import os
import asyncio
from collections import defaultdict
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, Optional
from aiohttp import web
from aiorpcx import NetAddress
@ -50,7 +50,9 @@ class PayServerPlugin(BasePlugin):
self.config = config
self.server = None
def view_url(self, key):
def view_url(self, key) -> Optional[str]:
if not self.server:
return None
return self.server.base_url + self.server.root + '/pay?id=' + key
@hook
@ -65,7 +67,8 @@ class PayServerPlugin(BasePlugin):
@hook
def wallet_export_request(self, d, key):
d['view_url'] = self.view_url(key)
if view_url := self.view_url(key):
d['view_url'] = view_url
class PayServer(Logger, EventListener):

4
electrum/plugins/payserver/qt.py

@ -42,9 +42,13 @@ class Plugin(PayServerPlugin):
partial(self.settings_dialog, window))
def settings_dialog(self, window: WindowModalDialog):
if self.config.get('offline'):
window.show_error(_("You are offline."))
return
d = WindowModalDialog(window, _("PayServer Settings"))
form = QtWidgets.QFormLayout(None)
addr = self.config.get('payserver_address', 'localhost:8080')
assert self.server
url = self.server.base_url + self.server.root + '/create_invoice.html'
self.help_button = QtWidgets.QPushButton('View sample invoice creation form')
self.help_button.clicked.connect(lambda: webopen(url))

Loading…
Cancel
Save