From c1ee223000286fda2136edb98ad4880547ee484d Mon Sep 17 00:00:00 2001 From: Aditya Kulkarni Date: Wed, 23 Jan 2019 15:13:02 -0800 Subject: [PATCH] Add t address support in rpc --- src/rpc.cpp | 35 +++++++++++++++++++++++++++++++++++ src/rpc.h | 4 ++++ src/websockets.cpp | 2 ++ 3 files changed, 41 insertions(+) diff --git a/src/rpc.cpp b/src/rpc.cpp index b438b72..04cfdde 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -66,6 +66,7 @@ RPC::~RPC() { delete allBalances; delete usedAddresses; delete zaddresses; + delete taddresses; delete conn; } @@ -94,6 +95,17 @@ void RPC::setConnection(Connection* c) { refresh(true); } +void RPC::getTAddresses(const std::function& cb) { + json payload = { + {"jsonrpc", "1.0"}, + {"id", "someid"}, + {"method", "getaddressesbyaccount"}, + {"params", {""}} + }; + + conn->doRPCWithDefaultErrorHandling(payload, cb); +} + void RPC::getZAddresses(const std::function& cb) { json payload = { {"jsonrpc", "1.0"}, @@ -658,6 +670,22 @@ void RPC::refreshAddresses() { refreshSentZTrans(); refreshReceivedZTrans(*zaddresses); }); + + delete taddresses; + taddresses = new QList(); + getTAddresses([=] (json reply) { + for (auto& it : reply.get()) { + auto addr = QString::fromStdString(it.get()); + if (Settings::isTAddress(addr)) + taddresses->push_back(addr); + } + + // If there are no t Addresses, create one + newTaddr([=] (json reply) { + // What if taddress gets deleted before this executes? + taddresses->append(QString::fromStdString(reply.get())); + }); + }); } // Function to create the data model and update the views, used below. @@ -1137,3 +1165,10 @@ QString RPC::getDefaultSaplingAddress() { return QString(); } + +QString RPC::getDefaultTAddress() { + if (getAllTAddresses()->length() > 0) + return getAllTAddresses()->at(0); + else + return QString(); +} \ No newline at end of file diff --git a/src/rpc.h b/src/rpc.h index 09f7bd4..78893f9 100644 --- a/src/rpc.h +++ b/src/rpc.h @@ -50,6 +50,7 @@ public: const TxTableModel* getTransactionsModel() { return transactionsTableModel; } const QList* getAllZAddresses() { return zaddresses; } + const QList* getAllTAddresses() { return taddresses; } const QList* getUTXOs() { return utxos; } const QMap* getAllBalances() { return allBalances; } const QMap* getUsedAddresses() { return usedAddresses; } @@ -66,6 +67,7 @@ public: void noConnection(); QString getDefaultSaplingAddress(); + QString getDefaultTAddress(); void getAllPrivKeys(const std::function>)>); @@ -90,6 +92,7 @@ private: void getZUnspent (const std::function& cb); void getTransactions (const std::function& cb); void getZAddresses (const std::function& cb); + void getTAddresses (const std::function& cb); Connection* conn = nullptr; QProcess* ezcashd = nullptr; @@ -98,6 +101,7 @@ private: QMap* allBalances = nullptr; QMap* usedAddresses = nullptr; QList* zaddresses = nullptr; + QList* taddresses = nullptr; QMap watchingOps; diff --git a/src/websockets.cpp b/src/websockets.cpp index e01a118..b4c88d6 100644 --- a/src/websockets.cpp +++ b/src/websockets.cpp @@ -177,7 +177,9 @@ QJsonDocument AppDataServer::processGetInfo(MainWindow* mainWindow) { {"version", 1.0}, {"command", "getInfo"}, {"saplingAddress", mainWindow->getRPC()->getDefaultSaplingAddress()}, + {"tAddress", mainWindow->getRPC()->getDefaultTAddress()}, {"balance", AppDataModel::getInstance()->getTotalBalance()}, + {"tokenName", Settings::getTokenName()}, {"zecprice", Settings::getInstance()->getZECPrice()} }); }