mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-03 16:34:09 +00:00
[AB-203] using task executors for the async listeners
fixing starboard post listener and service method
This commit is contained in:
@@ -11,8 +11,13 @@ public class StarboardListenerConfig {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ExecutorService executorService;
|
private ExecutorService executorService;
|
||||||
|
|
||||||
@Bean(name = "starboardStatusListenerExecutor")
|
@Bean(name = "starboardCreatedListenerExecutor")
|
||||||
public TaskExecutor joinListenerExecutor() {
|
public TaskExecutor starboardPostCreatedExecutor() {
|
||||||
return executorService.setupExecutorFor("starboardStatusListener");
|
return executorService.setupExecutorFor("starboardCreatedListener");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "starboardDeletedListenerExecutor")
|
||||||
|
public TaskExecutor starboardPostDeletedExecutor() {
|
||||||
|
return executorService.setupExecutorFor("starboardDeletedListener");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import java.util.Optional;
|
|||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class StarboardPostDeletedListener implements AsyncMessageDeletedListener {
|
public class StarboardMessagePostDeletedListener implements AsyncMessageDeletedListener {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private StarboardPostManagementService starboardPostManagementService;
|
private StarboardPostManagementService starboardPostManagementService;
|
||||||
@@ -24,7 +24,7 @@ public class StarboardPostDeletedListener implements AsyncMessageDeletedListener
|
|||||||
@Override
|
@Override
|
||||||
public DefaultListenerResult execute(MessageDeletedModel model) {
|
public DefaultListenerResult execute(MessageDeletedModel model) {
|
||||||
CachedMessage message = model.getCachedMessage();
|
CachedMessage message = model.getCachedMessage();
|
||||||
Optional<StarboardPost> byStarboardPostId = starboardPostManagementService.findByStarboardPostId(message.getMessageId());
|
Optional<StarboardPost> byStarboardPostId = starboardPostManagementService.findByStarboardPostMessageId(message.getMessageId());
|
||||||
if(byStarboardPostId.isPresent()) {
|
if(byStarboardPostId.isPresent()) {
|
||||||
StarboardPost post = byStarboardPostId.get();
|
StarboardPost post = byStarboardPostId.get();
|
||||||
log.info("Removing starboard post: message {}, channel {}, server {}, because the message was deleted",
|
log.info("Removing starboard post: message {}, channel {}, server {}, because the message was deleted",
|
||||||
@@ -5,9 +5,8 @@ import dev.sheldan.abstracto.core.models.ServerChannelMessage;
|
|||||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||||
import dev.sheldan.abstracto.core.service.FeatureConfigService;
|
import dev.sheldan.abstracto.core.service.FeatureConfigService;
|
||||||
import dev.sheldan.abstracto.core.service.FeatureFlagService;
|
import dev.sheldan.abstracto.core.service.FeatureFlagService;
|
||||||
import dev.sheldan.abstracto.starboard.listener.StarboardPostState;
|
import dev.sheldan.abstracto.starboard.listener.StarboardPostCreatedListener;
|
||||||
import dev.sheldan.abstracto.starboard.listener.StarboardPostUpdatedListener;
|
import dev.sheldan.abstracto.starboard.model.StarboardPostCreatedModel;
|
||||||
import dev.sheldan.abstracto.starboard.model.StarboardPostUpdatedModel;
|
|
||||||
import dev.sheldan.abstracto.starboard.model.database.StarboardPost;
|
import dev.sheldan.abstracto.starboard.model.database.StarboardPost;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -20,17 +19,17 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class StarboardPostListenerManager {
|
public class StarboardPostCreatedListenerManager {
|
||||||
|
|
||||||
@Autowired(required = false)
|
@Autowired(required = false)
|
||||||
private List<StarboardPostUpdatedListener> listeners;
|
private List<StarboardPostCreatedListener> listeners;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@Qualifier("starboardStatusListenerExecutor")
|
@Qualifier("starboardCreatedListenerExecutor")
|
||||||
private TaskExecutor starboardStatusExecutor;
|
private TaskExecutor starboardCreatedExecutor;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private StarboardPostListenerManager self;
|
private StarboardPostCreatedListenerManager self;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private FeatureConfigService featureConfigService;
|
private FeatureConfigService featureConfigService;
|
||||||
@@ -46,20 +45,11 @@ public class StarboardPostListenerManager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ServerUser userReactingServerUser = ServerUser.builder().serverId(post.getServer().getId()).userId(userReactingId).build();
|
ServerUser userReactingServerUser = ServerUser.builder().serverId(post.getServer().getId()).userId(userReactingId).build();
|
||||||
StarboardPostUpdatedModel model = createStarboardStatusModel(post, userReactingServerUser);
|
StarboardPostCreatedModel model = createStarboardStatusModel(post, userReactingServerUser);
|
||||||
model.setNewState(StarboardPostState.CREATED);
|
listeners.forEach(listener -> listenerService.executeFeatureAwareListener(listener, model, starboardCreatedExecutor));
|
||||||
listeners.forEach(listener -> listenerService.executeFeatureAwareListener(listener, model));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendStarboardPostDeletedEvent(StarboardPost post, ServerUser userReacting) {
|
private StarboardPostCreatedModel createStarboardStatusModel(StarboardPost post, ServerUser userReacting) {
|
||||||
if(listeners == null || listeners.isEmpty()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
StarboardPostUpdatedModel model = createStarboardStatusModel(post, userReacting);
|
|
||||||
model.setNewState(StarboardPostState.DELETED);
|
|
||||||
}
|
|
||||||
|
|
||||||
private StarboardPostUpdatedModel createStarboardStatusModel(StarboardPost post, ServerUser userReacting) {
|
|
||||||
Long serverId = post.getServer().getId();
|
Long serverId = post.getServer().getId();
|
||||||
ServerUser starredUser = ServerUser
|
ServerUser starredUser = ServerUser
|
||||||
.builder()
|
.builder()
|
||||||
@@ -85,9 +75,10 @@ public class StarboardPostListenerManager {
|
|||||||
.stream()
|
.stream()
|
||||||
.map(starboardPostReaction -> starboardPostReaction.getReactor().getUserReference().getId())
|
.map(starboardPostReaction -> starboardPostReaction.getReactor().getUserReference().getId())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
return StarboardPostUpdatedModel
|
return StarboardPostCreatedModel
|
||||||
.builder()
|
.builder()
|
||||||
.lastStarrer(userReacting)
|
.lastStarrer(userReacting)
|
||||||
|
.starboardPostId(post.getId())
|
||||||
.starredUser(starredUser)
|
.starredUser(starredUser)
|
||||||
.starboardMessage(starboardMessagePayLoad)
|
.starboardMessage(starboardMessagePayLoad)
|
||||||
.starredMessage(starredMessage)
|
.starredMessage(starredMessage)
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
package dev.sheldan.abstracto.starboard.service;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.listener.ListenerService;
|
||||||
|
import dev.sheldan.abstracto.core.models.ServerChannelMessage;
|
||||||
|
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||||
|
import dev.sheldan.abstracto.core.service.FeatureConfigService;
|
||||||
|
import dev.sheldan.abstracto.core.service.FeatureFlagService;
|
||||||
|
import dev.sheldan.abstracto.starboard.listener.StarboardPostDeletedListener;
|
||||||
|
import dev.sheldan.abstracto.starboard.model.StarboardPostDeletedModel;
|
||||||
|
import dev.sheldan.abstracto.starboard.model.database.StarboardPost;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.core.task.TaskExecutor;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class StarboardPostDeletedListenerManager {
|
||||||
|
|
||||||
|
@Autowired(required = false)
|
||||||
|
private List<StarboardPostDeletedListener> listeners;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Qualifier("starboardDeletedListenerExecutor")
|
||||||
|
private TaskExecutor starboardDeletedExecutor;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private StarboardPostDeletedListenerManager self;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private FeatureConfigService featureConfigService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private FeatureFlagService featureFlagService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ListenerService listenerService;
|
||||||
|
|
||||||
|
public void sendStarboardPostDeletedEvent(StarboardPost post, ServerUser userReacting) {
|
||||||
|
if(listeners == null || listeners.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
StarboardPostDeletedModel model = createStarboardStatusModel(post, userReacting);
|
||||||
|
listeners.forEach(listener -> listenerService.executeFeatureAwareListener(listener, model, starboardDeletedExecutor));
|
||||||
|
}
|
||||||
|
|
||||||
|
private StarboardPostDeletedModel createStarboardStatusModel(StarboardPost post, ServerUser userReacting) {
|
||||||
|
Long serverId = post.getServer().getId();
|
||||||
|
ServerUser starredUser = ServerUser
|
||||||
|
.builder()
|
||||||
|
.serverId(serverId)
|
||||||
|
.userId(post.getAuthor().getUserReference().getId())
|
||||||
|
.build();
|
||||||
|
ServerChannelMessage starboardMessagePayLoad = ServerChannelMessage
|
||||||
|
.builder()
|
||||||
|
.serverId(serverId)
|
||||||
|
.channelId(post.getStarboardChannel().getId())
|
||||||
|
.messageId(post.getStarboardMessageId())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
ServerChannelMessage starredMessage = ServerChannelMessage
|
||||||
|
.builder()
|
||||||
|
.serverId(serverId)
|
||||||
|
.channelId(post.getSourceChannel().getId())
|
||||||
|
.messageId(post.getPostMessageId())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
List<Long> starrerIds = post.
|
||||||
|
getReactions()
|
||||||
|
.stream()
|
||||||
|
.map(starboardPostReaction -> starboardPostReaction.getReactor().getUserReference().getId())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
return StarboardPostDeletedModel
|
||||||
|
.builder()
|
||||||
|
.lastStarrer(userReacting)
|
||||||
|
.starboardPostId(post.getId())
|
||||||
|
.starredUser(starredUser)
|
||||||
|
.starboardMessage(starboardMessagePayLoad)
|
||||||
|
.starredMessage(starredMessage)
|
||||||
|
.allStarrer(starrerIds)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -91,7 +91,10 @@ public class StarboardServiceBean implements StarboardService {
|
|||||||
private StarboardServiceBean self;
|
private StarboardServiceBean self;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private StarboardPostListenerManager starboardPostListenerManager;
|
private StarboardPostDeletedListenerManager starboardPostDeletedListenerManager;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private StarboardPostCreatedListenerManager starboardPostCreatedListenerManager;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserService userService;
|
private UserService userService;
|
||||||
@@ -138,7 +141,7 @@ public class StarboardServiceBean implements StarboardService {
|
|||||||
AUserInAServer user = userInServerManagementService.loadUserOptional(aLong).orElseThrow(() -> new UserInServerNotFoundException(aLong));
|
AUserInAServer user = userInServerManagementService.loadUserOptional(aLong).orElseThrow(() -> new UserInServerNotFoundException(aLong));
|
||||||
starboardPostReactorManagementService.addReactor(starboardPost, user);
|
starboardPostReactorManagementService.addReactor(starboardPost, user);
|
||||||
});
|
});
|
||||||
starboardPostListenerManager.sendStarboardPostCreatedEvent(userReactingId, starboardPost);
|
starboardPostCreatedListenerManager.sendStarboardPostCreatedEvent(userReactingId, starboardPost);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -250,7 +253,7 @@ public class StarboardServiceBean implements StarboardService {
|
|||||||
public void deleteStarboardPost(StarboardPost starboardPost, ServerUser userReacting) {
|
public void deleteStarboardPost(StarboardPost starboardPost, ServerUser userReacting) {
|
||||||
deleteStarboardMessagePost(starboardPost);
|
deleteStarboardMessagePost(starboardPost);
|
||||||
starboardPostManagementService.removePost(starboardPost);
|
starboardPostManagementService.removePost(starboardPost);
|
||||||
starboardPostListenerManager.sendStarboardPostDeletedEvent(starboardPost, userReacting);
|
starboardPostDeletedListenerManager.sendStarboardPostDeletedEvent(starboardPost, userReacting);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getStarboardRankingEmote(Long serverId, Integer position) {
|
private String getStarboardRankingEmote(Long serverId, Integer position) {
|
||||||
|
|||||||
@@ -97,6 +97,11 @@ public class StarboardPostManagementServiceBean implements StarboardPostManageme
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<StarboardPost> findByStarboardPostId(Long postId) {
|
public Optional<StarboardPost> findByStarboardPostId(Long postId) {
|
||||||
|
return repository.findById(postId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<StarboardPost> findByStarboardPostMessageId(Long postId) {
|
||||||
return Optional.ofNullable(repository.findByStarboardMessageId(postId));
|
return Optional.ofNullable(repository.findByStarboardMessageId(postId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,10 +17,10 @@ import java.util.Optional;
|
|||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class StarboardPostDeletedListenerTest {
|
public class StarboardMessagePostDeletedListenerTest {
|
||||||
|
|
||||||
@InjectMocks
|
@InjectMocks
|
||||||
private StarboardPostDeletedListener testUnit;
|
private StarboardMessagePostDeletedListener testUnit;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private StarboardPostManagementService starboardPostManagementService;
|
private StarboardPostManagementService starboardPostManagementService;
|
||||||
@@ -28,7 +28,7 @@ public class StarboardPostDeletedListenerTest {
|
|||||||
@Test
|
@Test
|
||||||
public void deleteNonStarboardPost() {
|
public void deleteNonStarboardPost() {
|
||||||
Long messageId = 4L;
|
Long messageId = 4L;
|
||||||
when(starboardPostManagementService.findByStarboardPostId(messageId)).thenReturn(Optional.empty());
|
when(starboardPostManagementService.findByStarboardPostMessageId(messageId)).thenReturn(Optional.empty());
|
||||||
MessageDeletedModel model = Mockito.mock(MessageDeletedModel.class);
|
MessageDeletedModel model = Mockito.mock(MessageDeletedModel.class);
|
||||||
CachedMessage cachedMessage = Mockito.mock(CachedMessage.class);
|
CachedMessage cachedMessage = Mockito.mock(CachedMessage.class);
|
||||||
when(cachedMessage.getMessageId()).thenReturn(messageId);
|
when(cachedMessage.getMessageId()).thenReturn(messageId);
|
||||||
@@ -46,7 +46,7 @@ public class StarboardPostDeletedListenerTest {
|
|||||||
StarboardPost post = Mockito.mock(StarboardPost.class);
|
StarboardPost post = Mockito.mock(StarboardPost.class);
|
||||||
when(post.getSourceChannel()) .thenReturn(sourceChannel);
|
when(post.getSourceChannel()) .thenReturn(sourceChannel);
|
||||||
when(post.getPostMessageId()).thenReturn(postMessageId);
|
when(post.getPostMessageId()).thenReturn(postMessageId);
|
||||||
when(starboardPostManagementService.findByStarboardPostId(messageId)).thenReturn(Optional.of(post));
|
when(starboardPostManagementService.findByStarboardPostMessageId(messageId)).thenReturn(Optional.of(post));
|
||||||
CachedMessage cachedMessage = Mockito.mock(CachedMessage.class);
|
CachedMessage cachedMessage = Mockito.mock(CachedMessage.class);
|
||||||
when(cachedMessage.getServerId()).thenReturn(serverId);
|
when(cachedMessage.getServerId()).thenReturn(serverId);
|
||||||
when(cachedMessage.getMessageId()).thenReturn(messageId);
|
when(cachedMessage.getMessageId()).thenReturn(messageId);
|
||||||
@@ -242,7 +242,7 @@ public class StarboardServiceBeanTest {
|
|||||||
when(config.getLongValue()).thenReturn(1L);
|
when(config.getLongValue()).thenReturn(1L);
|
||||||
when(defaultConfigManagementService.getDefaultConfig(StarboardFeature.STAR_LEVELS_CONFIG_KEY)).thenReturn(config);
|
when(defaultConfigManagementService.getDefaultConfig(StarboardFeature.STAR_LEVELS_CONFIG_KEY)).thenReturn(config);
|
||||||
when(defaultConfigManagementService.getDefaultConfig(StarboardFeature.STAR_LVL_CONFIG_PREFIX + 1)).thenReturn(config);
|
when(defaultConfigManagementService.getDefaultConfig(StarboardFeature.STAR_LVL_CONFIG_PREFIX + 1)).thenReturn(config);
|
||||||
when(starboardPostManagementService.findByStarboardPostId(starboardPostId)).thenReturn(Optional.of(post));
|
when(starboardPostManagementService.findByStarboardPostMessageId(starboardPostId)).thenReturn(Optional.of(post));
|
||||||
when(userService.retrieveUserForId(STARRED_USER_ID)).thenReturn(CompletableFuture.completedFuture(starredJdaUser));
|
when(userService.retrieveUserForId(STARRED_USER_ID)).thenReturn(CompletableFuture.completedFuture(starredJdaUser));
|
||||||
List<AUserInAServer > userExceptAuthor = new ArrayList<>();
|
List<AUserInAServer > userExceptAuthor = new ArrayList<>();
|
||||||
CompletableFuture<Void> future = testUnit.updateStarboardPost(post, message, userExceptAuthor);
|
CompletableFuture<Void> future = testUnit.updateStarboardPost(post, message, userExceptAuthor);
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ public class StarboardPostManagementServiceBeanTest {
|
|||||||
Long postId = 5L;
|
Long postId = 5L;
|
||||||
StarboardPost post = Mockito.mock(StarboardPost.class);
|
StarboardPost post = Mockito.mock(StarboardPost.class);
|
||||||
when(repository.findByStarboardMessageId(postId)).thenReturn(post);
|
when(repository.findByStarboardMessageId(postId)).thenReturn(post);
|
||||||
Optional<StarboardPost> postOptional = testUnit.findByStarboardPostId(postId);
|
Optional<StarboardPost> postOptional = testUnit.findByStarboardPostMessageId(postId);
|
||||||
Assert.assertTrue(postOptional.isPresent());
|
Assert.assertTrue(postOptional.isPresent());
|
||||||
postOptional.ifPresent(starboardPost -> Assert.assertEquals(starboardPost, post));
|
postOptional.ifPresent(starboardPost -> Assert.assertEquals(starboardPost, post));
|
||||||
}
|
}
|
||||||
@@ -188,7 +188,7 @@ public class StarboardPostManagementServiceBeanTest {
|
|||||||
public void testFindByStarboardPostIdMissing() {
|
public void testFindByStarboardPostIdMissing() {
|
||||||
Long postId = 5L;
|
Long postId = 5L;
|
||||||
when(repository.findByStarboardMessageId(postId)).thenReturn(null);
|
when(repository.findByStarboardMessageId(postId)).thenReturn(null);
|
||||||
Optional<StarboardPost> postOptional = testUnit.findByStarboardPostId(postId);
|
Optional<StarboardPost> postOptional = testUnit.findByStarboardPostMessageId(postId);
|
||||||
Assert.assertFalse(postOptional.isPresent());
|
Assert.assertFalse(postOptional.isPresent());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package dev.sheldan.abstracto.starboard.listener;
|
|||||||
|
|
||||||
import dev.sheldan.abstracto.core.listener.DefaultListenerResult;
|
import dev.sheldan.abstracto.core.listener.DefaultListenerResult;
|
||||||
import dev.sheldan.abstracto.core.listener.FeatureAwareListener;
|
import dev.sheldan.abstracto.core.listener.FeatureAwareListener;
|
||||||
import dev.sheldan.abstracto.starboard.model.StarboardPostUpdatedModel;
|
import dev.sheldan.abstracto.starboard.model.StarboardPostCreatedModel;
|
||||||
|
|
||||||
public interface StarboardPostUpdatedListener extends FeatureAwareListener<StarboardPostUpdatedModel, DefaultListenerResult> {
|
public interface StarboardPostCreatedListener extends FeatureAwareListener<StarboardPostCreatedModel, DefaultListenerResult> {
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package dev.sheldan.abstracto.starboard.listener;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.listener.DefaultListenerResult;
|
||||||
|
import dev.sheldan.abstracto.core.listener.FeatureAwareListener;
|
||||||
|
import dev.sheldan.abstracto.starboard.model.StarboardPostDeletedModel;
|
||||||
|
|
||||||
|
public interface StarboardPostDeletedListener extends FeatureAwareListener<StarboardPostDeletedModel, DefaultListenerResult> {
|
||||||
|
}
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package dev.sheldan.abstracto.starboard.listener;
|
|
||||||
|
|
||||||
public enum StarboardPostState {
|
|
||||||
CREATED, UPDATED, UPDATED_CHANGED_THRESHOLD, DELETED
|
|
||||||
}
|
|
||||||
@@ -3,7 +3,6 @@ package dev.sheldan.abstracto.starboard.model;
|
|||||||
import dev.sheldan.abstracto.core.listener.FeatureAwareListenerModel;
|
import dev.sheldan.abstracto.core.listener.FeatureAwareListenerModel;
|
||||||
import dev.sheldan.abstracto.core.models.ServerChannelMessage;
|
import dev.sheldan.abstracto.core.models.ServerChannelMessage;
|
||||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||||
import dev.sheldan.abstracto.starboard.listener.StarboardPostState;
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
@@ -13,14 +12,13 @@ import java.util.List;
|
|||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@Builder
|
@Builder
|
||||||
public class StarboardPostUpdatedModel implements FeatureAwareListenerModel {
|
public class StarboardPostCreatedModel implements FeatureAwareListenerModel {
|
||||||
private ServerChannelMessage starredMessage;
|
private ServerChannelMessage starredMessage;
|
||||||
private ServerChannelMessage starboardMessage;
|
private ServerChannelMessage starboardMessage;
|
||||||
private ServerUser starredUser;
|
private ServerUser starredUser;
|
||||||
private ServerUser lastStarrer;
|
private ServerUser lastStarrer;
|
||||||
private Long starboardPostId;
|
private Long starboardPostId;
|
||||||
private List<Long> allStarrer;
|
private List<Long> allStarrer;
|
||||||
private StarboardPostState newState;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long getServerId() {
|
public Long getServerId() {
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package dev.sheldan.abstracto.starboard.model;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.listener.FeatureAwareListenerModel;
|
||||||
|
import dev.sheldan.abstracto.core.models.ServerChannelMessage;
|
||||||
|
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@Builder
|
||||||
|
public class StarboardPostDeletedModel implements FeatureAwareListenerModel {
|
||||||
|
private ServerChannelMessage starredMessage;
|
||||||
|
private ServerChannelMessage starboardMessage;
|
||||||
|
private ServerUser starredUser;
|
||||||
|
private ServerUser lastStarrer;
|
||||||
|
private Long starboardPostId;
|
||||||
|
private List<Long> allStarrer;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long getServerId() {
|
||||||
|
return starredUser.getServerId();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -20,6 +20,7 @@ public interface StarboardPostManagementService {
|
|||||||
Integer getPostCount(Long serverId);
|
Integer getPostCount(Long serverId);
|
||||||
Optional<StarboardPost> findByMessageId(Long messageId);
|
Optional<StarboardPost> findByMessageId(Long messageId);
|
||||||
Optional<StarboardPost> findByStarboardPostId(Long postId);
|
Optional<StarboardPost> findByStarboardPostId(Long postId);
|
||||||
|
Optional<StarboardPost> findByStarboardPostMessageId(Long postId);
|
||||||
void setStarboardPostIgnored(Long starboardPostId, Boolean newValue);
|
void setStarboardPostIgnored(Long starboardPostId, Boolean newValue);
|
||||||
boolean isStarboardPost(Long starboardPostId);
|
boolean isStarboardPost(Long starboardPostId);
|
||||||
void removePost(StarboardPost starboardPost);
|
void removePost(StarboardPost starboardPost);
|
||||||
|
|||||||
@@ -77,6 +77,59 @@ public class ListenerExecutorConfig {
|
|||||||
return executorService.setupExecutorFor("reactionClearedListener");
|
return executorService.setupExecutorFor("reactionClearedListener");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean(name = "aChannelCreatedExecutor")
|
||||||
|
public TaskExecutor aChannelCreatedExecutor() {
|
||||||
|
return executorService.setupExecutorFor("aChannelCreatedListener");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "aChannelDeletedExecutor")
|
||||||
|
public TaskExecutor aChannelDeletedExecutor() {
|
||||||
|
return executorService.setupExecutorFor("aChannelDeletedListener");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "aRoleCreatedExecutor")
|
||||||
|
public TaskExecutor aRoleCreatedExecutor() {
|
||||||
|
return executorService.setupExecutorFor("aRoleCreatedListener");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "aRoleDeletedExecutor")
|
||||||
|
public TaskExecutor aRoleDeletedExecutor() {
|
||||||
|
return executorService.setupExecutorFor("aRoleDeletedListener");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "channelGroupCreatedExecutor")
|
||||||
|
public TaskExecutor channelGroupCreatedExecutor() {
|
||||||
|
return executorService.setupExecutorFor("channelGroupCreatedListener");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "channelGroupDeletedExecutor")
|
||||||
|
public TaskExecutor channelGroupDeletedExecutor() {
|
||||||
|
return executorService.setupExecutorFor("channelGroupDeletedListener");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "serverJoinExecutor")
|
||||||
|
public TaskExecutor serverJoinExecutor() {
|
||||||
|
return executorService.setupExecutorFor("serverJoinListener");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "roleCreatedExecutor")
|
||||||
|
public TaskExecutor roleCreatedExecutor() {
|
||||||
|
return executorService.setupExecutorFor("roleCreatedListener");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "roleDeletedExecutor")
|
||||||
|
public TaskExecutor roleDeletedExecutor() {
|
||||||
|
return executorService.setupExecutorFor("roleDeletedListener");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "channelCreatedExecutor")
|
||||||
|
public TaskExecutor channelCreatedExecutor() {
|
||||||
|
return executorService.setupExecutorFor("channelCreatedListener");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "channelDeletedExecutor")
|
||||||
|
public TaskExecutor channelDeletedExecutor() {
|
||||||
|
return executorService.setupExecutorFor("channelDeletedListener");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ import net.dv8tion.jda.api.entities.TextChannel;
|
|||||||
import net.dv8tion.jda.api.events.channel.text.TextChannelCreateEvent;
|
import net.dv8tion.jda.api.events.channel.text.TextChannelCreateEvent;
|
||||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.core.task.TaskExecutor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.event.TransactionalEventListener;
|
import org.springframework.transaction.event.TransactionalEventListener;
|
||||||
|
|
||||||
@@ -33,6 +35,10 @@ public class AsyncAChannelCreatedListenerBean extends ListenerAdapter {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ChannelManagementService channelManagementService;
|
private ChannelManagementService channelManagementService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Qualifier("aChannelCreatedExecutor")
|
||||||
|
private TaskExecutor channelCreatedExecutor;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTextChannelCreate(@Nonnull TextChannelCreateEvent event) {
|
public void onTextChannelCreate(@Nonnull TextChannelCreateEvent event) {
|
||||||
log.info("Creating text channel with ID {}.", event.getChannel().getIdLong());
|
log.info("Creating text channel with ID {}.", event.getChannel().getIdLong());
|
||||||
@@ -45,7 +51,7 @@ public class AsyncAChannelCreatedListenerBean extends ListenerAdapter {
|
|||||||
@TransactionalEventListener
|
@TransactionalEventListener
|
||||||
public void executeServerCreationListener(AChannelCreatedListenerModel model) {
|
public void executeServerCreationListener(AChannelCreatedListenerModel model) {
|
||||||
if(channelListener == null) return;
|
if(channelListener == null) return;
|
||||||
channelListener.forEach(serverCreatedListener -> listenerService.executeListener(serverCreatedListener, model));
|
channelListener.forEach(serverCreatedListener -> listenerService.executeListener(serverCreatedListener, model, channelCreatedExecutor));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import net.dv8tion.jda.api.events.channel.text.TextChannelDeleteEvent;
|
import net.dv8tion.jda.api.events.channel.text.TextChannelDeleteEvent;
|
||||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.core.task.TaskExecutor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.event.TransactionalEventListener;
|
import org.springframework.transaction.event.TransactionalEventListener;
|
||||||
|
|
||||||
@@ -26,6 +28,10 @@ public class AsyncAChannelDeletedListenerBean extends ListenerAdapter {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ChannelManagementService channelManagementService;
|
private ChannelManagementService channelManagementService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Qualifier("aChannelDeletedExecutor")
|
||||||
|
private TaskExecutor channelDeletedExecutor;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTextChannelDelete(@Nonnull TextChannelDeleteEvent event) {
|
public void onTextChannelDelete(@Nonnull TextChannelDeleteEvent event) {
|
||||||
channelManagementService.markAsDeleted(event.getChannel().getIdLong());
|
channelManagementService.markAsDeleted(event.getChannel().getIdLong());
|
||||||
@@ -34,7 +40,7 @@ public class AsyncAChannelDeletedListenerBean extends ListenerAdapter {
|
|||||||
@TransactionalEventListener
|
@TransactionalEventListener
|
||||||
public void executeServerCreationListener(AChannelDeletedListenerModel model) {
|
public void executeServerCreationListener(AChannelDeletedListenerModel model) {
|
||||||
if(channelDeletedListeners == null) return;
|
if(channelDeletedListeners == null) return;
|
||||||
channelDeletedListeners.forEach(serverCreatedListener -> listenerService.executeListener(serverCreatedListener, model));
|
channelDeletedListeners.forEach(serverCreatedListener -> listenerService.executeListener(serverCreatedListener, model, channelDeletedExecutor));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import net.dv8tion.jda.api.events.role.RoleCreateEvent;
|
import net.dv8tion.jda.api.events.role.RoleCreateEvent;
|
||||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.core.task.TaskExecutor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.event.TransactionalEventListener;
|
import org.springframework.transaction.event.TransactionalEventListener;
|
||||||
|
|
||||||
@@ -31,6 +33,10 @@ public class AsyncARoleCreatedListenerBean extends ListenerAdapter {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private RoleManagementService roleManagementService;
|
private RoleManagementService roleManagementService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Qualifier("aRoleCreatedExecutor")
|
||||||
|
private TaskExecutor roleCreatedExecutor;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRoleCreate(@Nonnull RoleCreateEvent event) {
|
public void onRoleCreate(@Nonnull RoleCreateEvent event) {
|
||||||
AServer server = serverManagementService.loadServer(event.getGuild());
|
AServer server = serverManagementService.loadServer(event.getGuild());
|
||||||
@@ -40,7 +46,7 @@ public class AsyncARoleCreatedListenerBean extends ListenerAdapter {
|
|||||||
@TransactionalEventListener
|
@TransactionalEventListener
|
||||||
public void executeServerCreationListener(ARoleCreatedListenerModel model) {
|
public void executeServerCreationListener(ARoleCreatedListenerModel model) {
|
||||||
if(roleCreatedListeners == null) return;
|
if(roleCreatedListeners == null) return;
|
||||||
roleCreatedListeners.forEach(asyncServerCreatedListener -> listenerService.executeListener(asyncServerCreatedListener, model));
|
roleCreatedListeners.forEach(asyncServerCreatedListener -> listenerService.executeListener(asyncServerCreatedListener, model, roleCreatedExecutor));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import net.dv8tion.jda.api.events.role.RoleDeleteEvent;
|
import net.dv8tion.jda.api.events.role.RoleDeleteEvent;
|
||||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.core.task.TaskExecutor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.event.TransactionalEventListener;
|
import org.springframework.transaction.event.TransactionalEventListener;
|
||||||
|
|
||||||
@@ -26,6 +28,10 @@ public class AsyncARoleDeletedListenerBean extends ListenerAdapter {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ListenerService listenerService;
|
private ListenerService listenerService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Qualifier("aRoleDeletedExecutor")
|
||||||
|
private TaskExecutor roleDeletedExecutor;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRoleDelete(@Nonnull RoleDeleteEvent event) {
|
public void onRoleDelete(@Nonnull RoleDeleteEvent event) {
|
||||||
roleManagementService.markDeleted(event.getRole().getIdLong());
|
roleManagementService.markDeleted(event.getRole().getIdLong());
|
||||||
@@ -34,7 +40,7 @@ public class AsyncARoleDeletedListenerBean extends ListenerAdapter {
|
|||||||
@TransactionalEventListener
|
@TransactionalEventListener
|
||||||
public void executeServerCreationListener(ARoleDeletedListenerModel model) {
|
public void executeServerCreationListener(ARoleDeletedListenerModel model) {
|
||||||
if(roleDeletedListeners == null) return;
|
if(roleDeletedListeners == null) return;
|
||||||
roleDeletedListeners.forEach(serverCreatedListener -> listenerService.executeListener(serverCreatedListener, model));
|
roleDeletedListeners.forEach(serverCreatedListener -> listenerService.executeListener(serverCreatedListener, model, roleDeletedExecutor));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import dev.sheldan.abstracto.core.listener.ListenerService;
|
|||||||
import dev.sheldan.abstracto.core.listener.sync.entity.AsyncChannelGroupCreatedListener;
|
import dev.sheldan.abstracto.core.listener.sync.entity.AsyncChannelGroupCreatedListener;
|
||||||
import dev.sheldan.abstracto.core.models.listener.ChannelGroupCreatedListenerModel;
|
import dev.sheldan.abstracto.core.models.listener.ChannelGroupCreatedListenerModel;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.core.task.TaskExecutor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.event.TransactionalEventListener;
|
import org.springframework.transaction.event.TransactionalEventListener;
|
||||||
|
|
||||||
@@ -17,10 +19,14 @@ public class AsyncChannelGroupCreatedListenerManager {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ListenerService listenerService;
|
private ListenerService listenerService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Qualifier("channelGroupCreatedExecutor")
|
||||||
|
private TaskExecutor channelGroupCreatedExecutor;
|
||||||
|
|
||||||
@TransactionalEventListener
|
@TransactionalEventListener
|
||||||
public void executeListener(ChannelGroupCreatedListenerModel createdGroup){
|
public void executeListener(ChannelGroupCreatedListenerModel createdGroup){
|
||||||
listener.forEach(asyncChannelGroupCreatedListener ->
|
listener.forEach(asyncChannelGroupCreatedListener ->
|
||||||
listenerService.executeListener(asyncChannelGroupCreatedListener, createdGroup)
|
listenerService.executeListener(asyncChannelGroupCreatedListener, createdGroup, channelGroupCreatedExecutor)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import dev.sheldan.abstracto.core.listener.ListenerService;
|
|||||||
import dev.sheldan.abstracto.core.listener.sync.entity.AsyncChannelGroupDeletedListener;
|
import dev.sheldan.abstracto.core.listener.sync.entity.AsyncChannelGroupDeletedListener;
|
||||||
import dev.sheldan.abstracto.core.models.listener.ChannelGroupDeletedListenerModel;
|
import dev.sheldan.abstracto.core.models.listener.ChannelGroupDeletedListenerModel;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.core.task.TaskExecutor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.event.TransactionalEventListener;
|
import org.springframework.transaction.event.TransactionalEventListener;
|
||||||
|
|
||||||
@@ -17,10 +19,14 @@ public class AsyncChannelGroupDeletedListenerManager {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ListenerService listenerService;
|
private ListenerService listenerService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Qualifier("channelGroupDeletedExecutor")
|
||||||
|
private TaskExecutor channelGroupDeletedExecutor;
|
||||||
|
|
||||||
@TransactionalEventListener
|
@TransactionalEventListener
|
||||||
public void executeListener(ChannelGroupDeletedListenerModel model){
|
public void executeListener(ChannelGroupDeletedListenerModel model){
|
||||||
listener.forEach(channelGroupCreatedListener ->
|
listener.forEach(channelGroupCreatedListener ->
|
||||||
listenerService.executeListener(channelGroupCreatedListener, model)
|
listenerService.executeListener(channelGroupCreatedListener, model, channelGroupDeletedExecutor)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import net.dv8tion.jda.api.events.guild.GuildJoinEvent;
|
import net.dv8tion.jda.api.events.guild.GuildJoinEvent;
|
||||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.core.task.TaskExecutor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.transaction.event.TransactionalEventListener;
|
import org.springframework.transaction.event.TransactionalEventListener;
|
||||||
@@ -27,6 +29,10 @@ public class AsyncServerJoinListenerBean extends ListenerAdapter {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ListenerService listenerService;
|
private ListenerService listenerService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Qualifier("serverJoinExecutor")
|
||||||
|
private TaskExecutor serverJoinExecutor;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void onGuildJoin(@Nonnull GuildJoinEvent event) {
|
public void onGuildJoin(@Nonnull GuildJoinEvent event) {
|
||||||
@@ -38,7 +44,7 @@ public class AsyncServerJoinListenerBean extends ListenerAdapter {
|
|||||||
@TransactionalEventListener
|
@TransactionalEventListener
|
||||||
public void executeServerCreationListener(ServerCreatedListenerModel model) {
|
public void executeServerCreationListener(ServerCreatedListenerModel model) {
|
||||||
if(serverCreatedListeners == null) return;
|
if(serverCreatedListeners == null) return;
|
||||||
serverCreatedListeners.forEach(asyncServerCreatedListener -> listenerService.executeListener(asyncServerCreatedListener, model));
|
serverCreatedListeners.forEach(asyncServerCreatedListener -> listenerService.executeListener(asyncServerCreatedListener, model, serverJoinExecutor));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import net.dv8tion.jda.api.events.role.RoleCreateEvent;
|
import net.dv8tion.jda.api.events.role.RoleCreateEvent;
|
||||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.core.task.TaskExecutor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
@@ -21,11 +23,16 @@ public class AsyncRoleCreatedListenerBean extends ListenerAdapter {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ListenerService listenerService;
|
private ListenerService listenerService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Qualifier("roleCreatedExecutor")
|
||||||
|
private TaskExecutor roleCreatedExecutor;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRoleCreate(@Nonnull RoleCreateEvent event) {
|
public void onRoleCreate(@Nonnull RoleCreateEvent event) {
|
||||||
if(listenerList == null) return;
|
if(listenerList == null) return;
|
||||||
RoleCreatedModel model = getModel(event);
|
RoleCreatedModel model = getModel(event);
|
||||||
listenerList.forEach(roleCreatedListener -> listenerService.executeFeatureAwareListener(roleCreatedListener, model));
|
listenerList.forEach(roleCreatedListener -> listenerService.executeFeatureAwareListener(roleCreatedListener, model, roleCreatedExecutor));
|
||||||
}
|
}
|
||||||
|
|
||||||
private RoleCreatedModel getModel(RoleCreateEvent event) {
|
private RoleCreatedModel getModel(RoleCreateEvent event) {
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import net.dv8tion.jda.api.events.role.RoleDeleteEvent;
|
import net.dv8tion.jda.api.events.role.RoleDeleteEvent;
|
||||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.core.task.TaskExecutor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
@@ -21,11 +23,15 @@ public class AsyncRoleDeletedListenerBean extends ListenerAdapter {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ListenerService listenerService;
|
private ListenerService listenerService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Qualifier("roleDeletedExecutor")
|
||||||
|
private TaskExecutor roleDeletedExecutor;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRoleDelete(@Nonnull RoleDeleteEvent event) {
|
public void onRoleDelete(@Nonnull RoleDeleteEvent event) {
|
||||||
if(listenerList == null) return;
|
if(listenerList == null) return;
|
||||||
RoleDeletedModel model = getModel(event);
|
RoleDeletedModel model = getModel(event);
|
||||||
listenerList.forEach(roleCreatedListener -> listenerService.executeFeatureAwareListener(roleCreatedListener, model));
|
listenerList.forEach(roleCreatedListener -> listenerService.executeFeatureAwareListener(roleCreatedListener, model, roleDeletedExecutor));
|
||||||
}
|
}
|
||||||
|
|
||||||
private RoleDeletedModel getModel(RoleDeleteEvent event) {
|
private RoleDeletedModel getModel(RoleDeleteEvent event) {
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import net.dv8tion.jda.api.events.channel.text.TextChannelCreateEvent;
|
import net.dv8tion.jda.api.events.channel.text.TextChannelCreateEvent;
|
||||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.core.task.TaskExecutor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
@@ -21,11 +23,15 @@ public class AsyncTextChannelCreatedListenerBean extends ListenerAdapter {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ListenerService listenerService;
|
private ListenerService listenerService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Qualifier("channelCreatedExecutor")
|
||||||
|
private TaskExecutor channelCreatedExecutor;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTextChannelCreate(@Nonnull TextChannelCreateEvent event) {
|
public void onTextChannelCreate(@Nonnull TextChannelCreateEvent event) {
|
||||||
if(listenerList == null) return;
|
if(listenerList == null) return;
|
||||||
TextChannelCreatedModel model = getModel(event);
|
TextChannelCreatedModel model = getModel(event);
|
||||||
listenerList.forEach(textChannelCreatedListener -> listenerService.executeFeatureAwareListener(textChannelCreatedListener, model));
|
listenerList.forEach(textChannelCreatedListener -> listenerService.executeFeatureAwareListener(textChannelCreatedListener, model, channelCreatedExecutor));
|
||||||
}
|
}
|
||||||
|
|
||||||
private TextChannelCreatedModel getModel(TextChannelCreateEvent event) {
|
private TextChannelCreatedModel getModel(TextChannelCreateEvent event) {
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import net.dv8tion.jda.api.events.channel.text.TextChannelDeleteEvent;
|
import net.dv8tion.jda.api.events.channel.text.TextChannelDeleteEvent;
|
||||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.core.task.TaskExecutor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
@@ -21,11 +23,16 @@ public class AsyncTextChannelDeletedListenerBean extends ListenerAdapter {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ListenerService listenerService;
|
private ListenerService listenerService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
@Qualifier("channelDeletedExecutor")
|
||||||
|
private TaskExecutor channelDeletedExecutor;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTextChannelDelete(@Nonnull TextChannelDeleteEvent event) {
|
public void onTextChannelDelete(@Nonnull TextChannelDeleteEvent event) {
|
||||||
if(listenerList == null) return;
|
if(listenerList == null) return;
|
||||||
TextChannelDeletedModel model = getModel(event);
|
TextChannelDeletedModel model = getModel(event);
|
||||||
listenerList.forEach(textChannelCreatedListener -> listenerService.executeFeatureAwareListener(textChannelCreatedListener, model));
|
listenerList.forEach(textChannelCreatedListener -> listenerService.executeFeatureAwareListener(textChannelCreatedListener, model, channelDeletedExecutor));
|
||||||
}
|
}
|
||||||
|
|
||||||
private TextChannelDeletedModel getModel(TextChannelDeleteEvent event) {
|
private TextChannelDeletedModel getModel(TextChannelDeleteEvent event) {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package dev.sheldan.abstracto.core.models;
|
package dev.sheldan.abstracto.core.models;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.utils.MessageUtils;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
@@ -11,4 +12,8 @@ public class ServerChannelMessage {
|
|||||||
private Long serverId;
|
private Long serverId;
|
||||||
private Long channelId;
|
private Long channelId;
|
||||||
private Long messageId;
|
private Long messageId;
|
||||||
|
|
||||||
|
public String getJumpUrl() {
|
||||||
|
return MessageUtils.buildMessageUrl(serverId, channelId, messageId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user