Refactor websockets
This commit is contained in:
@@ -43,12 +43,7 @@ void WSServer::processTextMessage(QString message)
|
||||
if (m_debug)
|
||||
qDebug() << "Message received:" << message;
|
||||
if (pClient) {
|
||||
QJsonDocument json(QJsonObject {
|
||||
{"saplingAddress", m_mainWindow->getRPC()->getDefaultSaplingAddress()},
|
||||
{"balance", m_mainWindow->getRPC()->balTotal},
|
||||
{"zecprice", Settings::getInstance()->getZECPrice()}
|
||||
});
|
||||
|
||||
auto json = AppDataServer::processMessage(message, m_mainWindow);
|
||||
pClient->sendTextMessage(json.toJson());
|
||||
}
|
||||
}
|
||||
@@ -72,4 +67,59 @@ void WSServer::socketDisconnected()
|
||||
m_clients.removeAll(pClient);
|
||||
pClient->deleteLater();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ==============================
|
||||
// AppDataServer
|
||||
// ==============================
|
||||
QJsonDocument AppDataServer::processMessage(QString message, MainWindow* mainWindow) {
|
||||
// First, extract the command from the message
|
||||
auto msg = QJsonDocument::fromJson(message.toUtf8());
|
||||
if (!msg.object().contains("command")) {
|
||||
return QJsonDocument(QJsonObject{
|
||||
{"errorCode", -1},
|
||||
{"errorMessage", "Unknown JSON format"}
|
||||
});
|
||||
}
|
||||
|
||||
if (msg["command"] == "getInfo") {
|
||||
return processGetInfo(mainWindow);
|
||||
}
|
||||
else if (msg["command"] == "getTransactions") {
|
||||
return processGetTransactions(mainWindow);
|
||||
}
|
||||
else {
|
||||
return QJsonDocument(QJsonObject{
|
||||
{"errorCode", -1},
|
||||
{"errorMessage", "Command not found:" + msg["command"].toString()}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
QJsonDocument AppDataServer::processGetInfo(MainWindow* mainWindow) {
|
||||
return QJsonDocument(QJsonObject{
|
||||
{"version", 1.0},
|
||||
{"saplingAddress", mainWindow->getRPC()->getDefaultSaplingAddress()},
|
||||
{"balance", AppDataModel::getInstance()->getTotalBalance()},
|
||||
{"zecprice", Settings::getInstance()->getZECPrice()}
|
||||
});
|
||||
}
|
||||
|
||||
QJsonDocument AppDataServer::processGetTransactions(MainWindow* mainWindow) {
|
||||
QJsonArray txns;
|
||||
auto model = mainWindow->getRPC()->getTransactionsModel();
|
||||
for (int i = 0; i < model->rowCount(QModelIndex()); i++) {
|
||||
txns.append(QJsonObject{
|
||||
{"type", model->getType(i)},
|
||||
{"datetime", model->getDate(i)},
|
||||
{"amount", model->getAmt(i)}
|
||||
});
|
||||
}
|
||||
|
||||
return QJsonDocument(txns);
|
||||
}
|
||||
|
||||
// ==============================
|
||||
// AppDataModel
|
||||
// ==============================
|
||||
AppDataModel* AppDataModel::instance = NULL;
|
||||
Reference in New Issue
Block a user