mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-16 12:28:03 +00:00
[AB-296] adding support for buttons
adding buttons for message embed via feature mode
This commit is contained in:
@@ -2,6 +2,7 @@ package dev.sheldan.abstracto.linkembed.config;
|
||||
|
||||
import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import dev.sheldan.abstracto.core.config.FeatureDefinition;
|
||||
import dev.sheldan.abstracto.core.config.FeatureMode;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Arrays;
|
||||
@@ -19,4 +20,9 @@ public class LinkEmbedFeatureConfig implements FeatureConfig {
|
||||
public List<String> getRequiredEmotes() {
|
||||
return Arrays.asList("removeEmbed");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FeatureMode> getAvailableModes() {
|
||||
return Arrays.asList(LinkEmbedFeatureMode.DELETE_BUTTON);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package dev.sheldan.abstracto.linkembed.config;
|
||||
|
||||
import dev.sheldan.abstracto.core.config.FeatureMode;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public enum LinkEmbedFeatureMode implements FeatureMode {
|
||||
DELETE_BUTTON("messageEmbedDeleteButton");
|
||||
|
||||
private final String key;
|
||||
|
||||
LinkEmbedFeatureMode(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package dev.sheldan.abstracto.linkembed.exception;
|
||||
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoTemplatableException;
|
||||
|
||||
public class LinkEmbedRemovalNotAllowedException extends AbstractoTemplatableException {
|
||||
|
||||
public LinkEmbedRemovalNotAllowedException() {
|
||||
super("User is not allowed remove the embedded link.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTemplateName() {
|
||||
return "link_embed_removal_not_allowed_exception";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getTemplateModel() {
|
||||
return new Object();
|
||||
}
|
||||
}
|
||||
@@ -56,6 +56,9 @@ public class EmbeddedMessage implements Serializable {
|
||||
@Id
|
||||
private Long embeddingMessageId;
|
||||
|
||||
@Column(name = "deletion_component_id", length = 100)
|
||||
private String deletionComponentId;
|
||||
|
||||
@Column(name = "created", nullable = false, insertable = false, updatable = false)
|
||||
private Instant created;
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package dev.sheldan.abstracto.linkembed.model.template;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.template.button.ButtonPayload;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class MessageEmbedDeleteButtonPayload implements ButtonPayload {
|
||||
private Long embeddingServerId;
|
||||
private Long embeddingChannelId;
|
||||
private Long embeddingMessageId;
|
||||
private Long embeddedServerId;
|
||||
private Long embeddedChannelId;
|
||||
private Long embeddedMessageId;
|
||||
private Long embeddedUserId;
|
||||
private Long embeddingUserId;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package dev.sheldan.abstracto.linkembed.model.template;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
import dev.sheldan.abstracto.core.models.template.button.ButtonConfigModel;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@SuperBuilder
|
||||
public class MessageEmbeddedModel extends UserInitiatedServerContext {
|
||||
private CachedMessage embeddedMessage;
|
||||
private User author;
|
||||
private TextChannel sourceChannel;
|
||||
private Member embeddingUser;
|
||||
private ButtonConfigModel buttonConfigModel;
|
||||
private Boolean useButton;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.linkembed.service;
|
||||
|
||||
public interface MessageEmbedMetricService {
|
||||
void incrementMessageEmbedDeletedMetric(boolean embeddedUserDeleted);
|
||||
void incrementMessageEmbedDeletedEmbeddedMetric();
|
||||
void incrementMessageEmbedDeletedEmbeddingMetric();
|
||||
}
|
||||
@@ -10,7 +10,7 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface MessageEmbedPostManagementService {
|
||||
void createMessageEmbed(CachedMessage embeddedMessage, Message messageContainingEmbed, AUserInAServer cause);
|
||||
void createMessageEmbed(CachedMessage embeddedMessage, Message messageContainingEmbed, AUserInAServer cause, String deletionButtonId);
|
||||
Optional<EmbeddedMessage> findEmbeddedPostByMessageId(Long messageId);
|
||||
void deleteEmbeddedMessage(EmbeddedMessage embeddedMessage);
|
||||
List<EmbeddedMessage> getEmbeddedMessagesOlderThan(Instant date);
|
||||
|
||||
Reference in New Issue
Block a user