mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-14 03:45:57 +00:00
[AB-349] supporting multiple embeds in templating mechanism
fixing paginator without embeds
This commit is contained in:
@@ -8,7 +8,7 @@ import dev.sheldan.abstracto.core.model.PaginatorButtonPayload;
|
|||||||
import dev.sheldan.abstracto.core.models.listener.ButtonClickedListenerModel;
|
import dev.sheldan.abstracto.core.models.listener.ButtonClickedListenerModel;
|
||||||
import dev.sheldan.abstracto.core.service.MessageService;
|
import dev.sheldan.abstracto.core.service.MessageService;
|
||||||
import dev.sheldan.abstracto.core.service.PaginatorServiceBean;
|
import dev.sheldan.abstracto.core.service.PaginatorServiceBean;
|
||||||
import dev.sheldan.abstracto.core.templating.model.EmbedConfiguration;
|
import dev.sheldan.abstracto.core.templating.model.MessageConfiguration;
|
||||||
import dev.sheldan.abstracto.core.templating.model.MessageToSend;
|
import dev.sheldan.abstracto.core.templating.model.MessageToSend;
|
||||||
import dev.sheldan.abstracto.core.templating.service.TemplateService;
|
import dev.sheldan.abstracto.core.templating.service.TemplateService;
|
||||||
import dev.sheldan.abstracto.core.templating.service.TemplateServiceBean;
|
import dev.sheldan.abstracto.core.templating.service.TemplateServiceBean;
|
||||||
@@ -70,8 +70,8 @@ public class PaginatorButtonListener implements ButtonClickedListener {
|
|||||||
return ButtonClickedListenerResult.IGNORED;
|
return ButtonClickedListenerResult.IGNORED;
|
||||||
}
|
}
|
||||||
log.debug("Moving to page {} in paginator {}.", targetPage, payload.getPaginatorId());
|
log.debug("Moving to page {} in paginator {}.", targetPage, payload.getPaginatorId());
|
||||||
EmbedConfiguration embedConfiguration = payload.getEmbedConfigs().get(targetPage);
|
MessageConfiguration messageConfiguration = payload.getEmbedConfigs().get(targetPage);
|
||||||
MessageToSend messageToSend = templateServiceBean.convertEmbedConfigurationToMessageToSend(embedConfiguration);
|
MessageToSend messageToSend = templateServiceBean.convertEmbedConfigurationToMessageToSend(messageConfiguration);
|
||||||
messageService.editMessageInChannel(model.getEvent().getMessageChannel(), messageToSend, originalMessage.getIdLong())
|
messageService.editMessageInChannel(model.getEvent().getMessageChannel(), messageToSend, originalMessage.getIdLong())
|
||||||
.thenAccept(unused -> log.info("Updated paginator {} to switch to page {}.", payload.getPaginatorId(), targetPage));
|
.thenAccept(unused -> log.info("Updated paginator {} to switch to page {}.", payload.getPaginatorId(), targetPage));
|
||||||
String accessorId = UUID.randomUUID().toString();
|
String accessorId = UUID.randomUUID().toString();
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package dev.sheldan.abstracto.core.model;
|
package dev.sheldan.abstracto.core.model;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.template.button.ButtonPayload;
|
import dev.sheldan.abstracto.core.models.template.button.ButtonPayload;
|
||||||
import dev.sheldan.abstracto.core.templating.model.EmbedConfiguration;
|
import dev.sheldan.abstracto.core.templating.model.MessageConfiguration;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
@@ -12,7 +12,7 @@ import java.util.List;
|
|||||||
@Setter
|
@Setter
|
||||||
@Builder
|
@Builder
|
||||||
public class PaginatorButtonPayload implements ButtonPayload {
|
public class PaginatorButtonPayload implements ButtonPayload {
|
||||||
private List<EmbedConfiguration> embedConfigs;
|
private List<MessageConfiguration> embedConfigs;
|
||||||
private String paginatorId;
|
private String paginatorId;
|
||||||
private String exitButtonId;
|
private String exitButtonId;
|
||||||
private String startButtonId;
|
private String startButtonId;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package dev.sheldan.abstracto.core.model;
|
package dev.sheldan.abstracto.core.model;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.template.button.ButtonConfigModel;
|
import dev.sheldan.abstracto.core.models.template.button.ButtonConfigModel;
|
||||||
import dev.sheldan.abstracto.core.templating.model.EmbedConfiguration;
|
import dev.sheldan.abstracto.core.templating.model.MessageConfiguration;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
@@ -12,7 +12,7 @@ import java.util.List;
|
|||||||
@Setter
|
@Setter
|
||||||
@Builder
|
@Builder
|
||||||
public class PaginatorConfiguration {
|
public class PaginatorConfiguration {
|
||||||
private List<EmbedConfiguration> embedConfigs;
|
private List<MessageConfiguration> embedConfigs;
|
||||||
private String paginatorId;
|
private String paginatorId;
|
||||||
private Long timeoutSeconds;
|
private Long timeoutSeconds;
|
||||||
private Boolean restrictUser;
|
private Boolean restrictUser;
|
||||||
|
|||||||
@@ -205,26 +205,42 @@ public class ChannelServiceBean implements ChannelService {
|
|||||||
}
|
}
|
||||||
List<CompletableFuture<Message>> futures = new ArrayList<>();
|
List<CompletableFuture<Message>> futures = new ArrayList<>();
|
||||||
List<MessageAction> allMessageActions = new ArrayList<>();
|
List<MessageAction> allMessageActions = new ArrayList<>();
|
||||||
int iterations = Math.min(messageToSend.getMessages().size(), messageToSend.getEmbeds().size());
|
Iterator<MessageEmbed> embedIterator = messageToSend.getEmbeds().iterator();
|
||||||
for (int i = 0; i < iterations; i++) {
|
for (int i = 0; i < messageToSend.getMessages().size(); i++) {
|
||||||
metricService.incrementCounter(MESSAGE_SEND_METRIC);
|
|
||||||
String text = messageToSend.getMessages().get(i);
|
|
||||||
MessageEmbed embed = messageToSend.getEmbeds().get(i);
|
|
||||||
MessageAction messageAction = textChannel.sendMessage(text).setEmbeds(embed);
|
|
||||||
allMessageActions.add(messageAction);
|
|
||||||
}
|
|
||||||
// one of these loops will get additional iterations, if the number is different, not both
|
|
||||||
for (int i = iterations; i < messageToSend.getMessages().size(); i++) {
|
|
||||||
metricService.incrementCounter(MESSAGE_SEND_METRIC);
|
metricService.incrementCounter(MESSAGE_SEND_METRIC);
|
||||||
String text = messageToSend.getMessages().get(i);
|
String text = messageToSend.getMessages().get(i);
|
||||||
|
List<MessageEmbed> messageEmbeds = new ArrayList<>();
|
||||||
|
while(embedIterator.hasNext()) {
|
||||||
|
MessageEmbed embedToAdd = embedIterator.next();
|
||||||
|
if((currentEmbedLength(messageEmbeds) + embedToAdd.getLength()) >= MessageEmbed.EMBED_MAX_LENGTH_BOT) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
messageEmbeds.add(embedToAdd);
|
||||||
|
embedIterator.remove();
|
||||||
|
}
|
||||||
MessageAction messageAction = textChannel.sendMessage(text);
|
MessageAction messageAction = textChannel.sendMessage(text);
|
||||||
|
if(!messageEmbeds.isEmpty()) {
|
||||||
|
messageAction.setEmbeds(messageEmbeds);
|
||||||
|
}
|
||||||
allMessageActions.add(messageAction);
|
allMessageActions.add(messageAction);
|
||||||
}
|
}
|
||||||
for (int i = iterations; i < messageToSend.getEmbeds().size(); i++) {
|
List<MessageEmbed> messageEmbeds = new ArrayList<>();
|
||||||
|
// reset the iterator, because if the if in the above while iterator loop applied, we already took it out from the iterator
|
||||||
|
// but we didnt add it yet, so it would be lost
|
||||||
|
embedIterator = messageToSend.getEmbeds().iterator();
|
||||||
|
while(embedIterator.hasNext()) {
|
||||||
|
MessageEmbed embedToAdd = embedIterator.next();
|
||||||
|
if((currentEmbedLength(messageEmbeds) + embedToAdd.getLength()) >= MessageEmbed.EMBED_MAX_LENGTH_BOT && !messageEmbeds.isEmpty()) {
|
||||||
|
allMessageActions.add(textChannel.sendMessageEmbeds(messageEmbeds));
|
||||||
|
metricService.incrementCounter(MESSAGE_SEND_METRIC);
|
||||||
|
messageEmbeds = new ArrayList<>();
|
||||||
|
}
|
||||||
|
messageEmbeds.add(embedToAdd);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!messageEmbeds.isEmpty()) {
|
||||||
|
allMessageActions.add(textChannel.sendMessageEmbeds(messageEmbeds));
|
||||||
metricService.incrementCounter(MESSAGE_SEND_METRIC);
|
metricService.incrementCounter(MESSAGE_SEND_METRIC);
|
||||||
MessageEmbed embed = messageToSend.getEmbeds().get(i);
|
|
||||||
MessageAction messageAction = textChannel.sendMessageEmbeds(embed);
|
|
||||||
allMessageActions.add(messageAction);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
List<ActionRow> actionRows = messageToSend.getActionRows();
|
List<ActionRow> actionRows = messageToSend.getActionRows();
|
||||||
@@ -270,6 +286,10 @@ public class ChannelServiceBean implements ChannelService {
|
|||||||
return futures;
|
return futures;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Integer currentEmbedLength(List<MessageEmbed> messageEmbeds) {
|
||||||
|
return messageEmbeds.stream().mapToInt(MessageEmbed::getLength).sum();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void editMessageInAChannel(MessageToSend messageToSend, AChannel channel, Long messageId) {
|
public void editMessageInAChannel(MessageToSend messageToSend, AChannel channel, Long messageId) {
|
||||||
Optional<TextChannel> textChannelFromServer = getTextChannelFromServerOptional(channel.getServer().getId(), channel.getId());
|
Optional<TextChannel> textChannelFromServer = getTextChannelFromServerOptional(channel.getServer().getId(), channel.getId());
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import dev.sheldan.abstracto.core.model.PaginatorModel;
|
|||||||
import dev.sheldan.abstracto.core.models.template.button.ButtonConfigModel;
|
import dev.sheldan.abstracto.core.models.template.button.ButtonConfigModel;
|
||||||
import dev.sheldan.abstracto.core.service.management.ComponentPayloadManagementService;
|
import dev.sheldan.abstracto.core.service.management.ComponentPayloadManagementService;
|
||||||
import dev.sheldan.abstracto.core.templating.model.EmbedConfiguration;
|
import dev.sheldan.abstracto.core.templating.model.EmbedConfiguration;
|
||||||
|
import dev.sheldan.abstracto.core.templating.model.MessageConfiguration;
|
||||||
import dev.sheldan.abstracto.core.templating.model.EmbedFooter;
|
import dev.sheldan.abstracto.core.templating.model.EmbedFooter;
|
||||||
import dev.sheldan.abstracto.core.templating.model.MessageToSend;
|
import dev.sheldan.abstracto.core.templating.model.MessageToSend;
|
||||||
import dev.sheldan.abstracto.core.templating.service.TemplateService;
|
import dev.sheldan.abstracto.core.templating.service.TemplateService;
|
||||||
@@ -109,8 +110,8 @@ public class PaginatorServiceBean implements PaginatorService {
|
|||||||
configuration.setLastButton(initializeButton(lastButtonId, buttonPayload));
|
configuration.setLastButton(initializeButton(lastButtonId, buttonPayload));
|
||||||
}
|
}
|
||||||
|
|
||||||
EmbedConfiguration embedConfiguration = configuration.getEmbedConfigs().get(0);
|
MessageConfiguration messageConfiguration = configuration.getEmbedConfigs().get(0);
|
||||||
MessageToSend messageToSend = templateServiceBean.convertEmbedConfigurationToMessageToSend(embedConfiguration);
|
MessageToSend messageToSend = templateServiceBean.convertEmbedConfigurationToMessageToSend(messageConfiguration);
|
||||||
List<CompletableFuture<Message>> paginatorFutures = channelService.sendMessageToSendToChannel(messageToSend, textChannel);
|
List<CompletableFuture<Message>> paginatorFutures = channelService.sendMessageToSendToChannel(messageToSend, textChannel);
|
||||||
return FutureUtils.toSingleFutureGeneric(paginatorFutures)
|
return FutureUtils.toSingleFutureGeneric(paginatorFutures)
|
||||||
.thenAccept(unused -> self.setupButtonPayloads(paginatorFutures.get(0).join(), configuration, serverId, buttonPayload));
|
.thenAccept(unused -> self.setupButtonPayloads(paginatorFutures.get(0).join(), configuration, serverId, buttonPayload));
|
||||||
@@ -124,11 +125,15 @@ public class PaginatorServiceBean implements PaginatorService {
|
|||||||
.pageCount(configuration.getEmbedConfigs().size())
|
.pageCount(configuration.getEmbedConfigs().size())
|
||||||
.build();
|
.build();
|
||||||
String footerText = templateService.renderTemplate(PAGINATOR_FOOTER_TEMPLATE_KEY, paginatorModel);
|
String footerText = templateService.renderTemplate(PAGINATOR_FOOTER_TEMPLATE_KEY, paginatorModel);
|
||||||
EmbedConfiguration embedConfiguration = configuration.getEmbedConfigs().get(i);
|
MessageConfiguration messageConfig = configuration.getEmbedConfigs().get(i);
|
||||||
if(embedConfiguration.getFooter() == null) {
|
if(messageConfig.getEmbeds() == null || messageConfig.getEmbeds().isEmpty()) {
|
||||||
embedConfiguration.setFooter(EmbedFooter.builder().text(footerText).build());
|
messageConfig.setEmbeds(new ArrayList<>(Arrays.asList(EmbedConfiguration.builder().build())));
|
||||||
|
}
|
||||||
|
EmbedConfiguration messageConfiguration = messageConfig.getEmbeds().get(0);
|
||||||
|
if(messageConfiguration.getFooter() == null) {
|
||||||
|
messageConfiguration.setFooter(EmbedFooter.builder().text(footerText).build());
|
||||||
} else {
|
} else {
|
||||||
embedConfiguration.getFooter().setText(footerText);
|
messageConfiguration.getFooter().setText(footerText);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,10 +7,6 @@ import lombok.Setter;
|
|||||||
import java.time.OffsetDateTime;
|
import java.time.OffsetDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
|
||||||
* The whole container object used to deserialize the whole embed configuration
|
|
||||||
* https://raw.githubusercontent.com/DV8FromTheWorld/JDA/assets/assets/docs/embeds/07-addField.png
|
|
||||||
*/
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@Builder
|
@Builder
|
||||||
@@ -51,11 +47,6 @@ public class EmbedConfiguration {
|
|||||||
* The {@link OffsetDateTime} object used as the time stamp in the {@link net.dv8tion.jda.api.entities.MessageEmbed}
|
* The {@link OffsetDateTime} object used as the time stamp in the {@link net.dv8tion.jda.api.entities.MessageEmbed}
|
||||||
*/
|
*/
|
||||||
private OffsetDateTime timeStamp;
|
private OffsetDateTime timeStamp;
|
||||||
private Long referencedMessageId;
|
|
||||||
/**
|
|
||||||
* The message which is posted along the {@link net.dv8tion.jda.api.entities.MessageEmbed} as a normal message.
|
|
||||||
*/
|
|
||||||
private String additionalMessage;
|
|
||||||
private MetaEmbedConfiguration metaConfig;
|
private MetaEmbedConfiguration metaConfig;
|
||||||
private List<ButtonConfig> buttons;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ public class EmbedField {
|
|||||||
* This means, if multiple fields can be put on the same height in the {@link net.dv8tion.jda.api.entities.MessageEmbed} this will be done by discord.
|
* This means, if multiple fields can be put on the same height in the {@link net.dv8tion.jda.api.entities.MessageEmbed} this will be done by discord.
|
||||||
*/
|
*/
|
||||||
private Boolean inline;
|
private Boolean inline;
|
||||||
private Boolean forceNewMessage;
|
private Boolean forceNewEmbed;
|
||||||
/**
|
/**
|
||||||
* this will actively limit the length, not create another field
|
* this will actively limit the length, not create another field
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package dev.sheldan.abstracto.core.templating.model;
|
||||||
|
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The whole container object used to deserialize the whole embed configuration
|
||||||
|
* https://raw.githubusercontent.com/DV8FromTheWorld/JDA/assets/assets/docs/embeds/07-addField.png
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@Builder
|
||||||
|
public class MessageConfiguration {
|
||||||
|
private List<EmbedConfiguration> embeds;
|
||||||
|
private Long referencedMessageId;
|
||||||
|
/**
|
||||||
|
* The message which is posted along the {@link net.dv8tion.jda.api.entities.MessageEmbed} as a normal message.
|
||||||
|
*/
|
||||||
|
private String additionalMessage;
|
||||||
|
private MetaMessageConfiguration messageConfig;
|
||||||
|
private List<ButtonConfig> buttons;
|
||||||
|
}
|
||||||
@@ -8,19 +8,6 @@ import lombok.Setter;
|
|||||||
@Setter
|
@Setter
|
||||||
@Builder
|
@Builder
|
||||||
public class MetaEmbedConfiguration {
|
public class MetaEmbedConfiguration {
|
||||||
private Integer additionalMessageLengthLimit;
|
|
||||||
private Integer additionalMessageSplitLength;
|
|
||||||
private Integer descriptionMessageLengthLimit;
|
private Integer descriptionMessageLengthLimit;
|
||||||
private Integer messageLimit;
|
|
||||||
|
|
||||||
@Builder.Default
|
|
||||||
private boolean ephemeral = false;
|
|
||||||
|
|
||||||
private boolean preventEmptyEmbed;
|
private boolean preventEmptyEmbed;
|
||||||
private boolean allowsRoleMention;
|
|
||||||
private boolean allowsEveryoneMention;
|
|
||||||
@Builder.Default
|
|
||||||
private boolean allowsUserMention = true;
|
|
||||||
@Builder.Default
|
|
||||||
private boolean mentionsReferencedMessage = true;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package dev.sheldan.abstracto.core.templating.model;
|
||||||
|
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@Builder
|
||||||
|
public class MetaMessageConfiguration {
|
||||||
|
@Builder.Default
|
||||||
|
private boolean ephemeral = false;
|
||||||
|
|
||||||
|
private boolean allowsRoleMention;
|
||||||
|
private boolean allowsEveryoneMention;
|
||||||
|
|
||||||
|
@Builder.Default
|
||||||
|
private boolean allowsUserMention = true;
|
||||||
|
@Builder.Default
|
||||||
|
private boolean mentionsReferencedMessage = true;
|
||||||
|
|
||||||
|
private Integer messageLimit;
|
||||||
|
|
||||||
|
private Integer additionalMessageLengthLimit;
|
||||||
|
private Integer additionalMessageSplitLength;
|
||||||
|
}
|
||||||
@@ -67,9 +67,9 @@ public class TemplateServiceBean implements TemplateService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the key which gets suffixed with '_embed' and this retrieves the embed configuration. This configuration is then rendered
|
* Retrieves the key which gets suffixed with '_embed' and this retrieves the embed configuration. This configuration is then rendered
|
||||||
* and de-serialized with GSON into a {@link EmbedConfiguration} object. This object is then rendered into a {@link MessageToSend} and returned.
|
* and de-serialized with GSON into a {@link MessageConfiguration} object. This object is then rendered into a {@link MessageToSend} and returned.
|
||||||
* If the individual element do not fit in an embed, for example, if the field count is to high, another embed will be created in the {@link MessageToSend} object.
|
* If the individual element do not fit in an embed, for example, if the field count is to high, another embed will be created in the {@link MessageToSend} object.
|
||||||
* If multiple embeds are necessary to provide what the {@link EmbedConfiguration} wanted, this method will automatically set the footer of the additional {@link MessageEmbed}
|
* If multiple embeds are necessary to provide what the {@link MessageConfiguration} wanted, this method will automatically set the footer of the additional {@link MessageEmbed}
|
||||||
* with a formatted page count.
|
* with a formatted page count.
|
||||||
* This method will to try its best to provided a message which can be handled by discord without rejecting it. Besides that, the content from the rendered template, will be passed
|
* This method will to try its best to provided a message which can be handled by discord without rejecting it. Besides that, the content from the rendered template, will be passed
|
||||||
* into the {@link EmbedBuilder} directly.
|
* into the {@link EmbedBuilder} directly.
|
||||||
@@ -81,35 +81,21 @@ public class TemplateServiceBean implements TemplateService {
|
|||||||
@Override
|
@Override
|
||||||
public MessageToSend renderEmbedTemplate(String key, Object model) {
|
public MessageToSend renderEmbedTemplate(String key, Object model) {
|
||||||
String embedConfig = this.renderTemplate(key + "_embed", model);
|
String embedConfig = this.renderTemplate(key + "_embed", model);
|
||||||
EmbedConfiguration embedConfiguration = gson.fromJson(embedConfig, EmbedConfiguration.class);
|
MessageConfiguration messageConfiguration = gson.fromJson(embedConfig, MessageConfiguration.class);
|
||||||
return convertEmbedConfigurationToMessageToSend(embedConfiguration);
|
return convertEmbedConfigurationToMessageToSend(messageConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
public MessageToSend convertEmbedConfigurationToMessageToSend(EmbedConfiguration embedConfiguration) {
|
public MessageToSend convertEmbedConfigurationToMessageToSend(MessageConfiguration messageConfiguration) {
|
||||||
List<EmbedBuilder> embedBuilders = new ArrayList<>();
|
List<EmbedBuilder> embedBuilders = new ArrayList<>();
|
||||||
embedBuilders.add(new EmbedBuilder());
|
if(messageConfiguration.getEmbeds() != null && !messageConfiguration.getEmbeds().isEmpty()) {
|
||||||
if(embedConfiguration.getMetaConfig() != null &&
|
convertEmbeds(messageConfiguration, embedBuilders);
|
||||||
embedConfiguration.getDescription() != null &&
|
|
||||||
embedConfiguration.getMetaConfig().getDescriptionMessageLengthLimit() != null &&
|
|
||||||
embedConfiguration.getDescription().length() > embedConfiguration.getMetaConfig().getDescriptionMessageLengthLimit())
|
|
||||||
{
|
|
||||||
embedConfiguration.setDescription(embedConfiguration.getDescription().substring(0,
|
|
||||||
embedConfiguration.getMetaConfig().getDescriptionMessageLengthLimit()));
|
|
||||||
}
|
|
||||||
String description = embedConfiguration.getDescription();
|
|
||||||
if (description != null) {
|
|
||||||
handleEmbedDescription(embedBuilders, description);
|
|
||||||
}
|
|
||||||
EmbedAuthor author = embedConfiguration.getAuthor();
|
|
||||||
EmbedBuilder firstBuilder = embedBuilders.get(0);
|
|
||||||
if (author != null) {
|
|
||||||
firstBuilder.setAuthor(author.getName(), author.getUrl(), author.getAvatar());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
List<ActionRow> buttons = new ArrayList<>();
|
List<ActionRow> buttons = new ArrayList<>();
|
||||||
Map<String, MessageToSend.ComponentConfig> componentPayloads = new HashMap<>();
|
Map<String, MessageToSend.ComponentConfig> componentPayloads = new HashMap<>();
|
||||||
if(embedConfiguration.getButtons() != null) {
|
if(messageConfiguration.getButtons() != null) {
|
||||||
ActionRow currentRow = null;
|
ActionRow currentRow = null;
|
||||||
for (ButtonConfig buttonConfig : embedConfiguration.getButtons()) {
|
for (ButtonConfig buttonConfig : messageConfiguration.getButtons()) {
|
||||||
ButtonMetaConfig metaConfig = buttonConfig.getMetaConfig() != null ? buttonConfig.getMetaConfig() : null;
|
ButtonMetaConfig metaConfig = buttonConfig.getMetaConfig() != null ? buttonConfig.getMetaConfig() : null;
|
||||||
String id = metaConfig != null && Boolean.TRUE.equals(metaConfig.getGenerateRandomUUID()) ?
|
String id = metaConfig != null && Boolean.TRUE.equals(metaConfig.getGenerateRandomUUID()) ?
|
||||||
UUID.randomUUID().toString() : buttonConfig.getId();
|
UUID.randomUUID().toString() : buttonConfig.getId();
|
||||||
@@ -155,57 +141,36 @@ public class TemplateServiceBean implements TemplateService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String thumbnail = embedConfiguration.getThumbnail();
|
|
||||||
if (thumbnail != null) {
|
|
||||||
firstBuilder.setThumbnail(thumbnail);
|
|
||||||
}
|
|
||||||
EmbedTitle title = embedConfiguration.getTitle();
|
|
||||||
if (title != null) {
|
|
||||||
firstBuilder.setTitle(title.getTitle(), title.getUrl());
|
|
||||||
}
|
|
||||||
EmbedFooter footer = embedConfiguration.getFooter();
|
|
||||||
if (footer != null) {
|
|
||||||
firstBuilder.setFooter(footer.getText(), footer.getIcon());
|
|
||||||
}
|
|
||||||
if (embedConfiguration.getFields() != null) {
|
|
||||||
createFieldsForEmbed(embedBuilders, embedConfiguration);
|
|
||||||
}
|
|
||||||
firstBuilder.setTimestamp(embedConfiguration.getTimeStamp());
|
|
||||||
|
|
||||||
firstBuilder.setImage(embedConfiguration.getImageUrl());
|
|
||||||
|
|
||||||
EmbedColor color = embedConfiguration.getColor();
|
|
||||||
if (color != null) {
|
|
||||||
int colorToSet = new Color(color.getR(), color.getG(), color.getB()).getRGB();
|
|
||||||
embedBuilders.forEach(embedBuilder -> embedBuilder.setColor(colorToSet));
|
|
||||||
}
|
|
||||||
|
|
||||||
setPagingFooters(embedBuilders);
|
setPagingFooters(embedBuilders);
|
||||||
|
|
||||||
List<MessageEmbed> embeds = new ArrayList<>();
|
List<MessageEmbed> embeds = new ArrayList<>();
|
||||||
if ((embedBuilders.size() > 1 || !embedBuilders.get(0).isEmpty()) && !isEmptyEmbed(embedConfiguration)) {
|
if (!embedBuilders.isEmpty()) {
|
||||||
embeds = embedBuilders.stream().map(EmbedBuilder::build).collect(Collectors.toList());
|
embeds = embedBuilders
|
||||||
|
.stream()
|
||||||
|
.filter(embedBuilder -> !embedBuilder.isEmpty())
|
||||||
|
.map(EmbedBuilder::build)
|
||||||
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> messages = new ArrayList<>();
|
List<String> messages = new ArrayList<>();
|
||||||
if(
|
if(
|
||||||
embedConfiguration.getMetaConfig() != null &&
|
messageConfiguration.getMessageConfig() != null &&
|
||||||
embedConfiguration.getMetaConfig().getAdditionalMessageLengthLimit() != null &&
|
messageConfiguration.getMessageConfig().getAdditionalMessageLengthLimit() != null &&
|
||||||
embedConfiguration.getAdditionalMessage().length() > embedConfiguration.getMetaConfig().getAdditionalMessageLengthLimit()
|
messageConfiguration.getAdditionalMessage().length() > messageConfiguration.getMessageConfig().getAdditionalMessageLengthLimit()
|
||||||
) {
|
) {
|
||||||
embedConfiguration.setAdditionalMessage(embedConfiguration.getAdditionalMessage().substring(0, embedConfiguration.getMetaConfig().getAdditionalMessageLengthLimit()));
|
messageConfiguration.setAdditionalMessage(messageConfiguration.getAdditionalMessage().substring(0, messageConfiguration.getMessageConfig().getAdditionalMessageLengthLimit()));
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isEphemeral = false;
|
boolean isEphemeral = false;
|
||||||
if(embedConfiguration.getMetaConfig() != null) {
|
if(messageConfiguration.getMessageConfig() != null) {
|
||||||
isEphemeral = Boolean.TRUE.equals(embedConfiguration.getMetaConfig().isEphemeral());
|
isEphemeral = Boolean.TRUE.equals(messageConfiguration.getMessageConfig().isEphemeral());
|
||||||
}
|
}
|
||||||
|
|
||||||
String additionalMessage = embedConfiguration.getAdditionalMessage();
|
String additionalMessage = messageConfiguration.getAdditionalMessage();
|
||||||
if(additionalMessage != null) {
|
if(additionalMessage != null) {
|
||||||
Long segmentLimit = embedConfiguration.getMetaConfig() != null
|
Long segmentLimit = messageConfiguration.getMessageConfig() != null
|
||||||
&& embedConfiguration.getMetaConfig().getAdditionalMessageSplitLength() != null ?
|
&& messageConfiguration.getMessageConfig().getAdditionalMessageSplitLength() != null ?
|
||||||
embedConfiguration.getMetaConfig().getAdditionalMessageSplitLength() :
|
messageConfiguration.getMessageConfig().getAdditionalMessageSplitLength() :
|
||||||
Long.valueOf(Message.MAX_CONTENT_LENGTH);
|
Long.valueOf(Message.MAX_CONTENT_LENGTH);
|
||||||
if(additionalMessage.length() > segmentLimit) {
|
if(additionalMessage.length() > segmentLimit) {
|
||||||
int segmentStart = 0;
|
int segmentStart = 0;
|
||||||
@@ -233,8 +198,8 @@ public class TemplateServiceBean implements TemplateService {
|
|||||||
if(serverContext.getServerId() != null) {
|
if(serverContext.getServerId() != null) {
|
||||||
messageLimit = Math.min(messageLimit, configService.getLongValueOrConfigDefault(CoreFeatureConfig.MAX_MESSAGES_KEY, serverContext.getServerId()));
|
messageLimit = Math.min(messageLimit, configService.getLongValueOrConfigDefault(CoreFeatureConfig.MAX_MESSAGES_KEY, serverContext.getServerId()));
|
||||||
}
|
}
|
||||||
if(embedConfiguration.getMetaConfig() != null && embedConfiguration.getMetaConfig().getMessageLimit() != null) {
|
if(messageConfiguration.getMessageConfig() != null && messageConfiguration.getMessageConfig().getMessageLimit() != null) {
|
||||||
messageLimit = Math.min(messageLimit, embedConfiguration.getMetaConfig().getMessageLimit());
|
messageLimit = Math.min(messageLimit, messageConfiguration.getMessageConfig().getMessageLimit());
|
||||||
}
|
}
|
||||||
if(embeds.size() > messageLimit) {
|
if(embeds.size() > messageLimit) {
|
||||||
log.info("Limiting size of embeds. Max allowed: {}, currently: {}.", messageLimit, embeds.size());
|
log.info("Limiting size of embeds. Max allowed: {}, currently: {}.", messageLimit, embeds.size());
|
||||||
@@ -244,11 +209,11 @@ public class TemplateServiceBean implements TemplateService {
|
|||||||
log.info("Limiting size of messages. Max allowed: {}, currently: {}.", messageLimit, messages.size());
|
log.info("Limiting size of messages. Max allowed: {}, currently: {}.", messageLimit, messages.size());
|
||||||
messages.subList(messageLimit.intValue(), messages.size()).clear();
|
messages.subList(messageLimit.intValue(), messages.size()).clear();
|
||||||
}
|
}
|
||||||
Long referencedMessageId = embedConfiguration.getReferencedMessageId();
|
Long referencedMessageId = messageConfiguration.getReferencedMessageId();
|
||||||
|
|
||||||
return MessageToSend.builder()
|
return MessageToSend.builder()
|
||||||
.embeds(embeds)
|
.embeds(embeds)
|
||||||
.messageConfig(createMessageConfig(embedConfiguration.getMetaConfig()))
|
.messageConfig(createMessageConfig(messageConfiguration.getMessageConfig()))
|
||||||
.messages(messages)
|
.messages(messages)
|
||||||
.ephemeral(isEphemeral)
|
.ephemeral(isEphemeral)
|
||||||
.actionRows(buttons)
|
.actionRows(buttons)
|
||||||
@@ -257,16 +222,75 @@ public class TemplateServiceBean implements TemplateService {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private MessageConfig createMessageConfig(MetaEmbedConfiguration metaEmbedConfiguration) {
|
private void convertEmbeds(MessageConfiguration messageConfiguration, List<EmbedBuilder> embedBuilders) {
|
||||||
if(metaEmbedConfiguration == null) {
|
int currentEffectiveEmbed;
|
||||||
|
for (int embedIndex = 0; embedIndex < messageConfiguration.getEmbeds().size(); embedIndex++) {
|
||||||
|
currentEffectiveEmbed = embedBuilders.size();
|
||||||
|
EmbedConfiguration embedConfiguration = messageConfiguration.getEmbeds().get(embedIndex);
|
||||||
|
if(isEmptyEmbed(embedConfiguration)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
EmbedBuilder mainEmbedBuilder = new EmbedBuilder();
|
||||||
|
if(embedConfiguration.getMetaConfig() != null &&
|
||||||
|
embedConfiguration.getDescription() != null &&
|
||||||
|
embedConfiguration.getMetaConfig().getDescriptionMessageLengthLimit() != null &&
|
||||||
|
embedConfiguration.getDescription().length() > embedConfiguration.getMetaConfig().getDescriptionMessageLengthLimit())
|
||||||
|
{
|
||||||
|
embedConfiguration.setDescription(embedConfiguration.getDescription().substring(0,
|
||||||
|
embedConfiguration.getMetaConfig().getDescriptionMessageLengthLimit()));
|
||||||
|
}
|
||||||
|
EmbedAuthor author = embedConfiguration.getAuthor();
|
||||||
|
|
||||||
|
if (author != null) {
|
||||||
|
mainEmbedBuilder.setAuthor(author.getName(), author.getUrl(), author.getAvatar());
|
||||||
|
}
|
||||||
|
String thumbnail = embedConfiguration.getThumbnail();
|
||||||
|
if (thumbnail != null) {
|
||||||
|
mainEmbedBuilder.setThumbnail(thumbnail);
|
||||||
|
}
|
||||||
|
EmbedTitle title = embedConfiguration.getTitle();
|
||||||
|
if (title != null) {
|
||||||
|
mainEmbedBuilder.setTitle(title.getTitle(), title.getUrl());
|
||||||
|
}
|
||||||
|
EmbedFooter footer = embedConfiguration.getFooter();
|
||||||
|
if (footer != null) {
|
||||||
|
mainEmbedBuilder.setFooter(footer.getText(), footer.getIcon());
|
||||||
|
}
|
||||||
|
mainEmbedBuilder.setTimestamp(embedConfiguration.getTimeStamp());
|
||||||
|
|
||||||
|
mainEmbedBuilder.setImage(embedConfiguration.getImageUrl());
|
||||||
|
|
||||||
|
embedBuilders.add(mainEmbedBuilder);
|
||||||
|
|
||||||
|
String description = embedConfiguration.getDescription();
|
||||||
|
if (description != null) {
|
||||||
|
handleEmbedDescription(embedBuilders, description);
|
||||||
|
}
|
||||||
|
if (embedConfiguration.getFields() != null) {
|
||||||
|
createFieldsForEmbed(embedBuilders, embedConfiguration);
|
||||||
|
}
|
||||||
|
|
||||||
|
EmbedColor color = embedConfiguration.getColor();
|
||||||
|
if (color != null) {
|
||||||
|
int colorToSet = new Color(color.getR(), color.getG(), color.getB()).getRGB();
|
||||||
|
for (int i = currentEffectiveEmbed; i < embedBuilders.size(); i++) {
|
||||||
|
EmbedBuilder embedBuilder = embedBuilders.get(i);
|
||||||
|
embedBuilder.setColor(colorToSet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private MessageConfig createMessageConfig(MetaMessageConfiguration messageconfiguration) {
|
||||||
|
if(messageconfiguration == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return MessageConfig
|
return MessageConfig
|
||||||
.builder()
|
.builder()
|
||||||
.allowsEveryoneMention(metaEmbedConfiguration.isAllowsEveryoneMention())
|
.allowsEveryoneMention(messageconfiguration.isAllowsEveryoneMention())
|
||||||
.allowsUserMention(metaEmbedConfiguration.isAllowsUserMention())
|
.allowsUserMention(messageconfiguration.isAllowsUserMention())
|
||||||
.allowsRoleMention(metaEmbedConfiguration.isAllowsRoleMention())
|
.allowsRoleMention(messageconfiguration.isAllowsRoleMention())
|
||||||
.mentionsReferencedMessage(metaEmbedConfiguration.isMentionsReferencedMessage())
|
.mentionsReferencedMessage(messageconfiguration.isMentionsReferencedMessage())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -278,7 +302,8 @@ public class TemplateServiceBean implements TemplateService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void handleEmbedDescription(List<EmbedBuilder> embedBuilders, String description) {
|
private void handleEmbedDescription(List<EmbedBuilder> embedBuilders, String description) {
|
||||||
int segmentCounter = 0;
|
// we need to start with the "current" one, and can then extend onto it
|
||||||
|
int segmentCounter = Math.max(embedBuilders.size() - 1, 0);
|
||||||
int segmentStart = 0;
|
int segmentStart = 0;
|
||||||
int segmentEnd = MessageEmbed.TEXT_MAX_LENGTH;
|
int segmentEnd = MessageEmbed.TEXT_MAX_LENGTH;
|
||||||
int handledIndex = 0;
|
int handledIndex = 0;
|
||||||
@@ -334,6 +359,10 @@ public class TemplateServiceBean implements TemplateService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method limits the fields: if there are limits configured.
|
||||||
|
* It also splits the fields into multiple fields, if the length is over the limit. The newly created fields, get a title with a suffixed 2.
|
||||||
|
*/
|
||||||
private void splitFieldsIntoAppropriateLengths(EmbedConfiguration configuration) {
|
private void splitFieldsIntoAppropriateLengths(EmbedConfiguration configuration) {
|
||||||
Comparator<AdditionalEmbedField> comparator = Comparator.comparing(o -> o.fieldIndex);
|
Comparator<AdditionalEmbedField> comparator = Comparator.comparing(o -> o.fieldIndex);
|
||||||
// we need to reverse this, because the insertion need to be done from the back to the front, because we only insert according to field index
|
// we need to reverse this, because the insertion need to be done from the back to the front, because we only insert according to field index
|
||||||
@@ -358,19 +387,27 @@ public class TemplateServiceBean implements TemplateService {
|
|||||||
int handledIndex = 0;
|
int handledIndex = 0;
|
||||||
String fullFieldValue = field.getValue();
|
String fullFieldValue = field.getValue();
|
||||||
while(handledIndex < fullFieldValue.length()) {
|
while(handledIndex < fullFieldValue.length()) {
|
||||||
|
// lets determine how much text we can handle, if we iterated multiple times over this, the segement
|
||||||
|
// start has a value, so some things are cut off
|
||||||
int segmentLength = fullFieldValue.length() - segmentStart;
|
int segmentLength = fullFieldValue.length() - segmentStart;
|
||||||
|
// if its over the hard limit for a field
|
||||||
if(segmentLength > MessageEmbed.VALUE_MAX_LENGTH) {
|
if(segmentLength > MessageEmbed.VALUE_MAX_LENGTH) {
|
||||||
|
// find the last space in the text, as a natural "splitting point"
|
||||||
int lastSpace = fullFieldValue.substring(segmentStart, segmentEnd).lastIndexOf(" ");
|
int lastSpace = fullFieldValue.substring(segmentStart, segmentEnd).lastIndexOf(" ");
|
||||||
if(lastSpace != -1) {
|
if(lastSpace != -1) {
|
||||||
|
// and use this as the new end
|
||||||
segmentEnd = segmentStart + lastSpace;
|
segmentEnd = segmentStart + lastSpace;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// just use the full length
|
||||||
segmentEnd = fullFieldValue.length();
|
segmentEnd = fullFieldValue.length();
|
||||||
}
|
}
|
||||||
|
// cut the field value to be appropriate
|
||||||
String fieldValue = fullFieldValue.substring(segmentStart, segmentEnd);
|
String fieldValue = fullFieldValue.substring(segmentStart, segmentEnd);
|
||||||
if(segmentCounter == 0) {
|
if(segmentCounter == 0) {
|
||||||
field.setValue(fieldValue);
|
field.setValue(fieldValue);
|
||||||
} else {
|
} else {
|
||||||
|
// if we are in an additional segment, we have to create a new embed field, to hold our values
|
||||||
EmbedField newField = EmbedField
|
EmbedField newField = EmbedField
|
||||||
.builder()
|
.builder()
|
||||||
.inline(field.getInline())
|
.inline(field.getInline())
|
||||||
@@ -386,6 +423,7 @@ public class TemplateServiceBean implements TemplateService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// insert additional fields
|
||||||
for (AdditionalEmbedField field : toInsert) {
|
for (AdditionalEmbedField field : toInsert) {
|
||||||
configuration.getFields().add(field.getFieldIndex() + 1, field.getField());
|
configuration.getFields().add(field.getFieldIndex() + 1, field.getField());
|
||||||
}
|
}
|
||||||
@@ -393,24 +431,30 @@ public class TemplateServiceBean implements TemplateService {
|
|||||||
|
|
||||||
private void createFieldsForEmbed(List<EmbedBuilder> embedBuilders, EmbedConfiguration configuration) {
|
private void createFieldsForEmbed(List<EmbedBuilder> embedBuilders, EmbedConfiguration configuration) {
|
||||||
splitFieldsIntoAppropriateLengths(configuration);
|
splitFieldsIntoAppropriateLengths(configuration);
|
||||||
int actualCurrentIndex = 0;
|
int embedLocalFieldIndex = 0;
|
||||||
int neededMessages = 0;
|
int neededEmbeds = embedBuilders.size() - 1;
|
||||||
for (int i = 0; i < configuration.getFields().size(); i++) {
|
for (int i = 0; i < configuration.getFields().size(); i++) {
|
||||||
EmbedField field = configuration.getFields().get(i);
|
EmbedField field = configuration.getFields().get(i);
|
||||||
boolean lastMessageInEmbed = ((actualCurrentIndex + 1) % MAX_FIELD_COUNT) == 0;
|
// determine if we are the last field allowed in this embed
|
||||||
boolean isStartOfNewMessage = (actualCurrentIndex % MAX_FIELD_COUNT) == 0;
|
boolean lastMessageInEmbed = ((embedLocalFieldIndex + 1) % MAX_FIELD_COUNT) == 0;
|
||||||
boolean newMessageForcedWithinEmbeds = Boolean.TRUE.equals(field.getForceNewMessage()) && !lastMessageInEmbed;
|
// determine if we are at the beginning of a new message, that means we have the embed index 0
|
||||||
boolean startOfNewMessage = actualCurrentIndex != 0 && isStartOfNewMessage;
|
boolean isStartOfNewEmbed = (embedLocalFieldIndex % MAX_FIELD_COUNT) == 0;
|
||||||
if (newMessageForcedWithinEmbeds || startOfNewMessage) {
|
// whether or not we have to force a new embed, but only if we are not the last message, then its fine anyway
|
||||||
actualCurrentIndex = 0;
|
boolean newMessageForcedWithinEmbeds = Boolean.TRUE.equals(field.getForceNewEmbed()) && !lastMessageInEmbed;
|
||||||
neededMessages++;
|
// if we are at the start of an _additional_ embed, this is false at the first embed
|
||||||
|
boolean startOfNewMessage = embedLocalFieldIndex != 0 && isStartOfNewEmbed;
|
||||||
|
int fieldLength = field.getName().length() + field.getValue().length();
|
||||||
|
boolean currentEmbedOverTotalLimit = (embedBuilders.get(neededEmbeds).length() + fieldLength) > MessageEmbed.EMBED_MAX_LENGTH_BOT;
|
||||||
|
if (newMessageForcedWithinEmbeds || startOfNewMessage || currentEmbedOverTotalLimit) {
|
||||||
|
embedLocalFieldIndex = 0;
|
||||||
|
neededEmbeds++;
|
||||||
} else {
|
} else {
|
||||||
actualCurrentIndex++;
|
embedLocalFieldIndex++;
|
||||||
}
|
}
|
||||||
extendIfNecessary(embedBuilders, neededMessages);
|
extendIfNecessary(embedBuilders, neededEmbeds);
|
||||||
EmbedField embedField = configuration.getFields().get(i);
|
EmbedField embedField = configuration.getFields().get(i);
|
||||||
boolean inline = embedField.getInline() != null ? embedField.getInline() : Boolean.FALSE;
|
boolean inline = embedField.getInline() != null ? embedField.getInline() : Boolean.FALSE;
|
||||||
embedBuilders.get(neededMessages).addField(embedField.getName(), embedField.getValue(), inline);
|
embedBuilders.get(neededEmbeds).addField(embedField.getName(), embedField.getValue(), inline);
|
||||||
}
|
}
|
||||||
Comparator<AdditionalEmbed> comparator = Comparator.comparing(o -> o.embedIndex);
|
Comparator<AdditionalEmbed> comparator = Comparator.comparing(o -> o.embedIndex);
|
||||||
// we need to reverse this, because the insertion need to be done from the back to the front, because we only insert according to field index
|
// we need to reverse this, because the insertion need to be done from the back to the front, because we only insert according to field index
|
||||||
|
|||||||
@@ -98,14 +98,14 @@ public class TemplateServiceBeanTest {
|
|||||||
String additionalMessage = RandomStringUtils.randomAlphabetic(3500);
|
String additionalMessage = RandomStringUtils.randomAlphabetic(3500);
|
||||||
when(configService.getLongValueOrConfigDefault(CoreFeatureConfig.MAX_MESSAGES_KEY, SERVER_ID)).thenReturn(5L);
|
when(configService.getLongValueOrConfigDefault(CoreFeatureConfig.MAX_MESSAGES_KEY, SERVER_ID)).thenReturn(5L);
|
||||||
String templateContent = String.format("{ \"additionalMessage\": \"%s\"}", additionalMessage);
|
String templateContent = String.format("{ \"additionalMessage\": \"%s\"}", additionalMessage);
|
||||||
EmbedConfiguration config = Mockito.mock(EmbedConfiguration.class);
|
MessageConfiguration config = Mockito.mock(MessageConfiguration.class);
|
||||||
MetaEmbedConfiguration metaConfig = Mockito.mock(MetaEmbedConfiguration.class);
|
MetaMessageConfiguration metaConfig = Mockito.mock(MetaMessageConfiguration.class);
|
||||||
when(config.getMetaConfig()).thenReturn(metaConfig);
|
when(config.getMessageConfig()).thenReturn(metaConfig);
|
||||||
when(metaConfig.getAdditionalMessageSplitLength()).thenReturn(2000);
|
when(metaConfig.getAdditionalMessageSplitLength()).thenReturn(2000);
|
||||||
when(config.getAdditionalMessage()).thenReturn(additionalMessage);
|
when(config.getAdditionalMessage()).thenReturn(additionalMessage);
|
||||||
when(metaConfig.getMessageLimit()).thenReturn(5);
|
when(metaConfig.getMessageLimit()).thenReturn(5);
|
||||||
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(new Template(getEmbedTemplateKey(), templateContent, getNonMockedConfiguration()));
|
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(new Template(getEmbedTemplateKey(), templateContent, getNonMockedConfiguration()));
|
||||||
when(gson.fromJson(templateContent, EmbedConfiguration.class)).thenReturn(config);
|
when(gson.fromJson(templateContent, MessageConfiguration.class)).thenReturn(config);
|
||||||
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new Object());
|
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new Object());
|
||||||
Assert.assertEquals(2, messageToSend.getMessages().size());
|
Assert.assertEquals(2, messageToSend.getMessages().size());
|
||||||
Assert.assertEquals(additionalMessage.substring(0, 2000), messageToSend.getMessages().get(0));
|
Assert.assertEquals(additionalMessage.substring(0, 2000), messageToSend.getMessages().get(0));
|
||||||
@@ -118,14 +118,14 @@ public class TemplateServiceBeanTest {
|
|||||||
String additionalMessage = RandomStringUtils.randomAlphabetic(3500);
|
String additionalMessage = RandomStringUtils.randomAlphabetic(3500);
|
||||||
when(configService.getLongValueOrConfigDefault(CoreFeatureConfig.MAX_MESSAGES_KEY, SERVER_ID)).thenReturn(5L);
|
when(configService.getLongValueOrConfigDefault(CoreFeatureConfig.MAX_MESSAGES_KEY, SERVER_ID)).thenReturn(5L);
|
||||||
String templateContent = String.format("{ \"additionalMessage\": \"%s\", \"messageLimit\": 1}", additionalMessage);
|
String templateContent = String.format("{ \"additionalMessage\": \"%s\", \"messageLimit\": 1}", additionalMessage);
|
||||||
EmbedConfiguration config = Mockito.mock(EmbedConfiguration.class);
|
MessageConfiguration config = Mockito.mock(MessageConfiguration.class);
|
||||||
MetaEmbedConfiguration metaConfig = Mockito.mock(MetaEmbedConfiguration.class);
|
MetaMessageConfiguration metaConfig = Mockito.mock(MetaMessageConfiguration.class);
|
||||||
when(config.getMetaConfig()).thenReturn(metaConfig);
|
when(config.getMessageConfig()).thenReturn(metaConfig);
|
||||||
when(metaConfig.getAdditionalMessageSplitLength()).thenReturn(2000);
|
when(metaConfig.getAdditionalMessageSplitLength()).thenReturn(2000);
|
||||||
when(config.getAdditionalMessage()).thenReturn(additionalMessage);
|
when(config.getAdditionalMessage()).thenReturn(additionalMessage);
|
||||||
when(metaConfig.getMessageLimit()).thenReturn(1);
|
when(metaConfig.getMessageLimit()).thenReturn(1);
|
||||||
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(new Template(getEmbedTemplateKey(), templateContent, getNonMockedConfiguration()));
|
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(new Template(getEmbedTemplateKey(), templateContent, getNonMockedConfiguration()));
|
||||||
when(gson.fromJson(templateContent, EmbedConfiguration.class)).thenReturn(config);
|
when(gson.fromJson(templateContent, MessageConfiguration.class)).thenReturn(config);
|
||||||
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new Object());
|
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new Object());
|
||||||
Assert.assertEquals(1, messageToSend.getMessages().size());
|
Assert.assertEquals(1, messageToSend.getMessages().size());
|
||||||
Assert.assertEquals(additionalMessage.substring(0, 2000), messageToSend.getMessages().get(0));
|
Assert.assertEquals(additionalMessage.substring(0, 2000), messageToSend.getMessages().get(0));
|
||||||
@@ -137,14 +137,14 @@ public class TemplateServiceBeanTest {
|
|||||||
String additionalMessage = RandomStringUtils.randomAlphabetic(3500);
|
String additionalMessage = RandomStringUtils.randomAlphabetic(3500);
|
||||||
when(configService.getLongValueOrConfigDefault(CoreFeatureConfig.MAX_MESSAGES_KEY, SERVER_ID)).thenReturn(5L);
|
when(configService.getLongValueOrConfigDefault(CoreFeatureConfig.MAX_MESSAGES_KEY, SERVER_ID)).thenReturn(5L);
|
||||||
String templateContent = String.format("{ \"additionalMessage\": \"%s\"}", additionalMessage);
|
String templateContent = String.format("{ \"additionalMessage\": \"%s\"}", additionalMessage);
|
||||||
EmbedConfiguration config = Mockito.mock(EmbedConfiguration.class);
|
MessageConfiguration config = Mockito.mock(MessageConfiguration.class);
|
||||||
MetaEmbedConfiguration metaConfig = Mockito.mock(MetaEmbedConfiguration.class);
|
MetaMessageConfiguration metaConfig = Mockito.mock(MetaMessageConfiguration.class);
|
||||||
when(config.getMetaConfig()).thenReturn(metaConfig);
|
when(config.getMessageConfig()).thenReturn(metaConfig);
|
||||||
when(metaConfig.getAdditionalMessageSplitLength()).thenReturn(500);
|
when(metaConfig.getAdditionalMessageSplitLength()).thenReturn(500);
|
||||||
when(metaConfig.getMessageLimit()).thenReturn(5);
|
when(metaConfig.getMessageLimit()).thenReturn(5);
|
||||||
when(config.getAdditionalMessage()).thenReturn(additionalMessage);
|
when(config.getAdditionalMessage()).thenReturn(additionalMessage);
|
||||||
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(new Template(getEmbedTemplateKey(), templateContent, getNonMockedConfiguration()));
|
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(new Template(getEmbedTemplateKey(), templateContent, getNonMockedConfiguration()));
|
||||||
when(gson.fromJson(templateContent, EmbedConfiguration.class)).thenReturn(config);
|
when(gson.fromJson(templateContent, MessageConfiguration.class)).thenReturn(config);
|
||||||
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new Object());
|
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new Object());
|
||||||
Assert.assertEquals(5, messageToSend.getMessages().size());
|
Assert.assertEquals(5, messageToSend.getMessages().size());
|
||||||
Assert.assertEquals(additionalMessage.substring(0, 500), messageToSend.getMessages().get(0));
|
Assert.assertEquals(additionalMessage.substring(0, 500), messageToSend.getMessages().get(0));
|
||||||
@@ -168,7 +168,7 @@ public class TemplateServiceBeanTest {
|
|||||||
String descriptionText = "test";
|
String descriptionText = "test";
|
||||||
String fullEmbedTemplateKey = getEmbedTemplateKey();
|
String fullEmbedTemplateKey = getEmbedTemplateKey();
|
||||||
when(configuration.getTemplate(fullEmbedTemplateKey, null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithDescription(descriptionText));
|
when(configuration.getTemplate(fullEmbedTemplateKey, null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithDescription(descriptionText));
|
||||||
when(gson.fromJson(embedTemplateWithDescription(descriptionText), EmbedConfiguration.class)).thenReturn(embedConfigWithDescription(descriptionText));
|
when(gson.fromJson(embedTemplateWithDescription(descriptionText), MessageConfiguration.class)).thenReturn(embedConfigWithDescription(descriptionText));
|
||||||
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
||||||
Assert.assertEquals(descriptionText, messageToSend.getEmbeds().get(0).getDescription());
|
Assert.assertEquals(descriptionText, messageToSend.getEmbeds().get(0).getDescription());
|
||||||
}
|
}
|
||||||
@@ -177,7 +177,7 @@ public class TemplateServiceBeanTest {
|
|||||||
public void testEmbedWithAllUsableAttributes() throws IOException, TemplateException {
|
public void testEmbedWithAllUsableAttributes() throws IOException, TemplateException {
|
||||||
setupServerAware();
|
setupServerAware();
|
||||||
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithFallFieldsUsedOnce());
|
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithFallFieldsUsedOnce());
|
||||||
when(gson.fromJson(getFullEmbedConfigString(), EmbedConfiguration.class)).thenReturn(getFullEmbedConfiguration());
|
when(gson.fromJson(getFullEmbedConfigString(), MessageConfiguration.class)).thenReturn(getFullEmbedConfiguration());
|
||||||
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
||||||
Assert.assertEquals("additionalMessage", messageToSend.getMessages().get(0));
|
Assert.assertEquals("additionalMessage", messageToSend.getMessages().get(0));
|
||||||
MessageEmbed onlyEmbed = messageToSend.getEmbeds().get(0);
|
MessageEmbed onlyEmbed = messageToSend.getEmbeds().get(0);
|
||||||
@@ -207,7 +207,7 @@ public class TemplateServiceBeanTest {
|
|||||||
String descriptionText = RandomStringUtils.randomAlphabetic(MessageEmbed.TEXT_MAX_LENGTH + tooMuchCharacterCount);
|
String descriptionText = RandomStringUtils.randomAlphabetic(MessageEmbed.TEXT_MAX_LENGTH + tooMuchCharacterCount);
|
||||||
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithDescription(descriptionText));
|
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithDescription(descriptionText));
|
||||||
when(configuration.getTemplate(EMBED_PAGE_COUNT_TEMPLATE, null, SERVER_ID, null, true, false)).thenReturn(getPageCountTemplate(1));
|
when(configuration.getTemplate(EMBED_PAGE_COUNT_TEMPLATE, null, SERVER_ID, null, true, false)).thenReturn(getPageCountTemplate(1));
|
||||||
when(gson.fromJson(embedTemplateWithDescription(descriptionText), EmbedConfiguration.class)).thenReturn(embedConfigWithDescription(descriptionText));
|
when(gson.fromJson(embedTemplateWithDescription(descriptionText), MessageConfiguration.class)).thenReturn(embedConfigWithDescription(descriptionText));
|
||||||
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
||||||
MessageEmbed firstEmbed = messageToSend.getEmbeds().get(0);
|
MessageEmbed firstEmbed = messageToSend.getEmbeds().get(0);
|
||||||
Assert.assertEquals(MessageEmbed.TEXT_MAX_LENGTH, firstEmbed.getDescription().length());
|
Assert.assertEquals(MessageEmbed.TEXT_MAX_LENGTH, firstEmbed.getDescription().length());
|
||||||
@@ -223,7 +223,7 @@ public class TemplateServiceBeanTest {
|
|||||||
int totalFieldCount = 30;
|
int totalFieldCount = 30;
|
||||||
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithFieldCount(totalFieldCount));
|
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithFieldCount(totalFieldCount));
|
||||||
when(configuration.getTemplate(EMBED_PAGE_COUNT_TEMPLATE, null, SERVER_ID, null, true, false)).thenReturn(getPageCountTemplate(1));
|
when(configuration.getTemplate(EMBED_PAGE_COUNT_TEMPLATE, null, SERVER_ID, null, true, false)).thenReturn(getPageCountTemplate(1));
|
||||||
when(gson.fromJson(getFieldsEmbedConfigAsString(totalFieldCount), EmbedConfiguration.class)).thenReturn(getTooManyFieldsEmbedConfiguration());
|
when(gson.fromJson(getFieldsEmbedConfigAsString(totalFieldCount), MessageConfiguration.class)).thenReturn(getTooManyFieldsEmbedConfiguration());
|
||||||
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
||||||
MessageEmbed firstEmbed = messageToSend.getEmbeds().get(0);
|
MessageEmbed firstEmbed = messageToSend.getEmbeds().get(0);
|
||||||
Assert.assertEquals(25, firstEmbed.getFields().size());
|
Assert.assertEquals(25, firstEmbed.getFields().size());
|
||||||
@@ -237,7 +237,7 @@ public class TemplateServiceBeanTest {
|
|||||||
String fieldValue = RandomStringUtils.randomAlphabetic(1500);
|
String fieldValue = RandomStringUtils.randomAlphabetic(1500);
|
||||||
when(configService.getLongValueOrConfigDefault(CoreFeatureConfig.MAX_MESSAGES_KEY, SERVER_ID)).thenReturn(5L);
|
when(configService.getLongValueOrConfigDefault(CoreFeatureConfig.MAX_MESSAGES_KEY, SERVER_ID)).thenReturn(5L);
|
||||||
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithTooLongField(fieldValue));
|
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithTooLongField(fieldValue));
|
||||||
when(gson.fromJson(getSingleFieldWithValue(fieldValue), EmbedConfiguration.class)).thenReturn(getEmbedWithSingleFieldOfValue(fieldValue));
|
when(gson.fromJson(getSingleFieldWithValue(fieldValue), MessageConfiguration.class)).thenReturn(getEmbedWithSingleFieldOfValue(fieldValue));
|
||||||
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
||||||
MessageEmbed firstEmbed = messageToSend.getEmbeds().get(0);
|
MessageEmbed firstEmbed = messageToSend.getEmbeds().get(0);
|
||||||
Assert.assertEquals(2, firstEmbed.getFields().size());
|
Assert.assertEquals(2, firstEmbed.getFields().size());
|
||||||
@@ -253,7 +253,7 @@ public class TemplateServiceBeanTest {
|
|||||||
String secondPart = RandomStringUtils.randomAlphabetic(partsLength);
|
String secondPart = RandomStringUtils.randomAlphabetic(partsLength);
|
||||||
String fieldValue = firstPart + " " + secondPart;
|
String fieldValue = firstPart + " " + secondPart;
|
||||||
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithTooLongField(fieldValue));
|
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithTooLongField(fieldValue));
|
||||||
when(gson.fromJson(getSingleFieldWithValue(fieldValue), EmbedConfiguration.class)).thenReturn(getEmbedWithSingleFieldOfValue(fieldValue));
|
when(gson.fromJson(getSingleFieldWithValue(fieldValue), MessageConfiguration.class)).thenReturn(getEmbedWithSingleFieldOfValue(fieldValue));
|
||||||
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
||||||
MessageEmbed firstEmbed = messageToSend.getEmbeds().get(0);
|
MessageEmbed firstEmbed = messageToSend.getEmbeds().get(0);
|
||||||
Assert.assertEquals(2, firstEmbed.getFields().size());
|
Assert.assertEquals(2, firstEmbed.getFields().size());
|
||||||
@@ -270,7 +270,7 @@ public class TemplateServiceBeanTest {
|
|||||||
String descriptionText = firstPart + " " + secondPart;
|
String descriptionText = firstPart + " " + secondPart;
|
||||||
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithDescription(descriptionText));
|
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithDescription(descriptionText));
|
||||||
when(configuration.getTemplate(EMBED_PAGE_COUNT_TEMPLATE, null, SERVER_ID, null, true, false)).thenReturn(getPageCountTemplate(1));
|
when(configuration.getTemplate(EMBED_PAGE_COUNT_TEMPLATE, null, SERVER_ID, null, true, false)).thenReturn(getPageCountTemplate(1));
|
||||||
when(gson.fromJson(embedTemplateWithDescription(descriptionText), EmbedConfiguration.class)).thenReturn(embedConfigWithDescription(descriptionText));
|
when(gson.fromJson(embedTemplateWithDescription(descriptionText), MessageConfiguration.class)).thenReturn(embedConfigWithDescription(descriptionText));
|
||||||
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
||||||
Assert.assertEquals(2, messageToSend.getEmbeds().size());
|
Assert.assertEquals(2, messageToSend.getEmbeds().size());
|
||||||
MessageEmbed firstEmbed = messageToSend.getEmbeds().get(0);
|
MessageEmbed firstEmbed = messageToSend.getEmbeds().get(0);
|
||||||
@@ -291,7 +291,7 @@ public class TemplateServiceBeanTest {
|
|||||||
String descriptionText = firstPart + " " + secondPart + " " + thirdPart;
|
String descriptionText = firstPart + " " + secondPart + " " + thirdPart;
|
||||||
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithDescription(descriptionText));
|
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithDescription(descriptionText));
|
||||||
when(configuration.getTemplate(EMBED_PAGE_COUNT_TEMPLATE, null, SERVER_ID, null, true, false)).thenReturn(getPageCountTemplate(1));
|
when(configuration.getTemplate(EMBED_PAGE_COUNT_TEMPLATE, null, SERVER_ID, null, true, false)).thenReturn(getPageCountTemplate(1));
|
||||||
when(gson.fromJson(embedTemplateWithDescription(descriptionText), EmbedConfiguration.class)).thenReturn(embedConfigWithDescription(descriptionText));
|
when(gson.fromJson(embedTemplateWithDescription(descriptionText), MessageConfiguration.class)).thenReturn(embedConfigWithDescription(descriptionText));
|
||||||
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
||||||
Assert.assertEquals(3, messageToSend.getEmbeds().size());
|
Assert.assertEquals(3, messageToSend.getEmbeds().size());
|
||||||
MessageEmbed firstEmbed = messageToSend.getEmbeds().get(0);
|
MessageEmbed firstEmbed = messageToSend.getEmbeds().get(0);
|
||||||
@@ -315,7 +315,7 @@ public class TemplateServiceBeanTest {
|
|||||||
String descriptionText = firstPart + " " + secondPart + " " + thirdPart;
|
String descriptionText = firstPart + " " + secondPart + " " + thirdPart;
|
||||||
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithDescription(descriptionText));
|
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithDescription(descriptionText));
|
||||||
when(configuration.getTemplate(EMBED_PAGE_COUNT_TEMPLATE, null, SERVER_ID, null, true, false)).thenReturn(getPageCountTemplate(1));
|
when(configuration.getTemplate(EMBED_PAGE_COUNT_TEMPLATE, null, SERVER_ID, null, true, false)).thenReturn(getPageCountTemplate(1));
|
||||||
when(gson.fromJson(embedTemplateWithDescription(descriptionText), EmbedConfiguration.class)).thenReturn(embedConfigWithDescription(descriptionText));
|
when(gson.fromJson(embedTemplateWithDescription(descriptionText), MessageConfiguration.class)).thenReturn(embedConfigWithDescription(descriptionText));
|
||||||
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
||||||
Assert.assertEquals(2, messageToSend.getEmbeds().size());
|
Assert.assertEquals(2, messageToSend.getEmbeds().size());
|
||||||
MessageEmbed firstEmbed = messageToSend.getEmbeds().get(0);
|
MessageEmbed firstEmbed = messageToSend.getEmbeds().get(0);
|
||||||
@@ -341,7 +341,7 @@ public class TemplateServiceBeanTest {
|
|||||||
|
|
||||||
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithFieldValues(fieldValues));
|
when(configuration.getTemplate(getEmbedTemplateKey(), null, SERVER_ID, null, true, false)).thenReturn(getEmbedTemplateWithFieldValues(fieldValues));
|
||||||
when(configuration.getTemplate(EMBED_PAGE_COUNT_TEMPLATE, null, SERVER_ID, null, true, false)).thenReturn(getPageCountTemplate(1));
|
when(configuration.getTemplate(EMBED_PAGE_COUNT_TEMPLATE, null, SERVER_ID, null, true, false)).thenReturn(getPageCountTemplate(1));
|
||||||
when(gson.fromJson(getFields(fieldValues), EmbedConfiguration.class)).thenReturn(getEmbedWithFields(fieldValues));
|
when(gson.fromJson(getFields(fieldValues), MessageConfiguration.class)).thenReturn(getEmbedWithFields(fieldValues));
|
||||||
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
MessageToSend messageToSend = templateServiceBean.renderEmbedTemplate(TEMPLATE_KEY, new HashMap<>());
|
||||||
Assert.assertEquals(2, messageToSend.getEmbeds().size());
|
Assert.assertEquals(2, messageToSend.getEmbeds().size());
|
||||||
MessageEmbed firstEmbed = messageToSend.getEmbeds().get(0);
|
MessageEmbed firstEmbed = messageToSend.getEmbeds().get(0);
|
||||||
@@ -379,29 +379,47 @@ public class TemplateServiceBeanTest {
|
|||||||
templateServiceBean.renderTemplateWithMap(TEMPLATE_KEY, new HashMap<>());
|
templateServiceBean.renderTemplateWithMap(TEMPLATE_KEY, new HashMap<>());
|
||||||
}
|
}
|
||||||
|
|
||||||
private EmbedConfiguration embedConfigWithDescription(String descriptionText) {
|
private MessageConfiguration embedConfigWithDescription(String descriptionText) {
|
||||||
return EmbedConfiguration.builder().description(descriptionText).build();
|
return MessageConfiguration
|
||||||
|
.builder()
|
||||||
|
.embeds(Arrays.asList(EmbedConfiguration
|
||||||
|
.builder()
|
||||||
|
.description(descriptionText)
|
||||||
|
.build()))
|
||||||
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private EmbedConfiguration getEmbedWithSingleFieldOfValue(String value) {
|
private MessageConfiguration getEmbedWithSingleFieldOfValue(String value) {
|
||||||
List<EmbedField> fields = new ArrayList<>();
|
List<EmbedField> fields = new ArrayList<>();
|
||||||
fields.add(EmbedField.builder().name("name").value(value).build());
|
fields.add(EmbedField.builder().name("name").value(value).build());
|
||||||
return EmbedConfiguration.builder().fields(fields).build();
|
return MessageConfiguration
|
||||||
|
.builder()
|
||||||
|
.embeds(Arrays.asList(EmbedConfiguration
|
||||||
|
.builder()
|
||||||
|
.fields(fields)
|
||||||
|
.build()))
|
||||||
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getEmbedTemplateKey() {
|
private String getEmbedTemplateKey() {
|
||||||
return TEMPLATE_KEY + "_embed";
|
return TEMPLATE_KEY + "_embed";
|
||||||
}
|
}
|
||||||
|
|
||||||
private EmbedConfiguration getEmbedWithFields(List<String> fieldValues) {
|
private MessageConfiguration getEmbedWithFields(List<String> fieldValues) {
|
||||||
List<EmbedField> fields = new ArrayList<>();
|
List<EmbedField> fields = new ArrayList<>();
|
||||||
fieldValues.forEach(s -> {
|
fieldValues.forEach(s -> {
|
||||||
fields.add(EmbedField.builder().name("name").value(s).build());
|
fields.add(EmbedField.builder().name("name").value(s).build());
|
||||||
});
|
});
|
||||||
return EmbedConfiguration.builder().fields(fields).build();
|
return MessageConfiguration
|
||||||
|
.builder()
|
||||||
|
.embeds(Arrays.asList(EmbedConfiguration
|
||||||
|
.builder()
|
||||||
|
.fields(fields)
|
||||||
|
.build()))
|
||||||
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private EmbedConfiguration getTooManyFieldsEmbedConfiguration() {
|
private MessageConfiguration getTooManyFieldsEmbedConfiguration() {
|
||||||
List<EmbedField> fields = new ArrayList<>();
|
List<EmbedField> fields = new ArrayList<>();
|
||||||
for (int i = 0; i < 30; i++) {
|
for (int i = 0; i < 30; i++) {
|
||||||
EmbedField field = EmbedField
|
EmbedField field = EmbedField
|
||||||
@@ -412,7 +430,13 @@ public class TemplateServiceBeanTest {
|
|||||||
.build();
|
.build();
|
||||||
fields.add(field);
|
fields.add(field);
|
||||||
}
|
}
|
||||||
return EmbedConfiguration.builder().fields(fields).build();
|
return MessageConfiguration
|
||||||
|
.builder()
|
||||||
|
.embeds(Arrays.asList(EmbedConfiguration
|
||||||
|
.builder()
|
||||||
|
.fields(fields)
|
||||||
|
.build()))
|
||||||
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Templatable getTemplatableWithSimpleTemplate() {
|
private Templatable getTemplatableWithSimpleTemplate() {
|
||||||
@@ -429,7 +453,7 @@ public class TemplateServiceBeanTest {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private EmbedConfiguration getFullEmbedConfiguration() {
|
private MessageConfiguration getFullEmbedConfiguration() {
|
||||||
|
|
||||||
EmbedAuthor author = EmbedAuthor
|
EmbedAuthor author = EmbedAuthor
|
||||||
.builder()
|
.builder()
|
||||||
@@ -463,17 +487,20 @@ public class TemplateServiceBeanTest {
|
|||||||
.title("title")
|
.title("title")
|
||||||
.url(EXAMPLE_URL)
|
.url(EXAMPLE_URL)
|
||||||
.build();
|
.build();
|
||||||
return EmbedConfiguration
|
return MessageConfiguration
|
||||||
.builder()
|
.builder()
|
||||||
.fields(Arrays.asList(field))
|
.embeds(Arrays.asList(EmbedConfiguration
|
||||||
.footer(footer)
|
.builder()
|
||||||
.author(author)
|
.fields(Arrays.asList(field))
|
||||||
.title(title)
|
.footer(footer)
|
||||||
.color(color)
|
.author(author)
|
||||||
.description("description")
|
.title(title)
|
||||||
|
.color(color)
|
||||||
|
.description("description")
|
||||||
|
.imageUrl(EXAMPLE_URL)
|
||||||
|
.thumbnail(EXAMPLE_URL)
|
||||||
|
.build()))
|
||||||
.additionalMessage("additionalMessage")
|
.additionalMessage("additionalMessage")
|
||||||
.imageUrl(EXAMPLE_URL)
|
|
||||||
.thumbnail(EXAMPLE_URL)
|
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -511,33 +538,33 @@ public class TemplateServiceBeanTest {
|
|||||||
|
|
||||||
private String getFieldsEmbedConfigAsString(Integer count) {
|
private String getFieldsEmbedConfigAsString(Integer count) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("{\"fields\": [");
|
sb.append("{\"embeds\": [{\"fields\": [");
|
||||||
for (int i = 0; i < count - 1; i++) {
|
for (int i = 0; i < count - 1; i++) {
|
||||||
sb.append(FIELD_TEMPLATE + ",");
|
sb.append(FIELD_TEMPLATE + ",");
|
||||||
}
|
}
|
||||||
sb.append(FIELD_TEMPLATE +
|
sb.append(FIELD_TEMPLATE +
|
||||||
"]\n" +
|
"]}]\n" +
|
||||||
"}");
|
"}");
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getFields(List<String> fieldValues) {
|
private String getFields(List<String> fieldValues) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("{\"fields\": [");
|
sb.append("{\"embeds\": [ {\"fields\": [");
|
||||||
for (String fieldValue: fieldValues) {
|
for (String fieldValue: fieldValues) {
|
||||||
sb.append(getSingleFieldWithValue(fieldValue));
|
sb.append(getSingleFieldWithValue(fieldValue));
|
||||||
}
|
}
|
||||||
sb.append("]\n" +
|
sb.append("]}]\n" +
|
||||||
"}");
|
"}");
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getSingleFieldWithValue(String value) {
|
private String getSingleFieldWithValue(String value) {
|
||||||
return String.format("{\"fields\": [" + FIELD_TEMPLATE_WITH_VALUE + "]\n}",value);
|
return String.format("{\"embeds\": [{\"fields\": [" + FIELD_TEMPLATE_WITH_VALUE + "]}]\n}",value);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String embedTemplateWithDescription(String description) {
|
private String embedTemplateWithDescription(String description) {
|
||||||
return String.format("{ \"description\": \"%s\"}", description);
|
return String.format("{\"embeds\": [{ \"description\": \"%s\"}]}", description);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getEmbedPageCount(Integer page) {
|
private String getEmbedPageCount(Integer page) {
|
||||||
|
|||||||
@@ -1,28 +1,32 @@
|
|||||||
{
|
{
|
||||||
"author": {
|
"embeds": [
|
||||||
"name": "name",
|
|
||||||
"avatar": "https://example.com",
|
|
||||||
"url": "https://example.com"
|
|
||||||
},
|
|
||||||
"color" : {
|
|
||||||
"r": 255,
|
|
||||||
"g": 255,
|
|
||||||
"b": 255
|
|
||||||
},
|
|
||||||
"description": "description",
|
|
||||||
"thumbnail": "https://example.com",
|
|
||||||
"imageURL": "https://example.com",
|
|
||||||
"fields": [
|
|
||||||
{
|
{
|
||||||
"name": "name",
|
"author": {
|
||||||
"value": "value",
|
"name": "name",
|
||||||
"inline": "true"
|
"avatar": "https://example.com",
|
||||||
|
"url": "https://example.com"
|
||||||
|
},
|
||||||
|
"color": {
|
||||||
|
"r": 255,
|
||||||
|
"g": 255,
|
||||||
|
"b": 255
|
||||||
|
},
|
||||||
|
"description": "description",
|
||||||
|
"thumbnail": "https://example.com",
|
||||||
|
"imageURL": "https://example.com",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"name": "name",
|
||||||
|
"value": "value",
|
||||||
|
"inline": "true"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"footer": {
|
||||||
|
"text": "text",
|
||||||
|
"icon": "https://example.com"
|
||||||
|
},
|
||||||
|
"timeStamp": "timestamp"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"footer": {
|
|
||||||
"text": "text",
|
|
||||||
"icon": "https://example.com"
|
|
||||||
},
|
|
||||||
"timeStamp": "timestamp",
|
|
||||||
"additionalMessage": "additionalMessage"
|
"additionalMessage": "additionalMessage"
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user