From 724c3b4f44c22d1555277ecda23bd7bdde655a7f Mon Sep 17 00:00:00 2001 From: adityapk00 Date: Tue, 5 Feb 2019 14:38:37 -0800 Subject: [PATCH] Cleanup for wormhole connection --- src/mainwindow.cpp | 6 ++++-- src/mainwindow.h | 4 +++- src/websockets.cpp | 13 +++++-------- src/websockets.h | 42 ++++++++++++++++++++++++++---------------- 4 files changed, 38 insertions(+), 27 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index d309747..1ff2603 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -68,7 +68,7 @@ MainWindow::MainWindow(QWidget *parent) : if (rpc->getConnection() == nullptr) return; - AppDataServer::connectAppDialog(this); + AppDataServer::getInstance()->connectAppDialog(this); }); // Address Book @@ -109,7 +109,7 @@ MainWindow::MainWindow(QWidget *parent) : } void MainWindow::createWebsocket() { - new WSServer(8237, true, this); + wsserver = new WSServer(8237, false, this); } void MainWindow::restoreSavedStates() { @@ -1365,4 +1365,6 @@ MainWindow::~MainWindow() delete loadingMovie; delete logger; + + delete wsserver; } diff --git a/src/mainwindow.h b/src/mainwindow.h index 1b1eea0..ad8aabf 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -7,6 +7,7 @@ // Forward declare to break circular dependency. class RPC; class Settings; +class WSServer; using json = nlohmann::json; @@ -93,7 +94,6 @@ private: void addressBook(); void payZcashURI(); void postToZBoard(); - void connectApp(); void importPrivKey(); void exportAllKeys(); void exportKeys(QString addr = ""); @@ -106,6 +106,8 @@ private: void createWebsocket(); + WSServer* wsserver = nullptr; + RPC* rpc = nullptr; QCompleter* labelCompleter = nullptr; diff --git a/src/websockets.cpp b/src/websockets.cpp index 19adab2..09fd75e 100644 --- a/src/websockets.cpp +++ b/src/websockets.cpp @@ -46,7 +46,7 @@ void WSServer::processTextMessage(QString message) qDebug() << "Message received:" << message; if (pClient) { - AppDataServer::processMessage(message, m_mainWindow, pClient); + AppDataServer::getInstance()->processMessage(message, m_mainWindow, pClient); } } @@ -55,9 +55,7 @@ void WSServer::processBinaryMessage(QByteArray message) QWebSocket *pClient = qobject_cast(sender()); if (m_debug) qDebug() << "Binary Message received:" << message; - if (pClient) { - pClient->sendBinaryMessage(message); - } + } void WSServer::socketDisconnected() @@ -74,6 +72,8 @@ void WSServer::socketDisconnected() // ============================== // AppDataServer // ============================== +AppDataServer* AppDataServer::instance = nullptr; + QString AppDataServer::getSecretHex() { QSettings s; @@ -87,9 +87,6 @@ void AppDataServer::saveNewSecret(QString secretHex) { s.sync(); } -QString AppDataServer::tempSecret = ""; -Ui_MobileAppConnector* AppDataServer::ui = nullptr; - void AppDataServer::connectAppDialog(QWidget* parent) { QDialog d(parent); ui = new Ui_MobileAppConnector(); @@ -574,4 +571,4 @@ void AppDataServer::processGetTransactions(MainWindow* mainWindow, QWebSocket* p // ============================== // AppDataModel // ============================== -AppDataModel* AppDataModel::instance = NULL; +AppDataModel* AppDataModel::instance = nullptr; diff --git a/src/websockets.h b/src/websockets.h index 59ae1f2..eb83f4c 100644 --- a/src/websockets.h +++ b/src/websockets.h @@ -40,28 +40,38 @@ enum NonceType { class AppDataServer { public: - static void connectAppDialog(QWidget* parent); - static void updateConnectedUI(); - static void updateUIWithNewQRCode(); + static AppDataServer* getInstance() { + if (instance == nullptr) { + instance = new AppDataServer(); + } + return instance; + } - static void processSendTx(QJsonObject sendTx, MainWindow* mainwindow, QWebSocket* pClient); - static void processMessage(QString message, MainWindow* mainWindow, QWebSocket* pClient); - static void processDecryptedMessage(QString message, MainWindow* mainWindow, QWebSocket* pClient); - static void processGetInfo(QJsonObject jobj, MainWindow* mainWindow, QWebSocket* pClient); - static void processGetTransactions(MainWindow* mainWindow, QWebSocket* pClient); + void connectAppDialog(QWidget* parent); + void updateConnectedUI(); + void updateUIWithNewQRCode(); - static QString decryptMessage(QJsonDocument msg, QString secretHex, bool skipNonceCheck = false); - static QString encryptOutgoing(QString msg); + void processSendTx(QJsonObject sendTx, MainWindow* mainwindow, QWebSocket* pClient); + void processMessage(QString message, MainWindow* mainWindow, QWebSocket* pClient); + void processGetInfo(QJsonObject jobj, MainWindow* mainWindow, QWebSocket* pClient); + void processDecryptedMessage(QString message, MainWindow* mainWindow, QWebSocket* pClient); + void processGetTransactions(MainWindow* mainWindow, QWebSocket* pClient); - static QString getSecretHex(); - static void saveNewSecret(QString secretHex); + QString decryptMessage(QJsonDocument msg, QString secretHex, bool skipNonceCheck = false); + QString encryptOutgoing(QString msg); - static QString getNonceHex(NonceType nt); - static void saveNonceHex(NonceType nt, QString noncehex); + QString getSecretHex(); + void saveNewSecret(QString secretHex); + + QString getNonceHex(NonceType nt); + void saveNonceHex(NonceType nt, QString noncehex); private: - static QString tempSecret; - static Ui_MobileAppConnector* ui; + AppDataServer() = default; + + static AppDataServer* instance; + QString tempSecret; + Ui_MobileAppConnector* ui; }; class AppDataModel {