qml: handle exception more gracefully when attempting to delete last address from imported wallet
This commit is contained in:
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user