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
|
yesno: true
|
||||||
})
|
})
|
||||||
confirmdialog.accepted.connect(function () {
|
confirmdialog.accepted.connect(function () {
|
||||||
addressdetails.deleteAddress()
|
var success = addressdetails.deleteAddress()
|
||||||
addressDeleted()
|
if (success) {
|
||||||
app.stack.pop()
|
addressDeleted()
|
||||||
|
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()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
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):
|
def update(self):
|
||||||
if self._wallet is None:
|
if self._wallet is None:
|
||||||
|
|||||||
Reference in New Issue
Block a user