diff --git a/electrum/plugins/payserver/payserver.py b/electrum/plugins/payserver/payserver.py index 7ddbdfcc5..2e45401de 100644 --- a/electrum/plugins/payserver/payserver.py +++ b/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): diff --git a/electrum/plugins/payserver/qt.py b/electrum/plugins/payserver/qt.py index 7d43e6115..2e485e62a 100644 --- a/electrum/plugins/payserver/qt.py +++ b/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))