fix bug where undefined wallet instance crashes app
This commit is contained in:
@@ -198,6 +198,7 @@ ApplicationWindow
|
|||||||
Connections {
|
Connections {
|
||||||
target: Daemon
|
target: Daemon
|
||||||
function onWalletRequiresPassword() {
|
function onWalletRequiresPassword() {
|
||||||
|
console.log('wallet requires password')
|
||||||
app.stack.push(Qt.resolvedUrl("OpenWallet.qml"), {"path": Daemon.path})
|
app.stack.push(Qt.resolvedUrl("OpenWallet.qml"), {"path": Daemon.path})
|
||||||
// var dialog = _openWallet.createObject(app)
|
// var dialog = _openWallet.createObject(app)
|
||||||
//dialog.open()
|
//dialog.open()
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ from PyQt5.QtCore import Qt, QAbstractListModel, QModelIndex
|
|||||||
from electrum.util import register_callback, get_new_wallet_name
|
from electrum.util import register_callback, get_new_wallet_name
|
||||||
from electrum.logging import get_logger
|
from electrum.logging import get_logger
|
||||||
from electrum.wallet import Wallet, Abstract_Wallet
|
from electrum.wallet import Wallet, Abstract_Wallet
|
||||||
|
from electrum.storage import WalletStorage
|
||||||
|
|
||||||
from .qewallet import QEWallet
|
from .qewallet import QEWallet
|
||||||
|
|
||||||
@@ -89,26 +90,34 @@ class QEDaemon(QObject):
|
|||||||
walletRequiresPassword = pyqtSignal()
|
walletRequiresPassword = pyqtSignal()
|
||||||
activeWalletsChanged = pyqtSignal()
|
activeWalletsChanged = pyqtSignal()
|
||||||
availableWalletsChanged = pyqtSignal()
|
availableWalletsChanged = pyqtSignal()
|
||||||
|
couldNotOpenFile = pyqtSignal()
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
@pyqtSlot(str)
|
@pyqtSlot(str)
|
||||||
@pyqtSlot(str, str)
|
@pyqtSlot(str, str)
|
||||||
def load_wallet(self, path=None, password=None):
|
def load_wallet(self, path=None, password=None):
|
||||||
self._logger.debug('load wallet ' + str(path))
|
|
||||||
if path == None:
|
if path == None:
|
||||||
path = self.daemon.config.get('gui_last_wallet')
|
self._path = self.daemon.config.get('gui_last_wallet')
|
||||||
self._path = path
|
else:
|
||||||
self._logger.debug('load wallet #2 ' + str(path))
|
self._path = path
|
||||||
if path is not None:
|
if self._path is None:
|
||||||
wallet = self.daemon.load_wallet(path, password)
|
return
|
||||||
self._logger.debug('load wallet #3 ' + str(path))
|
|
||||||
|
self._logger.debug('load wallet ' + str(self._path))
|
||||||
|
try:
|
||||||
|
storage = WalletStorage(self._path)
|
||||||
|
except StorageReadWriteError as e:
|
||||||
|
self.couldNotOpenFile.emit()
|
||||||
|
return
|
||||||
|
|
||||||
|
wallet = self.daemon.load_wallet(self._path, password)
|
||||||
if wallet != None:
|
if wallet != None:
|
||||||
self._loaded_wallets.add_wallet(wallet=wallet)
|
self._loaded_wallets.add_wallet(wallet=wallet)
|
||||||
self._current_wallet = QEWallet(wallet)
|
self._current_wallet = QEWallet(wallet)
|
||||||
self.walletLoaded.emit()
|
self.walletLoaded.emit()
|
||||||
self.daemon.config.save_last_wallet(wallet)
|
self.daemon.config.save_last_wallet(wallet)
|
||||||
else:
|
else:
|
||||||
self._logger.info('fail open wallet')
|
self._logger.info('password required but unset or incorrect')
|
||||||
self.walletRequiresPassword.emit()
|
self.walletRequiresPassword.emit()
|
||||||
|
|
||||||
@pyqtProperty('QString')
|
@pyqtProperty('QString')
|
||||||
|
|||||||
Reference in New Issue
Block a user