Skip to content

Commit 940e390

Browse files
committed
Used helper methods so the code is easier to understand
1 parent 9c71eca commit 940e390

1 file changed

Lines changed: 64 additions & 53 deletions

File tree

application/src/main/java/org/togetherjava/tjbot/features/moderation/ReportCommand.java

Lines changed: 64 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -262,62 +262,73 @@ public void onButtonClick(ButtonInteractionEvent event, List<String> args) {
262262

263263
List<ActionRecord> actions = new java.util.ArrayList<>(
264264
moderationActionsStore.getActionsByTargetAscending(guildId, reportedUserId));
265-
266265
Collections.reverse(actions);
267266
List<List<ActionRecord>> pages = ModerationUtils.groupActionsByPages(actions);
268267

269-
event.getJDA().retrieveUserById(reportedUserId).queue(user -> {
270-
EmbedBuilder auditEmbed =
271-
new EmbedBuilder().setTitle("Audit log of **%s**".formatted(user.getName()))
272-
.setAuthor(user.getName(), null, user.getEffectiveAvatarUrl())
273-
.setColor(Color.BLACK)
274-
.setDescription(ModerationUtils.createSummaryMessageDescription(actions));
275-
276-
if (pages.isEmpty()) {
277-
event.getHook()
278-
.editOriginalEmbeds(auditEmbed.build())
279-
.setComponents(Collections.emptyList())
280-
.queue();
281-
return;
282-
}
283-
284-
int currentPageIndex = Math.clamp(targetPage, 0, pages.size() - 1);
285-
286-
List<net.dv8tion.jda.api.requests.RestAction<MessageEmbed.Field>> fieldTasks =
287-
pages.get(currentPageIndex)
288-
.stream()
289-
.map(action -> ModerationUtils.actionToField(action, event.getJDA()))
290-
.toList();
291-
292-
net.dv8tion.jda.api.requests.RestAction.allOf(fieldTasks).queue(fields -> {
293-
auditEmbed.clearFields();
294-
fields.forEach(auditEmbed::addField);
295-
296-
auditEmbed.setFooter("Page %d/%d (Most recent first)"
297-
.formatted(currentPageIndex + 1, pages.size()));
298-
299-
String prevButtonId = generateComponentId(Lifespan.REGULAR,
300-
String.valueOf(reportedUserId), String.valueOf(currentPageIndex - 1));
301-
String nextButtonId = generateComponentId(Lifespan.REGULAR,
302-
String.valueOf(reportedUserId), String.valueOf(currentPageIndex + 1));
303-
304-
Button prevButton = Button.primary(prevButtonId, "◀ Previous")
305-
.withDisabled(currentPageIndex == 0);
306-
307-
Button nextButton = Button.primary(nextButtonId, "Next ▶")
308-
.withDisabled(currentPageIndex == pages.size() - 1);
309-
310-
event.getHook()
311-
.editOriginalEmbeds(auditEmbed.build())
312-
.setActionRow(prevButton, nextButton)
313-
.queue();
314-
315-
}, _ -> event.getHook()
316-
.sendMessage("Could not load moderation history fields.")
317-
.queue());
318-
}, _ -> event.getHook()
319-
.sendMessage("Could not retrieve audit data for this user.")
320-
.queue());
268+
event.getJDA()
269+
.retrieveUserById(reportedUserId)
270+
.queue(user -> renderAuditEmbed(event, user, actions, pages, targetPage),
271+
_ -> event.getHook()
272+
.sendMessage("Could not retrieve audit data for this user.")
273+
.queue());
274+
}
275+
276+
private void renderAuditEmbed(ButtonInteractionEvent event,
277+
net.dv8tion.jda.api.entities.User user, List<ActionRecord> actions,
278+
List<List<ActionRecord>> pages, int targetPage) {
279+
EmbedBuilder auditEmbed =
280+
new EmbedBuilder().setTitle("Audit log of **%s**".formatted(user.getName()))
281+
.setAuthor(user.getName(), null, user.getEffectiveAvatarUrl())
282+
.setColor(Color.BLACK)
283+
.setDescription(ModerationUtils.createSummaryMessageDescription(actions));
284+
285+
if (pages.isEmpty()) {
286+
event.getHook()
287+
.editOriginalEmbeds(auditEmbed.build())
288+
.setComponents(Collections.emptyList())
289+
.queue();
290+
return;
291+
}
292+
293+
int currentPageIndex = Math.clamp(targetPage, 0, pages.size() - 1);
294+
295+
List<net.dv8tion.jda.api.requests.RestAction<MessageEmbed.Field>> fieldTasks =
296+
pages.get(currentPageIndex)
297+
.stream()
298+
.map(action -> ModerationUtils.actionToField(action, event.getJDA()))
299+
.toList();
300+
301+
net.dv8tion.jda.api.requests.RestAction.allOf(fieldTasks)
302+
.queue(fields -> finalizeAndSendEmbed(event, auditEmbed, fields, user.getIdLong(),
303+
currentPageIndex, pages.size()),
304+
_ -> event.getHook()
305+
.sendMessage("Could not load moderation history fields.")
306+
.queue());
307+
}
308+
309+
private void finalizeAndSendEmbed(ButtonInteractionEvent event, EmbedBuilder auditEmbed,
310+
List<MessageEmbed.Field> fields, long reportedUserId, int currentPageIndex,
311+
int totalPages) {
312+
auditEmbed.clearFields();
313+
fields.forEach(auditEmbed::addField);
314+
315+
auditEmbed.setFooter(
316+
"Page %d/%d (Most recent first)".formatted(currentPageIndex + 1, totalPages));
317+
318+
String prevButtonId = generateComponentId(Lifespan.REGULAR, String.valueOf(reportedUserId),
319+
String.valueOf(currentPageIndex - 1));
320+
String nextButtonId = generateComponentId(Lifespan.REGULAR, String.valueOf(reportedUserId),
321+
String.valueOf(currentPageIndex + 1));
322+
323+
Button prevButton =
324+
Button.primary(prevButtonId, "◀ Previous").withDisabled(currentPageIndex == 0);
325+
Button nextButton = Button.primary(nextButtonId, "Next ▶")
326+
.withDisabled(currentPageIndex == totalPages - 1);
327+
328+
event.getHook()
329+
.editOriginalEmbeds(auditEmbed.build())
330+
.setActionRow(prevButton, nextButton)
331+
.queue();
321332
}
322333

323334
}

0 commit comments

Comments
 (0)