[AB-xxx] reworking ban logging to use audit log instead of actively logging or using the banned event

partially fixing broken infraction handling
adding CompletableFutureMap to handle futures easier
updating user display object to also hold name
replaced some references to UserObjects in models with UserDisplay objects
This commit is contained in:
Sheldan
2024-05-05 01:58:26 +02:00
parent ca45137cc6
commit 234aae3783
24 changed files with 279 additions and 259 deletions

View File

@@ -1,21 +1,51 @@
package dev.sheldan.abstracto.core.models.frontend;
import dev.sheldan.abstracto.core.models.ServerUser;
import dev.sheldan.abstracto.core.utils.MemberUtils;
import lombok.Builder;
import lombok.Getter;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.User;
@Getter
@Builder
public class UserDisplay {
private String avatarUrl;
private String name;
private String id;
private String discriminator;
private String userMention;
private Long id;
public static UserDisplay fromMember(Member member) {
return builder()
.avatarUrl(member.getEffectiveAvatarUrl())
.name(member.getEffectiveName())
.id(member.getId())
.userMention(MemberUtils.getUserAsMention(member.getIdLong()))
.id(member.getIdLong())
.build();
}
public static UserDisplay fromUser(User user) {
return builder()
.discriminator(user.getDiscriminator())
.avatarUrl(user.getEffectiveAvatarUrl())
.name(user.getEffectiveName())
.userMention(MemberUtils.getUserAsMention(user.getIdLong()))
.id(user.getIdLong())
.build();
}
public static UserDisplay fromServerUser(ServerUser user) {
return builder()
.userMention(MemberUtils.getUserAsMention(user.getUserId()))
.id(user.getUserId())
.build();
}
public static UserDisplay fromId(Long id) {
return builder()
.userMention(MemberUtils.getUserAsMention(id))
.id(id)
.build();
}
}

View File

@@ -12,9 +12,12 @@ import net.dv8tion.jda.api.entities.User;
@Setter
@Builder
public class UserBannedModel implements FeatureAwareListenerModel {
private ServerUser bannedUser;
private User user;
private ServerUser bannedServerUser;
private ServerUser banningServerUser;
private User bannedUser;
private User banningUser;
private Guild guild;
private String reason;
@Override
public Long getServerId() {
return guild.getIdLong();

View File

@@ -12,9 +12,12 @@ import net.dv8tion.jda.api.entities.User;
@Setter
@Builder
public class UserUnBannedModel implements FeatureAwareListenerModel {
private ServerUser unbannedUser;
private User user;
private ServerUser unBannedServerUser;
private ServerUser unBanningServerUser;
private User unBannedUser;
private User unBanningUser;
private Guild guild;
private String reason;
@Override
public Long getServerId() {
return guild.getIdLong();

View File

@@ -11,14 +11,18 @@ import net.dv8tion.jda.api.entities.User;
@Setter
@Builder
public class UserDisplay {
private Long userId;
private Long id;
private String userMention;
private String discriminator;
private String name;
public static UserDisplay fromUser(User user) {
return UserDisplay
.builder()
.userMention(MemberUtils.getUserAsMention(user.getIdLong()))
.userId(user.getIdLong())
.name(user.getEffectiveName())
.discriminator(user.getDiscriminator())
.id(user.getIdLong())
.build();
}
@@ -26,7 +30,7 @@ public class UserDisplay {
return UserDisplay
.builder()
.userMention(MemberUtils.getUserAsMention(serverUser.getUserId()))
.userId(serverUser.getUserId())
.id(serverUser.getUserId())
.build();
}
@@ -34,7 +38,7 @@ public class UserDisplay {
return UserDisplay
.builder()
.userMention(MemberUtils.getUserAsMention(id))
.userId(id)
.id(id)
.build();
}

View File

@@ -1,6 +1,7 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.utils.CompletableFutureList;
import dev.sheldan.abstracto.core.utils.CompletableFutureMap;
import net.dv8tion.jda.api.entities.SelfUser;
import net.dv8tion.jda.api.entities.User;
@@ -10,5 +11,6 @@ import java.util.concurrent.CompletableFuture;
public interface UserService {
CompletableFuture<User> retrieveUserForId(Long id);
CompletableFutureList<User> retrieveUsers(List<Long> ids);
CompletableFutureMap<Long, User> retrieveUsersMapped(List<Long> ids);
SelfUser getSelfUser();
}

View File

@@ -0,0 +1,49 @@
package dev.sheldan.abstracto.core.utils;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
@Getter
@Slf4j
public class CompletableFutureMap<L, T> {
private final CompletableFuture<Void> mainFuture;
private final Map<L, CompletableFuture<T>> futures;
public CompletableFutureMap(Map<L ,CompletableFuture<T>> futures) {
this.mainFuture = CompletableFuture.allOf(futures.values().toArray(new CompletableFuture[0]));
this.futures = futures;
}
public List<T> getObjects() {
List<T> result = new ArrayList<>();
futures.values().forEach(future -> {
if(!future.isCompletedExceptionally()) {
result.add(future.join());
} else {
try {
future.join();
} catch (Exception exception) {
log.warn("Future completed with exception.", exception);
}
}
});
return result;
}
public T getElement(L key) {
if(!getFutures().containsKey(key)) {
return null;
}
CompletableFuture<T> future = getFutures().get(key);
if(!future.isCompletedExceptionally()) {
return future.join();
} else {
return null;
}
}
}