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'
```
This commit is contained in:
@@ -26,7 +26,7 @@
|
|||||||
import os
|
import os
|
||||||
import asyncio
|
import asyncio
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING, Optional
|
||||||
|
|
||||||
from aiohttp import web
|
from aiohttp import web
|
||||||
from aiorpcx import NetAddress
|
from aiorpcx import NetAddress
|
||||||
@@ -50,7 +50,9 @@ class PayServerPlugin(BasePlugin):
|
|||||||
self.config = config
|
self.config = config
|
||||||
self.server = None
|
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
|
return self.server.base_url + self.server.root + '/pay?id=' + key
|
||||||
|
|
||||||
@hook
|
@hook
|
||||||
@@ -65,7 +67,8 @@ class PayServerPlugin(BasePlugin):
|
|||||||
|
|
||||||
@hook
|
@hook
|
||||||
def wallet_export_request(self, d, key):
|
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):
|
class PayServer(Logger, EventListener):
|
||||||
|
|||||||
@@ -42,9 +42,13 @@ class Plugin(PayServerPlugin):
|
|||||||
partial(self.settings_dialog, window))
|
partial(self.settings_dialog, window))
|
||||||
|
|
||||||
def settings_dialog(self, window: WindowModalDialog):
|
def settings_dialog(self, window: WindowModalDialog):
|
||||||
|
if self.config.get('offline'):
|
||||||
|
window.show_error(_("You are offline."))
|
||||||
|
return
|
||||||
d = WindowModalDialog(window, _("PayServer Settings"))
|
d = WindowModalDialog(window, _("PayServer Settings"))
|
||||||
form = QtWidgets.QFormLayout(None)
|
form = QtWidgets.QFormLayout(None)
|
||||||
addr = self.config.get('payserver_address', 'localhost:8080')
|
addr = self.config.get('payserver_address', 'localhost:8080')
|
||||||
|
assert self.server
|
||||||
url = self.server.base_url + self.server.root + '/create_invoice.html'
|
url = self.server.base_url + self.server.root + '/create_invoice.html'
|
||||||
self.help_button = QtWidgets.QPushButton('View sample invoice creation form')
|
self.help_button = QtWidgets.QPushButton('View sample invoice creation form')
|
||||||
self.help_button.clicked.connect(lambda: webopen(url))
|
self.help_button.clicked.connect(lambda: webopen(url))
|
||||||
|
|||||||
Reference in New Issue
Block a user