diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/repository/WarnRepository.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/repository/WarnRepository.java index 82b5fde35..d3d85ebb5 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/repository/WarnRepository.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/repository/WarnRepository.java @@ -16,6 +16,7 @@ import java.util.Optional; public interface WarnRepository extends JpaRepository { List findAllByWarnedUser_ServerReferenceAndDecayedFalseAndWarnDateLessThan(AServer server, Instant cutOffDate); List findAllByWarnedUser_ServerReferenceAndDecayedFalseAndWarnDateGreaterThan(AServer server, Instant cutOffDate); + List findAllByWarnedUserAndDecayedFalseAndWarnDateGreaterThan(AUserInAServer user, Instant cutOffDate); List findAllByWarnedUser_ServerReference(AServer server); diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/WarnServiceBean.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/WarnServiceBean.java index abdab5095..a749a655a 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/WarnServiceBean.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/WarnServiceBean.java @@ -165,6 +165,9 @@ public class WarnServiceBean implements WarnService { @Transactional public CompletableFuture sendMemberNotifications(Long serverId, List warnIds, List members, Instant cutOffDay) { + if(warnIds.isEmpty()) { + return CompletableFuture.completedFuture(null); + } List decayingWarnings = warnManagementService.getWarningsViaId(warnIds, serverId); AServer server = decayingWarnings.get(0).getWarnedUser().getServerReference(); List> notificationFutures = new ArrayList<>(); @@ -174,7 +177,7 @@ public class WarnServiceBean implements WarnService { Long warningId = warning.getWarnId().getId(); if(userIdToMember.containsKey(userId)) { Member memberToSendTo = userIdToMember.get(userId); - List remainingWarnings = warnManagementService.getActiveWarningsInServerYoungerThan(server, cutOffDay); + List remainingWarnings = warnManagementService.getActiveWarningsFromUserYoungerThan(warning.getWarnedUser(), cutOffDay); WarnDecayMemberNotificationModel model = WarnDecayMemberNotificationModel .builder() diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementServiceBean.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementServiceBean.java index e6b1d146e..1247f1e69 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementServiceBean.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementServiceBean.java @@ -49,6 +49,11 @@ public class WarnManagementServiceBean implements WarnManagementService { return warnRepository.findAllByWarnedUser_ServerReferenceAndDecayedFalseAndWarnDateGreaterThan(server, date); } + @Override + public List getActiveWarningsFromUserYoungerThan(AUserInAServer user, Instant date) { + return warnRepository.findAllByWarnedUserAndDecayedFalseAndWarnDateGreaterThan(user, date); + } + @Override public Long getTotalWarnsForUser(AUserInAServer aUserInAServer) { return warnRepository.countByWarnedUser(aUserInAServer); diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/model/template/command/UnMuteLog.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/model/template/command/UnMuteLog.java index 651b6d834..626414dc3 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/model/template/command/UnMuteLog.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/model/template/command/UnMuteLog.java @@ -62,6 +62,9 @@ public class UnMuteLog extends ServerContext { * @return A string containing an URL leading to the message where the mute was triggered */ public String getMessageUrl() { - return MessageUtils.buildMessageUrl(this.mute.getServer().getId() ,this.getMute().getMutingChannel().getId(), this.mute.getMessageId()); + if(this.mute.getMessageId() != null && this.mute.getMutingChannel() != null) { + return MessageUtils.buildMessageUrl(this.mute.getServer().getId(), this.mute.getMutingChannel().getId(), this.mute.getMessageId()); + } + return null; } } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementService.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementService.java index 3c5b0c131..98a785858 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementService.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementService.java @@ -12,6 +12,7 @@ public interface WarnManagementService { Warning createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason, Long warnId); List getActiveWarningsInServerOlderThan(AServer server, Instant date); List getActiveWarningsInServerYoungerThan(AServer server, Instant date); + List getActiveWarningsFromUserYoungerThan(AUserInAServer user, Instant date); Long getTotalWarnsForUser(AUserInAServer aUserInAServer); List getAllWarnsForUser(AUserInAServer aUserInAServer); List getAllWarningsOfServer(AServer server);