mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-14 19:56:29 +00:00
[AB-257] fixing link embed message being deleted while it still contains an attachment
adding more convenience methods to post target services
This commit is contained in:
@@ -3,7 +3,6 @@ package dev.sheldan.abstracto.linkembed.listener;
|
|||||||
import dev.sheldan.abstracto.core.config.FeatureDefinition;
|
import dev.sheldan.abstracto.core.config.FeatureDefinition;
|
||||||
import dev.sheldan.abstracto.core.config.ListenerPriority;
|
import dev.sheldan.abstracto.core.config.ListenerPriority;
|
||||||
import dev.sheldan.abstracto.core.listener.ConsumableListenerResult;
|
import dev.sheldan.abstracto.core.listener.ConsumableListenerResult;
|
||||||
import dev.sheldan.abstracto.core.listener.DefaultListenerResult;
|
|
||||||
import dev.sheldan.abstracto.core.listener.sync.jda.MessageReceivedListener;
|
import dev.sheldan.abstracto.core.listener.sync.jda.MessageReceivedListener;
|
||||||
import dev.sheldan.abstracto.core.metric.service.CounterMetric;
|
import dev.sheldan.abstracto.core.metric.service.CounterMetric;
|
||||||
import dev.sheldan.abstracto.core.metric.service.MetricService;
|
import dev.sheldan.abstracto.core.metric.service.MetricService;
|
||||||
@@ -85,7 +84,7 @@ public class MessageEmbedListener implements MessageReceivedListener {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(StringUtils.isBlank(messageRaw) && !links.isEmpty()) {
|
if(StringUtils.isBlank(messageRaw) && !links.isEmpty() && message.getAttachments().isEmpty()) {
|
||||||
messageService.deleteMessage(message);
|
messageService.deleteMessage(message);
|
||||||
return ConsumableListenerResult.DELETED;
|
return ConsumableListenerResult.DELETED;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,11 +6,12 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
|||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public interface PostTargetRepository extends JpaRepository<PostTarget, Long> {
|
public interface PostTargetRepository extends JpaRepository<PostTarget, Long> {
|
||||||
|
|
||||||
PostTarget findPostTargetByNameAndServerReference(String name, AServer server);
|
Optional<PostTarget> findPostTargetByNameAndServerReference(String name, AServer server);
|
||||||
|
|
||||||
boolean existsByNameAndServerReference(String name, AServer server);
|
boolean existsByNameAndServerReference(String name, AServer server);
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import dev.sheldan.abstracto.core.config.FeatureConfig;
|
|||||||
import dev.sheldan.abstracto.core.config.PostTargetEnum;
|
import dev.sheldan.abstracto.core.config.PostTargetEnum;
|
||||||
import dev.sheldan.abstracto.core.exception.ChannelNotInGuildException;
|
import dev.sheldan.abstracto.core.exception.ChannelNotInGuildException;
|
||||||
import dev.sheldan.abstracto.core.exception.GuildNotFoundException;
|
import dev.sheldan.abstracto.core.exception.GuildNotFoundException;
|
||||||
import dev.sheldan.abstracto.core.exception.PostTargetNotFoundException;
|
|
||||||
import dev.sheldan.abstracto.core.exception.PostTargetNotValidException;
|
import dev.sheldan.abstracto.core.exception.PostTargetNotValidException;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.models.database.PostTarget;
|
import dev.sheldan.abstracto.core.models.database.PostTarget;
|
||||||
@@ -80,32 +79,21 @@ public class PostTargetServiceBean implements PostTargetService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public PostTarget getPostTarget(PostTargetEnum postTargetName, Long serverId) {
|
|
||||||
PostTarget postTarget = postTargetManagement.getPostTarget(postTargetName.getKey(), serverId);
|
|
||||||
if(postTarget != null) {
|
|
||||||
return postTarget;
|
|
||||||
} else {
|
|
||||||
log.error("PostTarget {} in server {} was not found!", postTargetName, serverId);
|
|
||||||
throw new PostTargetNotFoundException(postTargetName.getKey());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<Message> sendTextInPostTarget(String text, PostTargetEnum postTargetEnum, Long serverId) {
|
public CompletableFuture<Message> sendTextInPostTarget(String text, PostTargetEnum postTargetEnum, Long serverId) {
|
||||||
PostTarget postTarget = this.getPostTarget(postTargetEnum, serverId);
|
PostTarget postTarget = getPostTarget(postTargetEnum, serverId);
|
||||||
return this.sendTextInPostTarget(text, postTarget);
|
return this.sendTextInPostTarget(text, postTarget);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<Message> sendEmbedInPostTarget(MessageEmbed embed, PostTargetEnum postTargetName, Long serverId) {
|
public CompletableFuture<Message> sendEmbedInPostTarget(MessageEmbed embed, PostTargetEnum postTargetName, Long serverId) {
|
||||||
PostTarget postTarget = this.getPostTarget(postTargetName, serverId);
|
PostTarget postTarget = getPostTarget(postTargetName, serverId);
|
||||||
return this.sendEmbedInPostTarget(embed, postTarget);
|
return this.sendEmbedInPostTarget(embed, postTarget);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<Message> sendMessageInPostTarget(Message message, PostTargetEnum postTargetName, Long serverId) {
|
public CompletableFuture<Message> sendMessageInPostTarget(Message message, PostTargetEnum postTargetName, Long serverId) {
|
||||||
PostTarget postTarget = this.getPostTarget(postTargetName, serverId);
|
PostTarget postTarget = getPostTarget(postTargetName, serverId);
|
||||||
return sendMessageInPostTarget(message, postTarget);
|
return sendMessageInPostTarget(message, postTarget);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,7 +105,7 @@ public class PostTargetServiceBean implements PostTargetService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<CompletableFuture<Message>> sendEmbedInPostTarget(MessageToSend message, PostTargetEnum postTargetName, Long serverId) {
|
public List<CompletableFuture<Message>> sendEmbedInPostTarget(MessageToSend message, PostTargetEnum postTargetName, Long serverId) {
|
||||||
PostTarget postTarget = this.getPostTarget(postTargetName, serverId);
|
PostTarget postTarget = getPostTarget(postTargetName, serverId);
|
||||||
return this.sendEmbedInPostTarget(message, postTarget);
|
return this.sendEmbedInPostTarget(message, postTarget);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -189,13 +177,13 @@ public class PostTargetServiceBean implements PostTargetService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<CompletableFuture<Message>> editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, PostTargetEnum postTargetName, Long serverId) {
|
public List<CompletableFuture<Message>> editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, PostTargetEnum postTargetName, Long serverId) {
|
||||||
PostTarget postTarget = this.getPostTarget(postTargetName, serverId);
|
PostTarget postTarget = getPostTarget(postTargetName, serverId);
|
||||||
return this.editOrCreatedInPostTarget(messageId, messageToSend, postTarget);
|
return this.editOrCreatedInPostTarget(messageId, messageToSend, postTarget);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void throwIfPostTargetIsNotDefined(PostTargetEnum name, Long serverId) {
|
public void throwIfPostTargetIsNotDefined(PostTargetEnum name, Long serverId) {
|
||||||
PostTarget postTarget = postTargetManagement.getPostTarget(name.getKey(), serverId);
|
PostTarget postTarget = getPostTarget(name, serverId);
|
||||||
if(postTarget == null) {
|
if(postTarget == null) {
|
||||||
throw new PostTargetNotValidException(name.getKey(), defaultPostTargetManagementService.getDefaultPostTargetKeys());
|
throw new PostTargetNotValidException(name.getKey(), defaultPostTargetManagementService.getDefaultPostTargetKeys());
|
||||||
}
|
}
|
||||||
@@ -208,10 +196,14 @@ public class PostTargetServiceBean implements PostTargetService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<CompletableFuture<Message>> editEmbedInPostTarget(Long messageId, MessageToSend message, PostTargetEnum postTargetName, Long serverId) {
|
public List<CompletableFuture<Message>> editEmbedInPostTarget(Long messageId, MessageToSend message, PostTargetEnum postTargetName, Long serverId) {
|
||||||
PostTarget postTarget = this.getPostTarget(postTargetName, serverId);
|
PostTarget postTarget = getPostTarget(postTargetName, serverId);
|
||||||
return editEmbedInPostTarget(messageId, message, postTarget);
|
return editEmbedInPostTarget(messageId, message, postTarget);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private PostTarget getPostTarget(PostTargetEnum postTargetEnum, Long serverId) {
|
||||||
|
return postTargetManagement.getPostTarget(postTargetEnum.getKey(), serverId);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean validPostTarget(String name) {
|
public boolean validPostTarget(String name) {
|
||||||
List<String> possiblePostTargets = defaultPostTargetManagementService.getDefaultPostTargetKeys();
|
List<String> possiblePostTargets = defaultPostTargetManagementService.getDefaultPostTargetKeys();
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package dev.sheldan.abstracto.core.service.management;
|
package dev.sheldan.abstracto.core.service.management;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.config.PostTargetEnum;
|
||||||
|
import dev.sheldan.abstracto.core.exception.PostTargetNotFoundException;
|
||||||
import dev.sheldan.abstracto.core.exception.PostTargetNotValidException;
|
import dev.sheldan.abstracto.core.exception.PostTargetNotValidException;
|
||||||
import dev.sheldan.abstracto.core.exception.ServerChannelConflictException;
|
import dev.sheldan.abstracto.core.exception.ServerChannelConflictException;
|
||||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||||
@@ -12,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -44,11 +47,11 @@ public class PostTargetManagementBean implements PostTargetManagement {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PostTarget createOrUpdate(String name, AChannel targetChannel) {
|
public PostTarget createOrUpdate(String name, AChannel targetChannel) {
|
||||||
PostTarget existing = postTargetRepository.findPostTargetByNameAndServerReference(name, targetChannel.getServer());
|
Optional<PostTarget> existingTargetOptional = getPostTargetOptional(name, targetChannel.getServer().getId());
|
||||||
if(existing == null){
|
if(!existingTargetOptional.isPresent()){
|
||||||
return this.createPostTarget(name, targetChannel);
|
return this.createPostTarget(name, targetChannel);
|
||||||
} else {
|
} else {
|
||||||
return this.updatePostTarget(existing, targetChannel);
|
return this.updatePostTarget(existingTargetOptional.get(), targetChannel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,7 +75,12 @@ public class PostTargetManagementBean implements PostTargetManagement {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PostTarget getPostTarget(String name, AServer server) {
|
public PostTarget getPostTarget(String name, AServer server) {
|
||||||
return postTargetRepository.findPostTargetByNameAndServerReference(name, server);
|
return postTargetRepository.findPostTargetByNameAndServerReference(name, server).orElseThrow(() -> new PostTargetNotFoundException(name));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PostTarget getPostTarget(PostTargetEnum postTargetEnum, AServer server) {
|
||||||
|
return getPostTarget(postTargetEnum.getKey(), server);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -81,6 +89,17 @@ public class PostTargetManagementBean implements PostTargetManagement {
|
|||||||
return getPostTarget(name, server);
|
return getPostTarget(name, server);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<PostTarget> getPostTargetOptional(String name, Long serverId) {
|
||||||
|
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||||
|
return postTargetRepository.findPostTargetByNameAndServerReference(name, server);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<PostTarget> getPostTargetOptional(PostTargetEnum postTargetEnum, Long serverId) {
|
||||||
|
return getPostTargetOptional(postTargetEnum.getKey(), serverId);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean postTargetExists(String name, AServer server) {
|
public Boolean postTargetExists(String name, AServer server) {
|
||||||
return postTargetRepository.existsByNameAndServerReference(name, server);
|
return postTargetRepository.existsByNameAndServerReference(name, server);
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ public interface PostTargetService {
|
|||||||
List<CompletableFuture<Message>> editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, PostTargetEnum postTarget, Long serverId);
|
List<CompletableFuture<Message>> editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, PostTargetEnum postTarget, Long serverId);
|
||||||
void throwIfPostTargetIsNotDefined(PostTargetEnum name, Long serverId);
|
void throwIfPostTargetIsNotDefined(PostTargetEnum name, Long serverId);
|
||||||
boolean postTargetDefinedInServer(PostTargetEnum name, Long serverId);
|
boolean postTargetDefinedInServer(PostTargetEnum name, Long serverId);
|
||||||
PostTarget getPostTarget(PostTargetEnum postTargetName, Long serverId);
|
|
||||||
boolean validPostTarget(String name);
|
boolean validPostTarget(String name);
|
||||||
List<PostTarget> getPostTargets(AServer server);
|
List<PostTarget> getPostTargets(AServer server);
|
||||||
List<String> getAvailablePostTargets();
|
List<String> getAvailablePostTargets();
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
package dev.sheldan.abstracto.core.service.management;
|
package dev.sheldan.abstracto.core.service.management;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.config.PostTargetEnum;
|
||||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
import dev.sheldan.abstracto.core.models.database.PostTarget;
|
import dev.sheldan.abstracto.core.models.database.PostTarget;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
public interface PostTargetManagement {
|
public interface PostTargetManagement {
|
||||||
PostTarget createPostTarget(String name, AChannel targetChanel);
|
PostTarget createPostTarget(String name, AChannel targetChanel);
|
||||||
@@ -12,7 +14,10 @@ public interface PostTargetManagement {
|
|||||||
PostTarget createOrUpdate(String name, AServer server, Long channelId);
|
PostTarget createOrUpdate(String name, AServer server, Long channelId);
|
||||||
PostTarget createOrUpdate(String name, Long serverId, Long channelId);
|
PostTarget createOrUpdate(String name, Long serverId, Long channelId);
|
||||||
PostTarget getPostTarget(String name, AServer server);
|
PostTarget getPostTarget(String name, AServer server);
|
||||||
|
PostTarget getPostTarget(PostTargetEnum postTargetEnum, AServer server);
|
||||||
PostTarget getPostTarget(String name, Long serverId);
|
PostTarget getPostTarget(String name, Long serverId);
|
||||||
|
Optional<PostTarget> getPostTargetOptional(String name, Long serverId);
|
||||||
|
Optional<PostTarget> getPostTargetOptional(PostTargetEnum postTargetEnum, Long serverId);
|
||||||
Boolean postTargetExists(String name, AServer server);
|
Boolean postTargetExists(String name, AServer server);
|
||||||
boolean postTargetExists(String name, Long serverId);
|
boolean postTargetExists(String name, Long serverId);
|
||||||
PostTarget updatePostTarget(PostTarget target, AChannel newTargetChannel);
|
PostTarget updatePostTarget(PostTarget target, AChannel newTargetChannel);
|
||||||
|
|||||||
Reference in New Issue
Block a user