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