44
55#include < qml/walletqmlcontroller.h>
66
7+ #include < qml/models/walletqmlmodel.h>
8+
79#include < interfaces/node.h>
810#include < support/allocators/secure.h>
911#include < wallet/walletutil.h>
@@ -37,19 +39,19 @@ WalletQmlController::~WalletQmlController()
3739
3840void WalletQmlController::setSelectedWallet (QString path)
3941{
42+ if (!m_wallets.empty ()) {
43+ for (WalletQmlModel* wallet : m_wallets) {
44+ if (wallet->name () == path) {
45+ m_selected_wallet = wallet;
46+ Q_EMIT selectedWalletChanged ();
47+ return ;
48+ }
49+ }
50+ }
51+
4052 QTimer::singleShot (0 , m_worker, [this , path = path.toStdString ()]() {
4153 std::vector<bilingual_str> warning_message;
4254 auto wallet{m_node.walletLoader ().loadWallet (path, warning_message)};
43- if (wallet.has_value ()) {
44- auto wallet_model = new WalletQmlModel (std::move (wallet.value ()));
45- wallet_model->moveToThread (this ->thread ());
46- {
47- QMutexLocker locker (&m_wallets_mutex);
48- m_selected_wallet = wallet_model;
49- m_wallets.push_back (m_selected_wallet);
50- }
51- Q_EMIT selectedWalletChanged ();
52- }
5355 });
5456}
5557
@@ -85,20 +87,22 @@ void WalletQmlController::createSingleSigWallet(const QString &name, const QStri
8587
8688void WalletQmlController::handleLoadWallet (std::unique_ptr<interfaces::Wallet> wallet)
8789{
88- {
89- QMutexLocker locker (&m_wallets_mutex);
90- if (!m_wallets. empty ()) {
91- QString name = QString::fromStdString (wallet-> getWalletName ());
92- for (WalletQmlModel* wallet_model : m_wallets ) {
93- if (wallet_model-> name () == name) {
94- return ;
95- }
90+ QMutexLocker locker (&m_wallets_mutex);
91+ if (!m_wallets. empty ()) {
92+ QString name = QString::fromStdString (wallet-> getWalletName ());
93+ for (WalletQmlModel* wallet_model : m_wallets) {
94+ if ( wallet_model-> name () == name ) {
95+ m_selected_wallet = wallet_model;
96+ Q_EMIT selectedWalletChanged () ;
97+ return ;
9698 }
9799 }
98-
99- m_selected_wallet = new WalletQmlModel (std::move (wallet));
100- m_wallets.push_back (m_selected_wallet);
101100 }
101+
102+ auto wallet_model = new WalletQmlModel (std::move (wallet));
103+ wallet_model->moveToThread (this ->thread ());
104+ m_selected_wallet = wallet_model;
105+ m_wallets.push_back (m_selected_wallet);
102106 Q_EMIT selectedWalletChanged ();
103107}
104108
@@ -110,6 +114,10 @@ void WalletQmlController::initialize()
110114
111115 auto wallets = m_node.walletLoader ().getWallets ();
112116 for (auto & wallet : wallets) {
113- handleLoadWallet (std::move (wallet));
117+ m_wallets.push_back (new WalletQmlModel (std::move (wallet)));
118+ }
119+ if (!m_wallets.empty ()) {
120+ m_selected_wallet = m_wallets.front ();
121+ Q_EMIT selectedWalletChanged ();
114122 }
115123}
0 commit comments