Skip to content

Commit 0d07085

Browse files
Merge pull request #461 from danthe1st/xp-leaderboard-api
2 parents 448b412 + 833a90a commit 0d07085

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

src/main/java/net/discordjug/javabot/api/routes/leaderboard/help_experience/HelpExperienceLeaderboardController.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import net.discordjug.javabot.api.routes.CaffeineCache;
77
import net.discordjug.javabot.api.routes.leaderboard.help_experience.model.ExperienceUserData;
88
import net.discordjug.javabot.systems.help.HelpExperienceService;
9+
import net.discordjug.javabot.systems.help.model.HelpAccount;
910
import net.discordjug.javabot.util.Pair;
1011
import net.dv8tion.jda.api.JDA;
1112
import net.dv8tion.jda.api.entities.Guild;
@@ -18,6 +19,7 @@
1819
import org.springframework.web.bind.annotation.RequestParam;
1920
import org.springframework.web.bind.annotation.RestController;
2021

22+
import java.util.ArrayList;
2123
import java.util.List;
2224
import java.util.concurrent.TimeUnit;
2325

@@ -26,7 +28,7 @@
2628
*/
2729
@RestController
2830
public class HelpExperienceLeaderboardController extends CaffeineCache<Pair<Long, Integer>, List<ExperienceUserData>> {
29-
private static final int PAGE_AMOUNT = 8;
31+
private static final int PAGE_AMOUNT = 10;
3032
private final JDA jda;
3133
private final HelpExperienceService helpExperienceService;
3234

@@ -65,9 +67,13 @@ public ResponseEntity<List<ExperienceUserData>> getHelpExperienceLeaderboard(
6567
}
6668
List<ExperienceUserData> members = getCache().getIfPresent(new Pair<>(guild.getIdLong(), page));
6769
if (members == null || members.isEmpty()) {
68-
members = helpExperienceService.getTopAccounts(PAGE_AMOUNT, page).stream()
69-
.map(p -> ExperienceUserData.of(p, jda.retrieveUserById(p.getUserId()).complete()))
70-
.toList();
70+
List<HelpAccount> topAccounts = helpExperienceService.getTopAccounts(PAGE_AMOUNT, page);
71+
members = new ArrayList<>(topAccounts.size());
72+
for (int i = 0; i < topAccounts.size(); i++) {
73+
HelpAccount acc = topAccounts.get(i);
74+
int rank = (page - 1) * PAGE_AMOUNT + 1 + i;
75+
members.add(ExperienceUserData.of(acc, jda.retrieveUserById(acc.getUserId()).complete(), rank));
76+
}
7177
getCache().put(new Pair<>(guild.getIdLong(), page), members);
7278
}
7379
return new ResponseEntity<>(members, HttpStatus.OK);

src/main/java/net/discordjug/javabot/api/routes/leaderboard/help_experience/model/ExperienceUserData.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,17 @@
1717
@EqualsAndHashCode(callSuper = false)
1818
public class ExperienceUserData extends UserData {
1919
private HelpAccount account;
20+
private int rank;
2021

2122
/**
2223
* Creates a new {@link ExperienceUserData} instance.
2324
*
2425
* @param account The {@link HelpAccount} to use.
2526
* @param user A nullable {@link User}.
27+
* @param rank The position of the user in the help leaderboard.
2628
* @return The {@link ExperienceUserData}.
2729
*/
28-
public static @NotNull ExperienceUserData of(@NotNull HelpAccount account, @Nullable User user) {
30+
public static @NotNull ExperienceUserData of(@NotNull HelpAccount account, @Nullable User user, int rank) {
2931
ExperienceUserData data = new ExperienceUserData();
3032
data.setUserId(account.getUserId());
3133
if (user != null) {
@@ -34,6 +36,7 @@ public class ExperienceUserData extends UserData {
3436
data.setEffectiveAvatarUrl(user.getEffectiveAvatarUrl());
3537
}
3638
data.setAccount(account);
39+
data.setRank(rank);
3740
return data;
3841
}
3942
}

0 commit comments

Comments
 (0)