|
4 | 4 | import com.slack.api.bolt.AppConfig; |
5 | 5 | import com.slack.api.bolt.socket_mode.SocketModeApp; |
6 | 6 | import com.slack.api.model.Message; |
| 7 | +import com.slack.api.model.block.element.RichTextSectionElement; |
7 | 8 | import com.slack.api.model.event.AppMentionEvent; |
8 | 9 | import com.slack.api.model.event.MessageChangedEvent; |
9 | 10 | import com.slack.api.model.event.MessageDeletedEvent; |
10 | 11 | import com.slack.api.model.event.MessageEvent; |
11 | 12 | import com.slack.api.model.view.ViewState; |
12 | 13 | import config.Constants; |
13 | 14 |
|
| 15 | +import java.util.Arrays; |
14 | 16 | import java.util.HashMap; |
15 | 17 | import java.util.Map; |
16 | 18 |
|
17 | | -import static com.slack.api.model.block.Blocks.asBlocks; |
18 | | -import static com.slack.api.model.block.Blocks.input; |
| 19 | +import static com.slack.api.model.block.Blocks.*; |
| 20 | +import static com.slack.api.model.block.composition.BlockCompositions.dispatchActionConfig; |
19 | 21 | import static com.slack.api.model.block.composition.BlockCompositions.plainText; |
20 | 22 | import static com.slack.api.model.block.element.BlockElements.*; |
21 | 23 | import static com.slack.api.model.view.Views.*; |
@@ -99,15 +101,44 @@ public static void main(String[] args) throws Exception { |
99 | 101 | .blockId("date-time-block") |
100 | 102 | .element(datetimePicker(pti -> pti.actionId("date-time-action"))) |
101 | 103 | .label(plainText(pt -> pt.text("Date Time").emoji(true))) |
| 104 | + ), |
| 105 | + input(input -> input |
| 106 | + .blockId("rich-text-block") |
| 107 | + .element(richTextInput(pti -> pti.actionId("rich-text-action") |
| 108 | + .initialValue(richText(rt -> rt.blockId("b").elements(Arrays.asList( |
| 109 | + richTextList(rtl -> rtl.style("bullet").elements(Arrays.asList( |
| 110 | + richTextSection(rtl1 -> rtl1.elements(Arrays.asList( |
| 111 | + RichTextSectionElement.Text.builder() |
| 112 | + .text("Hey!") |
| 113 | + .style(RichTextSectionElement.TextStyle.builder().bold(true).build()) |
| 114 | + .build() |
| 115 | + ))), |
| 116 | + richTextSection(rtl2 -> rtl2.elements(Arrays.asList( |
| 117 | + RichTextSectionElement.Text.builder().text("What's up?").build() |
| 118 | + ))) |
| 119 | + ))) |
| 120 | + )))) |
| 121 | + .dispatchActionConfig(dispatchActionConfig(dc -> dc.triggerActionsOn(Arrays.asList("on_character_entered")))) |
| 122 | + )) |
| 123 | + .dispatchAction(true) |
| 124 | + .label(plainText(pt -> pt.text("Rich Text").emoji(true))) |
102 | 125 | ) |
103 | 126 | )) |
104 | 127 | ))); |
105 | 128 | return ctx.ack(); |
106 | 129 | }); |
107 | 130 |
|
| 131 | + app.blockAction("rich-text-action", (req, ctx) -> { |
| 132 | + ctx.logger.info("state values: {}", req.getPayload().getView().getState().getValues()); |
| 133 | + ctx.logger.info("action[0]: {}", req.getPayload().getActions().get(0)); |
| 134 | + return ctx.ack(); |
| 135 | + }); |
| 136 | + |
108 | 137 | app.viewSubmission("test-view", (req, ctx) -> { |
109 | 138 | ViewState.Value time = req.getPayload().getView().getState().getValues().get("time-block").get("time-action"); |
110 | 139 | assert time.getTimezone().equals("America/Los_Angeles"); |
| 140 | + ViewState.Value richText = req.getPayload().getView().getState().getValues().get("rich-text-block").get("rich-text-action"); |
| 141 | + assert richText.getRichTextValue().getElements().size() > 0; |
111 | 142 | return ctx.ack(); |
112 | 143 | }); |
113 | 144 |
|
|
0 commit comments