From f721f7875ed0c22da63c21a26e94cf5ec49c094e Mon Sep 17 00:00:00 2001 From: Alex Gryczewski Date: Mon, 27 Feb 2023 17:50:36 -0500 Subject: [PATCH] Refactored perms list by keyword --- .../commands/developer/PermissionCommand.java | 102 +++++++++++------- 1 file changed, 63 insertions(+), 39 deletions(-) diff --git a/src/main/java/dev/salmonllama/fsbot/commands/developer/PermissionCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/developer/PermissionCommand.java index 919e047..121c24d 100644 --- a/src/main/java/dev/salmonllama/fsbot/commands/developer/PermissionCommand.java +++ b/src/main/java/dev/salmonllama/fsbot/commands/developer/PermissionCommand.java @@ -12,13 +12,13 @@ import org.javacord.api.entity.user.User; import org.javacord.api.util.logging.ExceptionLogger; import java.awt.*; -import java.util.Arrays; +import java.util.*; import java.util.List; public class PermissionCommand extends Command { @Override public String name() { return "Permission"; } @Override public String description() { return "Manages a user's static permissions"; } - @Override public String usage() { return "permission <@usermention> "; } + @Override public String usage() { return "permission <@user-mention> "; } @Override public CommandCategory category() { return CommandCategory.DEVELOPER; } @Override public CommandPermission permission() { return new CommandPermission(PermissionType.OWNER); } @Override public List aliases() { return Arrays.asList("permission", "permissions", "perm", "perms"); } @@ -45,47 +45,73 @@ public class PermissionCommand extends Command { if (!ctx.getMessage().getMentionedUsers().isEmpty()) { User mentionedUser = ctx.getMessage().getMentionedUsers().get(0); - StaticPermissionController.getByUser(mentionedUser.getIdAsString()).thenAcceptAsync(possiblePerms -> { - possiblePerms.ifPresentOrElse(perms -> { - EmbedBuilder embed = new EmbedBuilder() - .setTitle(String.format("Permissions for %s", mentionedUser.getName())) - .setFooter(String.format("User has %s total static permissions", perms.size())) - .setColor(Color.GREEN); + StaticPermissionController + .getByUser(mentionedUser.getIdAsString()) + .thenAcceptAsync(possiblePerms -> possiblePerms.ifPresentOrElse(perms -> { + EmbedBuilder embed = new EmbedBuilder() + .setTitle(String.format("Permissions for %s", mentionedUser.getName())) + .setFooter(String.format("User has %s total static permissions", perms.size())) + .setColor(Color.GREEN); - perms.forEach(perm -> { - embed.addField(perm.getUserId(), perm.getPermission()); - }); + perms.forEach(perm -> embed.addField(perm.getUserId(), perm.getPermission())); - ctx.reply(embed); - }, () -> { - EmbedBuilder embed = new EmbedBuilder() - .setTitle("No Permissions Found") - .setDescription(String.format("User %s has no static permissions", mentionedUser.getName())); + ctx.reply(embed); + }, () -> { + EmbedBuilder embed = new EmbedBuilder() + .setTitle("No Permissions Found") + .setDescription(String.format("User %s has no static permissions", mentionedUser.getName())); - ctx.reply(embed); + ctx.reply(embed); + })); + } else { // Fetch and display all user permissions + StaticPermissionController + .getAll() + .thenAcceptAsync(possiblePerms -> possiblePerms.ifPresentOrElse(perms -> { + List embeds = new ArrayList<>(); + + EmbedBuilder embed = new EmbedBuilder() + .setTitle("All static permissions") + .setFooter(String.format("Found %s total static permissions", perms.size())) + .setColor(Color.green); + embeds.add(embed); + + + List permKeywords = new ArrayList<>(); + perms.forEach(perm -> { + if (!permKeywords.contains(perm.getPermission())) { + permKeywords.add(perm.getPermission()); + } }); - }); - } else { - StaticPermissionController.getAll().thenAcceptAsync(possiblePerms -> { - possiblePerms.ifPresentOrElse(perms -> { - EmbedBuilder embed = new EmbedBuilder() - .setTitle("All static permissions") - .setFooter(String.format("Found %s total static permissions", perms.size())) - .setColor(Color.green); - perms.forEach(perm -> { - embed.addField(perm.getUserId(), perm.getPermission()); - }); + permKeywords.forEach(keyword -> { + EmbedBuilder e = new EmbedBuilder().setTitle(keyword); + StringBuilder text = new StringBuilder().append("```md").append(System.lineSeparator()); - ctx.reply(embed); - }, () -> { - EmbedBuilder embed = new EmbedBuilder() - .setTitle("No Permissions Found") - .setDescription("No permissions have been added."); - - ctx.reply(embed); + StaticPermissionController.getByPermission(keyword).thenAcceptAsync( + (optSp) -> optSp.ifPresent( + keywordPerms -> keywordPerms.forEach( + perm -> ctx.getApi().getUserById(perm.getUserId()).thenAcceptAsync( + (discordUser) -> text.append(perm.getUserId()) + .append(" - ") + .append(discordUser.getDiscriminatedName()) + .append(System.lineSeparator()) + ).join() + ) + ) + ).join(); + text.append("```"); + e.setDescription(text.toString()); + embeds.add(e); }); - }); + EmbedBuilder[] embedArray = embeds.toArray(new EmbedBuilder[0]); + ctx.reply(embedArray); + }, () -> { + EmbedBuilder embed = new EmbedBuilder() + .setTitle("No Permissions Found") + .setDescription("No permissions have been added."); + + ctx.reply(embed); + })); } } @@ -118,8 +144,6 @@ public class PermissionCommand extends Command { String userId = ctx.getMessage().getMentionedUsers().get(0).getIdAsString(); - StaticPermissionController.delete(userId, ctx.getArgs()[2]).thenAcceptAsync((Void) -> { - System.out.println("Permission removed"); - }).exceptionally(ExceptionLogger.get()); + StaticPermissionController.delete(userId, ctx.getArgs()[2]).thenAcceptAsync((Void) -> System.out.println("Permission removed")).exceptionally(ExceptionLogger.get()); } }