From 968bfb92d0959d63611a3b0b976aad198c8d45f0 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Tue, 7 Dec 2021 22:32:46 +0000 Subject: [PATCH] Fixed bugs in the GET /crosschain/tradeoffers API endpoint caused by the introduction of ACCTv2 --- .../api/resource/CrossChainResource.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/qortal/api/resource/CrossChainResource.java b/src/main/java/org/qortal/api/resource/CrossChainResource.java index acaec28c..d58ef9c1 100644 --- a/src/main/java/org/qortal/api/resource/CrossChainResource.java +++ b/src/main/java/org/qortal/api/resource/CrossChainResource.java @@ -91,7 +91,7 @@ public class CrossChainResource { throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.INVALID_CRITERIA); final boolean isExecutable = true; - List crossChainTradesData = new ArrayList<>(); + List crossChainTrades = new ArrayList<>(); try (final Repository repository = RepositoryManager.getRepository()) { Map> acctsByCodeHash = SupportedBlockchain.getFilteredAcctMap(foreignBlockchain); @@ -105,12 +105,26 @@ public class CrossChainResource { for (ATData atData : atsData) { CrossChainTradeData crossChainTradeData = acct.populateTradeData(repository, atData); if (crossChainTradeData.mode == AcctMode.OFFERING) { - crossChainTradesData.add(crossChainTradeData); + crossChainTrades.add(crossChainTradeData); } } } - return crossChainTradesData; + // Sort the trades by timestamp + if (reverse != null && reverse) { + crossChainTrades.sort((a, b) -> Longs.compare(b.creationTimestamp, a.creationTimestamp)); + } + else { + crossChainTrades.sort((a, b) -> Longs.compare(a.creationTimestamp, b.creationTimestamp)); + } + + if (limit != null) { + // Make sure to not return more than the limit + int upperLimit = Math.min(limit, crossChainTrades.size()); + crossChainTrades = crossChainTrades.subList(0, upperLimit); + } + + return crossChainTrades; } catch (DataException e) { throw ApiExceptionFactory.INSTANCE.createException(request, ApiError.REPOSITORY_ISSUE, e); }