QML: auto-delete expired requests. Add action to Qt menu
This commit is contained in:
@@ -611,11 +611,17 @@ class QEWallet(AuthMixin, QObject, QtEventListener):
|
||||
|
||||
return req_key, addr
|
||||
|
||||
def _delete_expired_requests(self):
|
||||
keys = self.wallet.delete_expired_requests()
|
||||
for key in keys:
|
||||
self.requestModel.delete_invoice(key)
|
||||
|
||||
@pyqtSlot(QEAmount, str, int)
|
||||
@pyqtSlot(QEAmount, str, int, bool)
|
||||
@pyqtSlot(QEAmount, str, int, bool, bool)
|
||||
@pyqtSlot(QEAmount, str, int, bool, bool, bool)
|
||||
def createRequest(self, amount: QEAmount, message: str, expiration: int, ignore_gap: bool = False, reuse_address: bool = False):
|
||||
self._delete_expired_requests()
|
||||
try:
|
||||
if self.wallet.lnworker and self.wallet.lnworker.channels:
|
||||
# TODO maybe show a warning if amount exceeds lnworker.num_sats_can_receive (as in kivy)
|
||||
@@ -639,6 +645,7 @@ class QEWallet(AuthMixin, QObject, QtEventListener):
|
||||
@pyqtSlot(bool)
|
||||
@pyqtSlot(bool, bool)
|
||||
def createDefaultRequest(self, ignore_gap: bool = False, reuse_address: bool = False):
|
||||
self._delete_expired_requests()
|
||||
try:
|
||||
default_expiry = self.wallet.config.get('request_expiry', PR_DEFAULT_EXPIRATION_WHEN_CREATING)
|
||||
if self.wallet.lnworker and self.wallet.lnworker.channels:
|
||||
|
||||
@@ -158,6 +158,7 @@ class ReceiveTab(QWidget, MessageBoxMixin, Logger):
|
||||
self.qr_menu_action = menu.addToggle(_("Show QR code window"), self.window.toggle_qr_window)
|
||||
menu.addAction(_("Import requests"), self.window.import_requests)
|
||||
menu.addAction(_("Export requests"), self.window.export_requests)
|
||||
menu.addAction(_("Delete expired requests"), self.request_list.delete_expired_requests)
|
||||
|
||||
# layout
|
||||
vbox_g = QVBoxLayout()
|
||||
|
||||
@@ -208,10 +208,15 @@ class RequestList(MyTreeView):
|
||||
menu.exec_(self.viewport().mapToGlobal(position))
|
||||
|
||||
def delete_requests(self, keys):
|
||||
self.wallet.delete_requests(keys)
|
||||
for key in keys:
|
||||
self.delete_item(key)
|
||||
self.receive_tab.do_clear()
|
||||
|
||||
def delete_expired_requests(self):
|
||||
keys = self.wallet.delete_expired_requests()
|
||||
for key in keys:
|
||||
self.wallet.delete_request(key, write_to_disk=False)
|
||||
self.delete_item(key)
|
||||
self.wallet.save_db()
|
||||
self.receive_tab.do_clear()
|
||||
|
||||
def set_visibility_of_columns(self):
|
||||
|
||||
@@ -2611,6 +2611,17 @@ class Abstract_Wallet(ABC, Logger, EventListener):
|
||||
out.sort(key=lambda x: x.time)
|
||||
return out
|
||||
|
||||
def delete_expired_requests(self):
|
||||
keys = [k for k, v in self._receive_requests.items() if self.get_invoice_status(v) == PR_EXPIRED]
|
||||
self.delete_requests(keys)
|
||||
return keys
|
||||
|
||||
def delete_requests(self, keys):
|
||||
for key in keys:
|
||||
self.delete_request(key, write_to_disk=False)
|
||||
if keys:
|
||||
self.save_db()
|
||||
|
||||
@abstractmethod
|
||||
def get_fingerprint(self) -> str:
|
||||
"""Returns a string that can be used to identify this wallet.
|
||||
|
||||
Reference in New Issue
Block a user