* Always sort the results while searching in CurseForge.

* Fix bugs.
This commit is contained in:
Burning_TNT 2024-03-12 22:14:32 +08:00 committed by GitHub
parent 7ca5744559
commit baf1d22bc4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -111,9 +111,8 @@ public final class CurseForgeRemoteModRepository implements RemoteModRepository
.header("X-API-KEY", apiKey) .header("X-API-KEY", apiKey)
.getJson(new TypeToken<Response<List<CurseAddon>>>() { .getJson(new TypeToken<Response<List<CurseAddon>>>() {
}.getType()); }.getType());
Stream<RemoteMod> res = response.getData().stream().map(CurseAddon::toMod);
if (searchFilter.isEmpty()) { if (searchFilter.isEmpty()) {
return new SearchResult(res, (int)Math.ceil((double)response.pagination.totalCount / pageSize)); return new SearchResult(response.getData().stream().map(CurseAddon::toMod), (int)Math.ceil((double)response.pagination.totalCount / pageSize));
} }
// https://github.com/HMCL-dev/HMCL/issues/1549 // https://github.com/HMCL-dev/HMCL/issues/1549
@ -125,7 +124,7 @@ public final class CurseForgeRemoteModRepository implements RemoteModRepository
StringUtils.LevCalculator levCalculator = new StringUtils.LevCalculator(); StringUtils.LevCalculator levCalculator = new StringUtils.LevCalculator();
return new SearchResult(res.map(remoteMod -> { return new SearchResult(response.getData().stream().map(CurseAddon::toMod).map(remoteMod -> {
String lowerCaseResult = remoteMod.getTitle().toLowerCase(); String lowerCaseResult = remoteMod.getTitle().toLowerCase();
int diff = levCalculator.calc(lowerCaseSearchFilter, lowerCaseResult); int diff = levCalculator.calc(lowerCaseSearchFilter, lowerCaseResult);
@ -136,7 +135,7 @@ public final class CurseForgeRemoteModRepository implements RemoteModRepository
} }
return pair(remoteMod, diff); return pair(remoteMod, diff);
}).sorted(Comparator.comparingInt(Pair::getValue)).map(Pair::getKey), res, response.pagination.totalCount); }).sorted(Comparator.comparingInt(Pair::getValue)).map(Pair::getKey), response.getData().stream().map(CurseAddon::toMod), response.pagination.totalCount);
} }
@Override @Override