Skip to content

Commit b90589b

Browse files
removed blocking .complete() call
1 parent db36d3f commit b90589b

File tree

2 files changed

+9
-10
lines changed

2 files changed

+9
-10
lines changed

src/main/java/net/javadiscord/javabot/systems/help/commands/subcommands/ExperienceLeaderboardSubcommand.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import net.dv8tion.jda.api.entities.Emoji;
55
import net.dv8tion.jda.api.entities.Guild;
66
import net.dv8tion.jda.api.entities.MessageEmbed;
7+
import net.dv8tion.jda.api.entities.User;
78
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
89
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
910
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
@@ -53,7 +54,7 @@ public static void handleButtons(ButtonInteractionEvent event, String[] id) {
5354
case "left" -> page--;
5455
case "right" -> page++;
5556
}
56-
int maxPage = dao.getTotalRankedAccounts() / PAGE_SIZE;
57+
int maxPage = dao.getTotalAccounts() / PAGE_SIZE;
5758
if (page <= 0) page = maxPage;
5859
if (page > maxPage) page = 1;
5960
event.getHook().editOriginalEmbeds(buildExperienceLeaderboard(event.getGuild(), dao, page))
@@ -63,17 +64,18 @@ public static void handleButtons(ButtonInteractionEvent event, String[] id) {
6364
}
6465

6566
private static MessageEmbed buildExperienceLeaderboard(Guild guild, HelpAccountRepository dao, int page) throws SQLException {
66-
int maxPage = dao.getTotalRankedAccounts() / PAGE_SIZE;
67-
List<HelpAccount> accounts = dao.getAccountsWithRank(Math.min(page, maxPage), PAGE_SIZE);
67+
int maxPage = dao.getTotalAccounts() / PAGE_SIZE;
68+
List<HelpAccount> accounts = dao.getAccounts(Math.min(page, maxPage), PAGE_SIZE);
6869
EmbedBuilder builder = new EmbedBuilder()
6970
.setTitle("Experience Leaderboard")
7071
.setColor(Bot.config.get(guild).getSlashCommand().getDefaultColor())
7172
.setFooter(String.format("Page %s/%s", Math.min(page, maxPage), maxPage));
7273
accounts.forEach(account -> {
7374
Map.Entry<Long, Double> currentRole = account.getCurrentExperienceGoal(guild);
75+
System.out.println(guild.getJDA().getUserCache().toString());
76+
User user = guild.getJDA().getUserById(account.getUserId());
7477
builder.addField(
75-
// TODO: implement without using blocking complete calls
76-
String.format("**%s.** %s", (accounts.indexOf(account) + 1) + (page - 1) * PAGE_SIZE, guild.getJDA().retrieveUserById(account.getUserId()).complete().getAsTag()),
78+
String.format("**%s.** %s", (accounts.indexOf(account) + 1) + (page - 1) * PAGE_SIZE, user == null ? account.getUserId() : user.getAsTag()),
7779
String.format("<@&%s>: `%.0f XP`\n", currentRole.getKey(), account.getExperience()),
7880
false);
7981
});

src/main/java/net/javadiscord/javabot/systems/help/dao/HelpAccountRepository.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@
22

33
import lombok.RequiredArgsConstructor;
44
import lombok.extern.slf4j.Slf4j;
5-
import net.dv8tion.jda.api.entities.Guild;
6-
import net.javadiscord.javabot.Bot;
7-
import net.javadiscord.javabot.data.config.guild.HelpConfig;
85
import net.javadiscord.javabot.systems.help.model.HelpAccount;
96

107
import java.sql.Connection;
@@ -79,7 +76,7 @@ public Optional<HelpAccount> getByUserId(long userId) throws SQLException {
7976
* @return A {@link List} containing the specified amount of {@link HelpAccount}s.
8077
* @throws SQLException If an error occurs.
8178
*/
82-
public List<HelpAccount> getAccountsWithRank(int page, int size) throws SQLException {
79+
public List<HelpAccount> getAccounts(int page, int size) throws SQLException {
8380
String sql = "SELECT * FROM help_account WHERE experience > 0 ORDER BY experience DESC LIMIT %d OFFSET %d";
8481
PreparedStatement stmt = con.prepareStatement(String.format(sql, size, (page * size) - size));
8582
ResultSet rs = stmt.executeQuery();
@@ -97,7 +94,7 @@ public List<HelpAccount> getAccountsWithRank(int page, int size) throws SQLExcep
9794
* @return The amount, as an {@link Integer}.
9895
* @throws SQLException If an error occurs.
9996
*/
100-
public int getTotalRankedAccounts() throws SQLException {
97+
public int getTotalAccounts() throws SQLException {
10198
try (PreparedStatement s = con.prepareStatement("SELECT COUNT(*) FROM help_account WHERE experience > 0")) {
10299
ResultSet rs = s.executeQuery();
103100
if (rs.next()) return rs.getInt(1);

0 commit comments

Comments
 (0)