From eed90c140631032929c152146b36862c6dbde242 Mon Sep 17 00:00:00 2001 From: Sheldan <5037282+Sheldan@users.noreply.github.com> Date: Thu, 7 Apr 2022 22:07:35 +0200 Subject: [PATCH] [AB-360] fixing warnings not being stored in case the message was not deliverable --- .../abstracto/moderation/service/WarnServiceBean.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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 351373cf8..769df0ec0 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 @@ -126,7 +126,14 @@ public class WarnServiceBean implements WarnService { Long serverId = server.getId(); String warnNotificationMessage = templateService.renderTemplate(WARN_NOTIFICATION_TEMPLATE, warnNotification, server.getId()); List futures = new ArrayList<>(); - futures.add(messageService.sendMessageToUser(warnedMember.getUser(), warnNotificationMessage)); + CompletableFuture notificationFuture = new CompletableFuture<>(); + messageService.sendMessageToUser(warnedMember.getUser(), warnNotificationMessage).whenComplete((message, throwable) -> { + if(throwable != null) { + log.warn("Failed to notify user {} of warning {} in guild {}.", warnedMember.getId(), warningId, serverId); + } + notificationFuture.complete(null); + }); + futures.add(notificationFuture); log.debug("Logging warning for server {}.", server.getId()); if(featureFlagService.getFeatureFlagValue(ModerationFeatureDefinition.INFRACTIONS, serverId)) { Long infractionPoints = configService.getLongValueOrConfigDefault(WarningFeatureConfig.WARN_INFRACTION_POINTS, serverId);