mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-14 03:45:57 +00:00
[AB-308] adding a separate type for assignable role places to enable booster only places
adding more detailed logging to assignable roles adding some fall through logic to the banned listener to always log at least the basic information refactoring some command structure for showing configuration, so the command actually executes the message response fixing potential exception case for starboard updates causing the message ID to not be persisted
This commit is contained in:
@@ -175,15 +175,30 @@ public class StarboardServiceBean implements StarboardService {
|
||||
public CompletableFuture<Void> updateStarboardPost(StarboardPost post, CachedMessage message, List<AUserInAServer> userExceptAuthor) {
|
||||
int starCount = userExceptAuthor.size();
|
||||
log.info("Updating starboard post {} in server {} with reactors {}.", post.getId(), post.getSourceChannel().getServer().getId(), starCount);
|
||||
return buildStarboardPostModel(message, starCount).thenCompose(starboardPostModel -> {
|
||||
MessageToSend messageToSend = templateService.renderEmbedTemplate(STARBOARD_POST_TEMPLATE, starboardPostModel, message.getServerId());
|
||||
List<CompletableFuture<Message>> futures = postTargetService.editOrCreatedInPostTarget(post.getStarboardMessageId(), messageToSend, StarboardPostTarget.STARBOARD, message.getServerId());
|
||||
Long starboardPostId = post.getId();
|
||||
return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).thenAccept(aVoid -> {
|
||||
Optional<StarboardPost> innerPost = starboardPostManagementService.findByStarboardPostId(starboardPostId);
|
||||
innerPost.ifPresent(starboardPost -> starboardPostManagementService.setStarboardPostMessageId(starboardPost, futures.get(0).join().getIdLong()));
|
||||
});
|
||||
});
|
||||
Long starboardPostId = post.getId();
|
||||
Long postMessageId = post.getStarboardMessageId();
|
||||
return buildStarboardPostModel(message, starCount)
|
||||
.thenCompose(starboardPostModel -> self.sendStarboardPost(postMessageId, message, starboardPostId, starboardPostModel));
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public CompletableFuture<Void> sendStarboardPost(Long starboardPostMessageId, CachedMessage message, Long starboardPostId, StarboardPostModel starboardPostModel) {
|
||||
MessageToSend messageToSend = templateService.renderEmbedTemplate(STARBOARD_POST_TEMPLATE, starboardPostModel, message.getServerId());
|
||||
log.info("Updating/Creating message with ID {} for post {}", starboardPostMessageId, starboardPostId);
|
||||
List<CompletableFuture<Message>> futures = postTargetService.editOrCreatedInPostTarget(starboardPostMessageId, messageToSend, StarboardPostTarget.STARBOARD, message.getServerId());
|
||||
return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]))
|
||||
.thenAccept(aVoid -> self.persistStarboardPostMessageId(starboardPostId, futures));
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void persistStarboardPostMessageId(Long starboardPostId, List<CompletableFuture<Message>> futures) {
|
||||
Optional<StarboardPost> innerPost = starboardPostManagementService.findByStarboardPostId(starboardPostId);
|
||||
long messageId = futures.get(0).join().getIdLong();
|
||||
log.debug("Updating starboard post {} to message ID {}.", starboardPostId, messageId);
|
||||
innerPost.ifPresent(starboardPost -> starboardPostManagementService.setStarboardPostMessageId(starboardPost, messageId));
|
||||
if(!innerPost.isPresent()) {
|
||||
log.warn("Starboard post {} was not found. Not updating message ID to {}.", starboardPostId, messageId);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -219,7 +219,6 @@ public class StarboardServiceBeanTest {
|
||||
|
||||
@Test
|
||||
public void testUpdateStarboardPost() {
|
||||
Long newPostId = 37L;
|
||||
Long oldPostId = 36L;
|
||||
AChannel sourceChannel = Mockito.mock(AChannel.class);
|
||||
when(sourceChannel.getServer()).thenReturn(server);
|
||||
@@ -234,22 +233,16 @@ public class StarboardServiceBeanTest {
|
||||
when(post.getStarboardMessageId()).thenReturn(oldPostId);
|
||||
when(post.getSourceChannel()).thenReturn(sourceChannel);
|
||||
when(post.getId()).thenReturn(starboardPostId);
|
||||
MessageToSend postMessage = Mockito.mock(MessageToSend.class);
|
||||
when(templateService.renderEmbedTemplate(eq(StarboardServiceBean.STARBOARD_POST_TEMPLATE), starboardPostModelArgumentCaptor.capture(), eq(SERVER_ID))).thenReturn(postMessage);
|
||||
when(postTargetService.editOrCreatedInPostTarget(oldPostId, postMessage, StarboardPostTarget.STARBOARD, SERVER_ID)).thenReturn(Arrays.asList(CompletableFuture.completedFuture(sendPost)));
|
||||
when(sendPost.getIdLong()).thenReturn(newPostId);
|
||||
SystemConfigProperty config = Mockito.mock(SystemConfigProperty.class);
|
||||
when(config.getLongValue()).thenReturn(1L);
|
||||
when(defaultConfigManagementService.getDefaultConfig(StarboardFeatureConfig.STAR_LEVELS_CONFIG_KEY)).thenReturn(config);
|
||||
when(defaultConfigManagementService.getDefaultConfig(StarboardFeatureConfig.STAR_LVL_CONFIG_PREFIX + 1)).thenReturn(config);
|
||||
when(starboardPostManagementService.findByStarboardPostId(starboardPostId)).thenReturn(Optional.of(post));
|
||||
when(userService.retrieveUserForId(STARRED_USER_ID)).thenReturn(CompletableFuture.completedFuture(starredJdaUser));
|
||||
when(self.sendStarboardPost(eq(oldPostId), eq(message), eq(starboardPostId), any(StarboardPostModel.class))).thenReturn(CompletableFuture.completedFuture(null));
|
||||
List<AUserInAServer > userExceptAuthor = new ArrayList<>();
|
||||
CompletableFuture<Void> future = testUnit.updateStarboardPost(post, message, userExceptAuthor);
|
||||
future.join();
|
||||
Assert.assertFalse(future.isCompletedExceptionally());
|
||||
verify(postTargetService, times(1)).editOrCreatedInPostTarget(oldPostId, postMessage, StarboardPostTarget.STARBOARD, SERVER_ID);
|
||||
verify(starboardPostManagementService, times(1)).setStarboardPostMessageId(post, newPostId);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user