[AB-221] fixing embeds and starboard posts not working correctly for deleted users

This commit is contained in:
Sheldan
2021-04-04 23:51:25 +02:00
parent ff676b29e6
commit ecc81884e6
2 changed files with 26 additions and 15 deletions

View File

@@ -137,7 +137,11 @@ public class MessageEmbedServiceBean implements MessageEmbedService {
private CompletableFuture<MessageEmbeddedModel> buildTemplateParameter(Message message, CachedMessage embeddedMessage) { private CompletableFuture<MessageEmbeddedModel> buildTemplateParameter(Message message, CachedMessage embeddedMessage) {
return userService.retrieveUserForId(embeddedMessage.getAuthor().getAuthorId()).thenApply(authorUser -> return userService.retrieveUserForId(embeddedMessage.getAuthor().getAuthorId()).thenApply(authorUser ->
self.loadMessageEmbedModel(message, embeddedMessage, authorUser) self.loadMessageEmbedModel(message, embeddedMessage, authorUser)
); ).exceptionally(throwable -> {
log.warn("Failed to retrieve author for user {}.", embeddedMessage.getAuthor().getAuthorId(), throwable);
self.loadMessageEmbedModel(message, embeddedMessage, null);
return null;
});
} }
@Transactional @Transactional

View File

@@ -147,7 +147,15 @@ public class StarboardServiceBean implements StarboardService {
private CompletableFuture<StarboardPostModel> buildStarboardPostModel(CachedMessage message, Integer starCount) { private CompletableFuture<StarboardPostModel> buildStarboardPostModel(CachedMessage message, Integer starCount) {
return userService.retrieveUserForId(message.getAuthor().getAuthorId()).thenApply(user -> { return userService.retrieveUserForId(message.getAuthor().getAuthorId())
.thenApply(user -> createStarboardModel(message, starCount, user))
.exceptionally(throwable -> {
log.warn("Failed to retrieve user for author {} of starboard post.", message.getAuthor().getAuthorId(), throwable);
return createStarboardModel(message, starCount, null);
});
}
private StarboardPostModel createStarboardModel(CachedMessage message, Integer starCount, net.dv8tion.jda.api.entities.User user) {
Optional<TextChannel> channel = channelService.getTextChannelFromServerOptional(message.getServerId(), message.getChannelId()); Optional<TextChannel> channel = channelService.getTextChannelFromServerOptional(message.getServerId(), message.getChannelId());
Optional<Guild> guild = guildService.getGuildByIdOptional(message.getServerId()); Optional<Guild> guild = guildService.getGuildByIdOptional(message.getServerId());
String starLevelEmote = getAppropriateEmote(message.getServerId(), starCount); String starLevelEmote = getAppropriateEmote(message.getServerId(), starCount);
@@ -161,7 +169,6 @@ public class StarboardServiceBean implements StarboardService {
.guild(guild.orElse(null)) .guild(guild.orElse(null))
.starLevelEmote(starLevelEmote) .starLevelEmote(starLevelEmote)
.build(); .build();
});
} }
@Override @Override