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 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):
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user