diff --git a/libs/chat-workflow/src/main/java/org/finos/springbot/workflow/response/WorkResponse.java b/libs/chat-workflow/src/main/java/org/finos/springbot/workflow/response/WorkResponse.java index e12e9c7b0..254583bc6 100644 --- a/libs/chat-workflow/src/main/java/org/finos/springbot/workflow/response/WorkResponse.java +++ b/libs/chat-workflow/src/main/java/org/finos/springbot/workflow/response/WorkResponse.java @@ -24,6 +24,7 @@ public class WorkResponse extends DataResponse { public static final String DEFAULT_FORM_TEMPLATE_VIEW = "default-view"; public static final String ERRORS_KEY = "errors"; public static final String OBJECT_KEY = "form"; + public static final String SUMMARY_KEY = "summary-key"; private final WorkMode mode; private final Class formClass; @@ -45,6 +46,13 @@ public WorkResponse(Addressable to, Object o, WorkMode m) { this(to, o, m, null, null); } + /** + * Call this contructor to create a work response with summary + */ + public WorkResponse(Addressable to, Object o, WorkMode m, String summary) { + this(to, createEntityMapWithSummay(o, null, null, summary), getTemplateNameForObject(m, o), m, o.getClass()); + } + public static Map createEntityMap(Object o, ButtonList buttons, ErrorMap errors) { Map json = new HashMap<>(); json.put(ButtonList.KEY, buttons == null ? new ButtonList() : buttons); @@ -52,6 +60,13 @@ public static Map createEntityMap(Object o, ButtonList buttons, json.put(OBJECT_KEY, o); return json; } + + public static Map createEntityMapWithSummay(Object o, ButtonList buttons, ErrorMap errors, String summary) { + Map map = createEntityMap(o, buttons, errors); + map.put(SUMMARY_KEY, summary); + + return map; + } public static String getTemplateNameForObject(WorkMode m, Object o) { return getTemplateNameForClass(m, o.getClass()); diff --git a/libs/teams/teams-chat-workflow-spring-boot-starter/src/main/java/org/finos/springbot/teams/handlers/TeamsResponseHandler.java b/libs/teams/teams-chat-workflow-spring-boot-starter/src/main/java/org/finos/springbot/teams/handlers/TeamsResponseHandler.java index b0ea4f240..af2d1cac9 100644 --- a/libs/teams/teams-chat-workflow-spring-boot-starter/src/main/java/org/finos/springbot/teams/handlers/TeamsResponseHandler.java +++ b/libs/teams/teams-chat-workflow-spring-boot-starter/src/main/java/org/finos/springbot/teams/handlers/TeamsResponseHandler.java @@ -8,13 +8,11 @@ import java.util.concurrent.CompletionException; import java.util.function.BiFunction; -import org.apache.commons.lang3.StringUtils; import org.finos.springbot.teams.TeamsException; import org.finos.springbot.teams.content.TeamsAddressable; import org.finos.springbot.teams.conversations.TeamsErrorResourceResponse; import org.finos.springbot.teams.history.StorageIDResponseHandler; import org.finos.springbot.teams.history.TeamsHistory; -import org.finos.springbot.teams.response.TeamsWorkResponse; import org.finos.springbot.teams.response.templating.EntityMarkupTemplateProvider; import org.finos.springbot.teams.response.templating.MarkupAndEntities; import org.finos.springbot.teams.state.TeamsStateStorage; @@ -114,12 +112,7 @@ public ResourceResponse apply(Response t) { if (tt == TemplateType.ADAPTIVE_CARD) { JsonNode cardJson = workTemplater.template(wr); - String responseSummary = null; - if( wr instanceof TeamsWorkResponse) { - responseSummary = ((TeamsWorkResponse) wr).getSummary() ; - } - - return sendCardResponse(cardJson, ta, wr.getData(), responseSummary) + return sendCardResponse(cardJson, ta, wr.getData()) .handle(handleErrorAndStorage(cardJson, ta, wr.getData(), t)).get(); } else { MarkupAndEntities mae = displayTemplater.template(wr); @@ -178,13 +171,7 @@ private BiFunction handle JsonNode buttonsJson = workTemplater.template(null); wr.getData().put(AdaptiveCardTemplateProvider.FORMID_KEY, "just-buttons"); JsonNode expandedJson = workTemplater.applyTemplate(buttonsJson, wr); - - String responseSummary = null; - if( wr instanceof TeamsWorkResponse) { - responseSummary = ((TeamsWorkResponse) wr).getSummary() ; - } - - return sendCardResponse(expandedJson, (TeamsAddressable) wr.getAddress(), wr.getData(), responseSummary).get(); + return sendCardResponse(expandedJson, (TeamsAddressable) wr.getAddress(), wr.getData()).get(); } else { return rr; } @@ -232,13 +219,13 @@ private BiFunction handle }; } - protected CompletableFuture sendCardResponse(JsonNode json, TeamsAddressable address, Map data, String responseSummary) throws Exception { + protected CompletableFuture sendCardResponse(JsonNode json, TeamsAddressable address, Map data) throws Exception { Activity out = Activity.createMessageActivity(); Attachment body = new Attachment(); body.setContentType("application/vnd.microsoft.card.adaptive"); body.setContent(json); - if(StringUtils.isNotBlank(responseSummary)) { - out.setSummary(responseSummary); + if(data.containsKey(WorkResponse.SUMMARY_KEY)) { + out.setSummary(data.get(WorkResponse.SUMMARY_KEY).toString()); } out.getAttachments().add(body); return ah.handleActivity(out, address); diff --git a/libs/teams/teams-chat-workflow-spring-boot-starter/src/main/java/org/finos/springbot/teams/response/TeamsWorkResponse.java b/libs/teams/teams-chat-workflow-spring-boot-starter/src/main/java/org/finos/springbot/teams/response/TeamsWorkResponse.java deleted file mode 100644 index f39a02612..000000000 --- a/libs/teams/teams-chat-workflow-spring-boot-starter/src/main/java/org/finos/springbot/teams/response/TeamsWorkResponse.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.finos.springbot.teams.response; - -import org.finos.springbot.workflow.annotations.WorkMode; -import org.finos.springbot.workflow.content.Addressable; -import org.finos.springbot.workflow.form.ButtonList; -import org.finos.springbot.workflow.form.ErrorMap; -import org.finos.springbot.workflow.response.WorkResponse; - -import java.util.Map; - -public class TeamsWorkResponse extends WorkResponse { - private final String summary; - - public TeamsWorkResponse(Addressable to, Map data, String templateName, WorkMode m, Class formClass, String summary) { - super(to, data, templateName, m, formClass); - this.summary = summary; - } - - public TeamsWorkResponse(Addressable to, Object o, WorkMode m, ButtonList buttons, ErrorMap errors, String summary) { - super(to, o, m, buttons, errors); - this.summary = summary; - } - - public TeamsWorkResponse(Addressable to, Object o, WorkMode m, String summary) { - super(to, o, m); - this.summary = summary; - } - - public String getSummary() { - return summary; - } -}