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
|
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)
|
||||||
@pyqtSlot(QEAmount, str, int, bool)
|
@pyqtSlot(QEAmount, str, int, bool)
|
||||||
@pyqtSlot(QEAmount, str, int, bool, bool)
|
@pyqtSlot(QEAmount, str, int, bool, bool)
|
||||||
@pyqtSlot(QEAmount, str, int, bool, 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):
|
def createRequest(self, amount: QEAmount, message: str, expiration: int, ignore_gap: bool = False, reuse_address: bool = False):
|
||||||
|
self._delete_expired_requests()
|
||||||
try:
|
try:
|
||||||
if self.wallet.lnworker and self.wallet.lnworker.channels:
|
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)
|
# 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)
|
||||||
@pyqtSlot(bool, bool)
|
@pyqtSlot(bool, bool)
|
||||||
def createDefaultRequest(self, ignore_gap: bool = False, reuse_address: bool = False):
|
def createDefaultRequest(self, ignore_gap: bool = False, reuse_address: bool = False):
|
||||||
|
self._delete_expired_requests()
|
||||||
try:
|
try:
|
||||||
default_expiry = self.wallet.config.get('request_expiry', PR_DEFAULT_EXPIRATION_WHEN_CREATING)
|
default_expiry = self.wallet.config.get('request_expiry', PR_DEFAULT_EXPIRATION_WHEN_CREATING)
|
||||||
if self.wallet.lnworker and self.wallet.lnworker.channels:
|
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)
|
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(_("Import requests"), self.window.import_requests)
|
||||||
menu.addAction(_("Export requests"), self.window.export_requests)
|
menu.addAction(_("Export requests"), self.window.export_requests)
|
||||||
|
menu.addAction(_("Delete expired requests"), self.request_list.delete_expired_requests)
|
||||||
|
|
||||||
# layout
|
# layout
|
||||||
vbox_g = QVBoxLayout()
|
vbox_g = QVBoxLayout()
|
||||||
|
|||||||
@@ -208,10 +208,15 @@ class RequestList(MyTreeView):
|
|||||||
menu.exec_(self.viewport().mapToGlobal(position))
|
menu.exec_(self.viewport().mapToGlobal(position))
|
||||||
|
|
||||||
def delete_requests(self, keys):
|
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:
|
for key in keys:
|
||||||
self.wallet.delete_request(key, write_to_disk=False)
|
|
||||||
self.delete_item(key)
|
self.delete_item(key)
|
||||||
self.wallet.save_db()
|
|
||||||
self.receive_tab.do_clear()
|
self.receive_tab.do_clear()
|
||||||
|
|
||||||
def set_visibility_of_columns(self):
|
def set_visibility_of_columns(self):
|
||||||
|
|||||||
@@ -2611,6 +2611,17 @@ class Abstract_Wallet(ABC, Logger, EventListener):
|
|||||||
out.sort(key=lambda x: x.time)
|
out.sort(key=lambda x: x.time)
|
||||||
return out
|
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
|
@abstractmethod
|
||||||
def get_fingerprint(self) -> str:
|
def get_fingerprint(self) -> str:
|
||||||
"""Returns a string that can be used to identify this wallet.
|
"""Returns a string that can be used to identify this wallet.
|
||||||
|
|||||||
Reference in New Issue
Block a user