From b8ac33427f2f13153da0e957a51f563a79084d4b Mon Sep 17 00:00:00 2001 From: Erdem Erdyniev <erdem.erdyniev@demlabs.net> Date: Tue, 11 Feb 2025 11:37:42 +0700 Subject: [PATCH 1/3] [*]web3:VotingList: better error message for wrong net --- chain/wallet/handlers/DapVoitingListCommand.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/chain/wallet/handlers/DapVoitingListCommand.cpp b/chain/wallet/handlers/DapVoitingListCommand.cpp index 1e90d921..fdd879e6 100644 --- a/chain/wallet/handlers/DapVoitingListCommand.cpp +++ b/chain/wallet/handlers/DapVoitingListCommand.cpp @@ -36,7 +36,12 @@ QVariant DapVoitingListCommand::respondToClient(const QVariant &args) } else { - resultObject.insert(ERROR_KEY, result); + auto aErrorMsg = result.split("message:"); + if (aErrorMsg.size() >= 1) + { + auto errTxt = aErrorMsg[1].trimmed(); + resultObject.insert(ERROR_KEY, errTxt); + } } addWeb3Result(resultObject, args); -- GitLab From b124b901f295b38542725089f73065b3f158794d Mon Sep 17 00:00:00 2001 From: "denis.sumin" <denis.smolov@demlabs.net> Date: Fri, 14 Feb 2025 16:58:10 +0300 Subject: [PATCH 2/3] [*] reworked VotingList on JSON RPC --- chain/wallet/handlers/DapCommandList.cpp | 2 +- .../wallet/handlers/DapVoitingListCommand.cpp | 64 +++++++++++-------- 2 files changed, 39 insertions(+), 27 deletions(-) diff --git a/chain/wallet/handlers/DapCommandList.cpp b/chain/wallet/handlers/DapCommandList.cpp index 32cc2857..07c93eb3 100644 --- a/chain/wallet/handlers/DapCommandList.cpp +++ b/chain/wallet/handlers/DapCommandList.cpp @@ -1228,7 +1228,7 @@ QVariant DapCommandList::votingList(const QVariant &args) } auto command = QString("voting list -net %1").arg(params[0]); - return requestToNode(QPair<QString*, QString>(m_cliPath,command)); + return requestToNode(QPair<QString*, QString>(m_cliPath,command),Dap::RequestType::JSON); } QVariant DapCommandList::votingDump(const QVariant &args) diff --git a/chain/wallet/handlers/DapVoitingListCommand.cpp b/chain/wallet/handlers/DapVoitingListCommand.cpp index 9c4e11b9..051171c8 100644 --- a/chain/wallet/handlers/DapVoitingListCommand.cpp +++ b/chain/wallet/handlers/DapVoitingListCommand.cpp @@ -9,41 +9,53 @@ DapVoitingListCommand::DapVoitingListCommand(const QString &asServicename, QObje QVariant DapVoitingListCommand::respondToClient(const QVariant &args) { DapAbstractCommand::respondToClient(args); - auto result = cmdList->votingList(args).toString(); + auto result = cmdList->votingList(args); + QJsonObject reply = result.toJsonObject(); + QJsonObject resultObject; - if(result.isEmpty()) + if(reply.isEmpty()) { - resultObject.insert(ERROR_KEY, "Error. Noda gave an empty answer."); - } + resultObject.insert(ERROR_KEY, "Error. Node gave an empty answer."); + addWeb3Result(resultObject, args); - QRegularExpression regular( - R"(\n*voting_tx: (.+)\n+\s+question: \"(.+)\"\n+\s*\n*)", QRegularExpression::MultilineOption); - QRegularExpressionMatchIterator matchItr = regular.globalMatch(result); + QJsonDocument resultDoc; + resultDoc.setObject(resultObject); + return resultDoc.toJson(); + } + if(reply.contains("error")) + { + resultObject.insert(ERROR_KEY, reply["error"].toString()); + addWeb3Result(resultObject, args); - if(matchItr.hasNext()) + QJsonDocument resultDoc; + resultDoc.setObject(resultObject); + return resultDoc.toJson(); + } + if(!reply["result"].isArray() || !reply["result"].toArray().first().isArray()) { - QJsonArray resultArray; - while (matchItr.hasNext()) - { - QRegularExpressionMatch match = matchItr.next(); - - QJsonObject object; - object.insert("hash", match.captured(1).simplified()); - object.insert("question", match.captured(2).simplified()); - resultArray.append(std::move(object)); - } - resultObject.insert(RESULT_KEY, std::move(resultArray)); + resultObject.insert(ERROR_KEY, "Error. Answer is does't array."); + addWeb3Result(resultObject, args); + + QJsonDocument resultDoc; + resultDoc.setObject(resultObject); + return resultDoc.toJson(); } - else + + QJsonArray voteArray = reply["result"].toArray().first().toArray(); + + QJsonArray resultArray; + + for(auto item: voteArray) { - auto aErrorMsg = result.split("message:"); - if (aErrorMsg.size() >= 1) - { - auto errTxt = aErrorMsg[1].trimmed(); - resultObject.insert(ERROR_KEY, errTxt); - } + QJsonObject vote = item.toObject(); + + QJsonObject object; + object.insert("hash", vote["voting_tx"].toString()); + object.insert("question", vote["question"].toString()); + resultArray.append(std::move(object)); } + resultObject.insert(RESULT_KEY, std::move(resultArray)); addWeb3Result(resultObject, args); QJsonDocument resultDoc; -- GitLab From 63c6fcca1473ad207de2d1f5e10e1ec19dd3cba8 Mon Sep 17 00:00:00 2001 From: "denis.sumin" <denis.smolov@demlabs.net> Date: Fri, 14 Feb 2025 17:02:05 +0300 Subject: [PATCH 3/3] ... --- chain/wallet/handlers/DapVoitingListCommand.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chain/wallet/handlers/DapVoitingListCommand.cpp b/chain/wallet/handlers/DapVoitingListCommand.cpp index 051171c8..958400b4 100644 --- a/chain/wallet/handlers/DapVoitingListCommand.cpp +++ b/chain/wallet/handlers/DapVoitingListCommand.cpp @@ -22,9 +22,9 @@ QVariant DapVoitingListCommand::respondToClient(const QVariant &args) resultDoc.setObject(resultObject); return resultDoc.toJson(); } - if(reply.contains("error")) + if(reply.contains("errors")) { - resultObject.insert(ERROR_KEY, reply["error"].toString()); + resultObject.insert(ERROR_KEY, reply["errors"].toString()); addWeb3Result(resultObject, args); QJsonDocument resultDoc; -- GitLab