2022-07-15 07:30:16 +00:00
|
|
|
#include "Status/Wallet/WalletController.h"
|
2022-07-26 11:49:03 +00:00
|
|
|
|
2022-07-15 07:30:16 +00:00
|
|
|
#include "NewWalletAccountController.h"
|
2022-07-26 11:49:03 +00:00
|
|
|
#include "AccountAssetsController.h"
|
2022-07-15 07:30:16 +00:00
|
|
|
|
|
|
|
#include <StatusGo/Wallet/WalletApi.h>
|
|
|
|
|
|
|
|
#include <StatusGo/Accounts/AccountsAPI.h>
|
|
|
|
#include <StatusGo/Accounts/Accounts.h>
|
|
|
|
#include <StatusGo/Accounts/accounts_types.h>
|
|
|
|
#include <StatusGo/Metadata/api_response.h>
|
|
|
|
#include <StatusGo/Utils.h>
|
|
|
|
#include <StatusGo/Types.h>
|
|
|
|
|
|
|
|
#include <Onboarding/Common/Constants.h>
|
|
|
|
|
|
|
|
#include <QQmlEngine>
|
|
|
|
#include <QJSEngine>
|
|
|
|
|
|
|
|
namespace GoAccounts = Status::StatusGo::Accounts;
|
2022-07-26 11:49:03 +00:00
|
|
|
namespace WalletGo = Status::StatusGo::Wallet;
|
2022-07-15 07:30:16 +00:00
|
|
|
namespace UtilsSG = Status::StatusGo::Utils;
|
|
|
|
namespace StatusGo = Status::StatusGo;
|
|
|
|
|
|
|
|
namespace Status::Wallet {
|
|
|
|
|
|
|
|
WalletController::WalletController()
|
2022-07-26 11:49:03 +00:00
|
|
|
: m_accounts(Helpers::makeSharedQObject<AccountsModel>(std::move(getWalletAccounts()), "account"))
|
2022-07-15 07:30:16 +00:00
|
|
|
, m_currentAccount(m_accounts->get(0))
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
WalletController *WalletController::create(QQmlEngine *qmlEngine, QJSEngine *jsEngine)
|
|
|
|
{
|
|
|
|
return new WalletController();
|
|
|
|
}
|
|
|
|
|
|
|
|
NewWalletAccountController* WalletController::createNewWalletAccountController() const
|
|
|
|
{
|
|
|
|
return new NewWalletAccountController(m_accounts);
|
|
|
|
}
|
|
|
|
|
|
|
|
QAbstractListModel* WalletController::accountsModel() const
|
|
|
|
{
|
|
|
|
return m_accounts.get();
|
|
|
|
}
|
|
|
|
|
|
|
|
WalletAccount *WalletController::currentAccount() const
|
|
|
|
{
|
|
|
|
return m_currentAccount.get();
|
|
|
|
}
|
|
|
|
|
|
|
|
void WalletController::setCurrentAccountIndex(int index)
|
|
|
|
{
|
|
|
|
assert(index >= 0 && index < m_accounts->size());
|
|
|
|
|
|
|
|
auto newCurrentAccount = m_accounts->get(index);
|
|
|
|
if (m_currentAccount == newCurrentAccount)
|
|
|
|
return;
|
|
|
|
|
|
|
|
m_currentAccount = newCurrentAccount;
|
|
|
|
emit currentAccountChanged();
|
|
|
|
}
|
|
|
|
|
2022-07-26 11:49:03 +00:00
|
|
|
AccountAssetsController *WalletController::createAccountAssetsController(WalletAccount *account)
|
|
|
|
{
|
|
|
|
return new AccountAssetsController(account);
|
|
|
|
}
|
|
|
|
|
2022-07-15 07:30:16 +00:00
|
|
|
std::vector<WalletAccountPtr> WalletController::getWalletAccounts(bool rootWalletAccountsOnly) const
|
|
|
|
{
|
|
|
|
auto all = GoAccounts::getAccounts();
|
|
|
|
std::vector<WalletAccountPtr> result;
|
|
|
|
for(auto account : all) {
|
|
|
|
if(!account.isChat && (!rootWalletAccountsOnly || account.isWallet))
|
2022-07-26 11:49:03 +00:00
|
|
|
result.push_back(Helpers::makeSharedQObject<WalletAccount>(std::move(account)));
|
2022-07-15 07:30:16 +00:00
|
|
|
}
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|