Browse Source

qml: handle exception more gracefully when attempting to delete last address from imported wallet

master
Sander van Grieken 2 years ago
parent
commit
291f0ce235
No known key found for this signature in database
GPG Key ID: 9BCF8209EA402EBA
  1. 14
      electrum/gui/qml/components/AddressDetails.qml
  2. 12
      electrum/gui/qml/qeaddressdetails.py

14
electrum/gui/qml/components/AddressDetails.qml

@ -315,9 +315,11 @@ Pane {
yesno: true
})
confirmdialog.accepted.connect(function () {
addressdetails.deleteAddress()
addressDeleted()
app.stack.pop()
var success = addressdetails.deleteAddress()
if (success) {
addressDeleted()
app.stack.pop()
}
})
confirmdialog.open()
}
@ -335,5 +337,11 @@ Pane {
onAuthRequired: (method, authMessage) => {
app.handleAuthRequired(addressdetails, method, authMessage)
}
onAddressDeleteFailed: (message) => {
var dialog = app.messageDialog.createObject(root, {
text: message
})
dialog.open()
}
}
}

12
electrum/gui/qml/qeaddressdetails.py

@ -1,6 +1,7 @@
from PyQt6.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject
from electrum.logging import get_logger
from electrum.util import UserFacingException
from .auth import auth_protect, AuthMixin
from .qetransactionlistmodel import QETransactionListModel
@ -12,6 +13,7 @@ class QEAddressDetails(AuthMixin, QObject):
_logger = get_logger(__name__)
detailsChanged = pyqtSignal()
addressDeleteFailed = pyqtSignal([str], arguments=['message'])
def __init__(self, parent=None):
super().__init__(parent)
@ -84,7 +86,6 @@ class QEAddressDetails(AuthMixin, QObject):
def canDelete(self):
return self._candelete
frozenChanged = pyqtSignal()
@pyqtProperty(bool, notify=frozenChanged)
def isFrozen(self):
@ -131,10 +132,15 @@ class QEAddressDetails(AuthMixin, QObject):
self.detailsChanged.emit()
@pyqtSlot()
@pyqtSlot(result=bool)
def deleteAddress(self):
assert self.canDelete
self._wallet.wallet.delete_address(self._address)
try:
self._wallet.wallet.delete_address(self._address)
except UserFacingException as e:
self.addressDeleteFailed.emit(str(e))
return False
return True
def update(self):
if self._wallet is None:

Loading…
Cancel
Save