@@ -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