refactor: simplify comparator in rpc/governance

This commit is contained in:
Konstantin Akimov 2023-12-12 03:58:08 +07:00 committed by pasta
parent 4083fff0b2
commit b2ad5302ce
No known key found for this signature in database
GPG Key ID: 52527BEDABE87984

View File

@ -271,16 +271,13 @@ static UniValue gobject_list_prepared(const JSONRPCRequest& request)
std::vector<const Governance::Object*> vecObjects = wallet->GetGovernanceObjects(); std::vector<const Governance::Object*> vecObjects = wallet->GetGovernanceObjects();
// Sort the vector by the object creation time/hex data // Sort the vector by the object creation time/hex data
std::sort(vecObjects.begin(), vecObjects.end(), [](const Governance::Object* a, const Governance::Object* b) { std::sort(vecObjects.begin(), vecObjects.end(), [](const Governance::Object* a, const Governance::Object* b) {
bool fGreater = a->time > b->time; if (a->time != b->time) return a->time < b->time;
bool fEqual = a->time == b->time; return a->GetDataAsHexString() < b->GetDataAsHexString();
bool fHexGreater = a->GetDataAsHexString() > b->GetDataAsHexString();
return fGreater || (fEqual && fHexGreater);
}); });
UniValue jsonArray(UniValue::VARR); UniValue jsonArray(UniValue::VARR);
auto it = vecObjects.rbegin() + std::max<int>(0, vecObjects.size() - nCount); for (auto it = vecObjects.begin() + std::max<int>(0, vecObjects.size() - nCount); it != vecObjects.end(); ++it) {
while (it != vecObjects.rend()) { jsonArray.push_back((*it)->ToJson());
jsonArray.push_back((*it++)->ToJson());
} }
return jsonArray; return jsonArray;