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. 10
      electrum/gui/qml/components/AddressDetails.qml
  2. 10
      electrum/gui/qml/qeaddressdetails.py

10
electrum/gui/qml/components/AddressDetails.qml

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

10
electrum/gui/qml/qeaddressdetails.py

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

Loading…
Cancel
Save