From 98cd99ef4cbc538911640b2e0ba87a7bd40be9d4 Mon Sep 17 00:00:00 2001 From: denis <denis.sumin> Date: Sun, 5 Jan 2025 00:35:52 +0300 Subject: [PATCH] [*] fix processing price history --- chain/wallet/handlers/DapCommandList.cpp | 3 +- .../DapGetXchangeTokenPriceHistory.cpp | 73 ++++++------------- 2 files changed, 25 insertions(+), 51 deletions(-) diff --git a/chain/wallet/handlers/DapCommandList.cpp b/chain/wallet/handlers/DapCommandList.cpp index c3ee5707..90fe2572 100644 --- a/chain/wallet/handlers/DapCommandList.cpp +++ b/chain/wallet/handlers/DapCommandList.cpp @@ -634,8 +634,7 @@ QPair<qint64, QString> DapCommandList::getXchangeAverage(const QVariant &args) if(result == "Can't find orders for specified token pair") { - QDateTime date = QDateTime::fromMSecsSinceEpoch(0); - qint64 dateToSecs = date.toSecsSinceEpoch(); + qint64 dateToSecs = 0; QString rate = "0.0"; return {dateToSecs, rate}; } diff --git a/chain/wallet/handlers/DapGetXchangeTokenPriceHistory.cpp b/chain/wallet/handlers/DapGetXchangeTokenPriceHistory.cpp index e3a8582f..1682a051 100644 --- a/chain/wallet/handlers/DapGetXchangeTokenPriceHistory.cpp +++ b/chain/wallet/handlers/DapGetXchangeTokenPriceHistory.cpp @@ -21,17 +21,12 @@ QVariant DapGetXchangeTokenPriceHistory::respondToClient(const QVariant &args) auto updateHistoryList = [&arrHistory, this](const QString& result, bool isContrary = false) { QStringList orderList = result.split("\n"); -// QString time = ""; QString hash = ""; + QString rate = ""; + QString dateStr = ""; QDateTime date; - qint64 dateToSecs = 0; - struct Info - { - QString rate = ""; - QString time = ""; - }; - - QMap<QString, Info> resultArray; + qint64 dateToSecs = date.toMSecsSinceEpoch(); + QString time = QString::number(dateToSecs); for(QString& str: orderList) { @@ -58,8 +53,10 @@ QVariant DapGetXchangeTokenPriceHistory::respondToClient(const QVariant &args) auto matchTime = REG_TIME.match(str); if(matchTime.hasMatch()) { - date = QDateTime::fromString(matchTime.captured(1), Qt::RFC2822Date); + dateStr = matchTime.captured(1); + date = QDateTime::fromString(dateStr, Qt::RFC2822Date); dateToSecs = date.toMSecsSinceEpoch(); + time = QString::number(dateToSecs); } auto matchRate = REG_RATE.match(str); @@ -67,62 +64,40 @@ QVariant DapGetXchangeTokenPriceHistory::respondToClient(const QVariant &args) { if(!str.contains(TYPE_ORDERS)) { + dateStr = ""; dateToSecs = 0; + time = QString::number(dateToSecs); + rate = ""; + hash = ""; continue; } - Info item; - if(!isContrary) { - - dateToSecs = date.toMSecsSinceEpoch(); - - auto list = matchRate.capturedTexts(); - item.rate = matchRate.captured(3); - item.time = QString::number(dateToSecs); - if(hash.isEmpty()) - { - qWarning() << "Hash is not defined."; - continue; - } - resultArray.insert(hash, item); + rate = matchRate.captured(3); } else { - dateToSecs = date.toMSecsSinceEpoch(); Dap::Coin oneVal = QString("1.0"); Dap::Coin priceVal = matchRate.captured(3); QString result = (oneVal/priceVal).toCoinsString(); - - item.rate = result; - item.time = QString::number(dateToSecs); - if(hash.isEmpty()) - { - qWarning() << "Hash is not defined."; - continue; - } - resultArray.insert(hash, item); + rate = result; } - } - auto matchReturn = REG_RETURN.match(str); - if(matchReturn.hasMatch()) - { - auto list = matchReturn.capturedTexts(); - if(resultArray.contains(matchReturn.captured(2))) + + if(hash.isEmpty()) { - resultArray.remove(matchReturn.captured(2)); + qWarning() << "Hash is not defined."; + continue; } + + QJsonObject rateObject; + rateObject.insert("rate", rate); + rateObject.insert("time", time); + rateObject.insert("time_norm", dateStr); + rateObject.insert("hash", hash); + arrHistory.append(std::move(rateObject)); } } - for(const auto& item: resultArray) - { - QJsonObject rateObject; - rateObject.insert("rate", item.rate); - rateObject.insert("time", item.time); - arrHistory.append(std::move(rateObject)); - } - }; // get rate history -- GitLab