Skip to content
Snippets Groups Projects
Commit 7466d482 authored by Evgenii Tagiltsev's avatar Evgenii Tagiltsev
Browse files

[+] added class for creation transactions

parent d0cf5fb5
No related branches found
No related tags found
2 merge requests!65Bugs 2797,!58Bugs 2797
Pipeline #1429 passed with stage
in 21 minutes and 20 seconds
Showing
with 152 additions and 9 deletions
......@@ -80,7 +80,8 @@ SOURCES += \
$$PWD/DapServiceClientNativeLinux.cpp \
$$PWD/DapServiceClientNativeWin.cpp \
$$PWD/DapServiceClientNativeMacOS.cpp \
$$PWD/DapChainWalletsModel.cpp
$$PWD/DapChainWalletsModel.cpp \
DapTransaction.cpp
RESOURCES += $$PWD/qml.qrc
......@@ -107,7 +108,8 @@ HEADERS += \
$$PWD/DapServiceClientNativeLinux.h \
$$PWD/DapServiceClientNativeWin.h \
$$PWD/DapChainWalletsModel.h \
$$PWD/DapWalletFilterModel.h
$$PWD/DapWalletFilterModel.h \
DapTransaction.h
include (../libdap/libdap.pri)
include (../libdap-crypto/libdap-crypto.pri)
......
......@@ -79,7 +79,12 @@ void DapCommandController::changeCurrentNetwork(const QString& aNetwork)
m_DAPRpcSocket->invokeRemoteMethod("RPCServer.changeCurrentNetwork", aNetwork);
}
#include "DapChainWallet.h"
void DapCommandController::sendTransaction(const QString& aFromWallet, const QString& aToAddress, const QString& aToken, const QString& aNetwork, const quint64 aValue)
{
DapRpcServiceReply *reply = m_DAPRpcSocket->invokeRemoteMethod("RPCServer.createTransaction", aFromWallet, aToAddress, aToken, aNetwork, aValue);
connect(reply, SIGNAL(finished()), this, SLOT(processGetResultTransaction()));
}
void DapCommandController::setNewWalletData(const QVariant& aData)
{
emit sigWalletData(QByteArray::fromHex(aData.toByteArray()));
......@@ -223,6 +228,12 @@ void DapCommandController::processGetWalletData()
emit sigWalletData(QByteArray::fromHex(result));
}
void DapCommandController::processGetResultTransaction()
{
DapRpcServiceReply *reply = static_cast<DapRpcServiceReply *>(sender());
emit sendResponseTransaction(reply->response().toJsonValue().toBool());
}
void DapCommandController::processGetNetworkList()
{
DapRpcServiceReply *reply = static_cast<DapRpcServiceReply *>(sender());
......
......@@ -9,6 +9,7 @@
#include "DapRpcSocket.h"
#include "DapRpcServiceProvider.h"
#include "DapRpcService.h"
#include "DapChainWallet.h"
/// Class command controller for service
class DapCommandController : public DapRpcService, public DapRpcServiceProvider
......@@ -75,6 +76,8 @@ signals:
// ---------------------------------------------
void sigWalletData(QByteArray data);
void sendResponseTransaction(bool result);
public:
/// Overloaded constructor.
/// @param apIODevice Data transfer device.
......@@ -115,6 +118,8 @@ private slots:
// ---------------------------------------------
void processGetWalletData();
void processGetResultTransaction();
public slots:
/// Show or hide GUI client by clicking on the tray icon.
/// @param aIsActivated Accepts true - when requesting to
......@@ -174,6 +179,8 @@ public slots:
void setNewWalletData(const QVariant& aData);
void requestWalletData();
void sendTransaction(const QString& aFromWallet, const QString& aToAddress, const QString& aToken, const QString& aNetwork, const quint64 aValue);
};
#endif // COMMANDCONTROLLER_H
......@@ -73,6 +73,9 @@ void DapServiceController::init(DapServiceClient *apDapServiceClient)
connect(m_pDapCommandController, &DapCommandController::sigWalletData, &DapChainWalletModel::instance(), &DapChainWalletModel::setWalletData);
connect(&DapTransaction::instance(), &DapTransaction::sendTransaction, m_pDapCommandController, &DapCommandController::sendTransaction);
connect(m_pDapCommandController, &DapCommandController::sendResponseTransaction, &DapTransaction::instance(), &DapTransaction::receiveResult);
}
QString DapServiceController::getBrand() const
......
......@@ -17,6 +17,7 @@
#include "DapScreenHistoryModel.h"
#include "DapSettingsNetworkModel.h"
#include "DapConsoleModel.h"
#include "DapTransaction.h"
#include "DapChainWalletModel.h"
......
#include "DapTransaction.h"
DapTransaction::DapTransaction(QObject *parent) : QObject(parent)
{
}
DapTransaction& DapTransaction::instance()
{
static DapTransaction instance;
return instance;
}
void DapTransaction::createRequestTransaction(const QString& aFromWallet, const QString& aToAddress, const QString& aToken, const QString& aNetwork, const quint64 aValue)
{
emit sendTransaction(aFromWallet, aToAddress, aToken, aNetwork, aValue);
}
void DapTransaction::receiveResult(const bool aSuccessful)
{
emit sendResult(aSuccessful);
}
#ifndef DAPTRANSACTION_H
#define DAPTRANSACTION_H
#include <QObject>
class DapTransaction : public QObject
{
Q_OBJECT
public:
explicit DapTransaction(QObject *parent = nullptr);
static DapTransaction& instance();
public slots:
void createRequestTransaction(const QString& aFromWallet, const QString& aToAddress, const QString& aToken, const QString& aNetwork, const quint64 aValue);
void receiveResult(const bool aSuccessful);
signals:
void sendResult(bool result);
void sendTransaction(const QString& fromWallet, const QString& toAddress, const QString& token, const QString& network, const quint64 value);
};
#endif // DAPTRANSACTION_H
......@@ -25,6 +25,7 @@
#include "DapConsoleModel.h"
#include "DapChainConvertor.h"
#include "DapClipboard.h"
#include "DapTransaction.h"
#include "DapChainWalletModel.h"
#include "DapWalletFilterModel.h"
......@@ -95,6 +96,7 @@ int main(int argc, char *argv[])
engine.rootContext()->setContextProperty("dapWalletFilterModel", &DapWalletFilterModel::instance());
engine.rootContext()->setContextProperty("dapWalletModel", &DapChainWalletModel::instance());
engine.rootContext()->setContextProperty("clipboard", &DapClipboard::instance());
engine.rootContext()->setContextProperty("dapTransaction", &DapTransaction::instance());
engine.rootContext()->setContextProperty("pt", 1.3);
engine.load(QUrl("qrc:/screen/main.qml"));
......
......@@ -54,7 +54,8 @@ SOURCES += \
$$PWD/DapChainWalletHandler.cpp \
$$PWD/DapChainLogHandler.cpp \
$$PWD/DapChainNetworkHandler.cpp \
$$PWD/DapChainConsoleHandler.cpp
$$PWD/DapChainConsoleHandler.cpp \
DapChainTransaction.cpp
HEADERS += \
$$PWD/DapChainDashboardService.h \
......@@ -65,7 +66,8 @@ HEADERS += \
$$PWD/DapChainWalletHandler.h \
$$PWD/DapChainLogHandler.h \
$$PWD/DapChainNetworkHandler.h \
$$PWD/DapChainConsoleHandler.h
$$PWD/DapChainConsoleHandler.h \
DapChainTransaction.h
include (../libdap/libdap.pri)
include (../libdap-crypto/libdap-crypto.pri)
......
......@@ -26,6 +26,8 @@ DapChainDashboardService::DapChainDashboardService() : DapRpcService(nullptr)
QObject::connect(m_pDapChainWalletHandler, &DapChainWalletHandler::walletDataChanged, this, &DapChainDashboardService::doSendNewWalletData);
m_pDapChainWalletHandler->setNetworkList(m_pDapChainNetworkHandler->getNetworkList());
m_pDapChainTransaction = new DapChainTransaction(this);
}
bool DapChainDashboardService::start()
......@@ -222,3 +224,8 @@ QByteArray DapChainDashboardService::walletData() const
{
return m_pDapChainWalletHandler->walletData();
}
bool DapChainDashboardService::createTransaction(const QString& aFromWallet, const QString& aToAddress, const QString& aTokenName, const QString& aNetwork, const quint64 aValue)
{
return m_pDapChainTransaction->createTransaction(aFromWallet, aToAddress, aTokenName, aNetwork, aValue);
}
......@@ -29,6 +29,7 @@
#include "DapChainHistoryHandler.h"
#include "DapChainNetworkHandler.h"
#include "DapChainConsoleHandler.h"
#include "DapChainTransaction.h"
#include <QLocalServer>
typedef class DapRpcLocalServer DapUiService;
......@@ -65,6 +66,8 @@ class DapChainDashboardService : public DapRpcService
/// Recipient network's name
DapChainNetworkHandler* m_pDapChainNetworkHandler {nullptr};
DapChainTransaction* m_pDapChainTransaction {nullptr};
public:
/// Standard сonstructor.
explicit DapChainDashboardService();
......@@ -138,6 +141,8 @@ public slots:
QByteArray walletData() const;
bool createTransaction(const QString& aFromWallet, const QString& aToAddress, const QString& aTokenName, const QString& aNetwork, const quint64 aValue);
private slots:
/// Request new history request by handle wallet's name
void doRequestWallets();
......
#include "DapChainTransaction.h"
DapChainTransaction::DapChainTransaction(QObject *parent) : QObject(parent)
{
}
bool DapChainTransaction::createTransaction(const QString& aFromWallet, const QString& aToAddress, const QString& aTokenName, const QString& aNetwork, const quint64 aValue) const
{
QProcess processCreate;
processCreate.start(QString("%1 tx_create -net %2 -chain gdb -from_wallet %3 -to_addr %4 -token %5 -value %6")
.arg(CLI_PATH)
.arg(aNetwork)
.arg(aFromWallet)
.arg(aToAddress)
.arg(aTokenName)
.arg(QString::number(aValue)));
processCreate.waitForFinished(-1);
QByteArray result = processCreate.readAll();
QRegExp rx("transfer=(\\w+)");
rx.indexIn(result, 0);
if(rx.cap(1) == "Ok") {
QProcess processMempool;
processMempool.start(QString("%1 mempool_proc -net " + aNetwork +" -chain gdb").arg(CLI_PATH));
processMempool.waitForFinished(-1);
processMempool.readAll();
return true;
}
return false;
}
#ifndef DAPCHAINTRANSACTION_H
#define DAPCHAINTRANSACTION_H
#include <QObject>
#include <QProcess>
#include <QDebug>
class DapChainTransaction : public QObject
{
Q_OBJECT
public:
explicit DapChainTransaction(QObject *parent = nullptr);
/// Request for creation new transaction
/// @param name of wallet
/// @param address of a receiver
/// @param name of token
/// @param name of network
/// @param sum for transaction
/// @return result of trying to do transaction
bool createTransaction(const QString& aFromWallet, const QString& aToAddress, const QString& aTokenName, const QString& aNetwork, const quint64 aValue) const;
};
#endif // DAPCHAINTRANSACTION_H
Subproject commit 1c0614797a3a2a2f4c179630025600e177637a65
Subproject commit ee6e8617e1f589b45f15e327ed18cddfa87915f8
Subproject commit c81202ba5d48e5d77afcc8aea9962a10560527f3
Subproject commit 16a16e71b9cfae4fd8df530ed8cd6146010ae7e0
Subproject commit 5f661c223be1ccd39f0dfa104a44de0d9f9dfb35
Subproject commit 7129934993bef42104cffbef8f983cde724afce2
Subproject commit 8dfd465e991656dca083c0fd3a0ff5825d61fe86
Subproject commit 4c38710d45f7e5e7c3ba8139a964c886b4061f10
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment