Skip to content

Commit 85d9316

Browse files
author
Ethan Zhou
committed
Add multi users select input
1 parent 61bbe5f commit 85d9316

File tree

5 files changed

+43
-0
lines changed

5 files changed

+43
-0
lines changed

slack-base/src/main/java/com/hubspot/slack/client/models/interaction/views/ViewInput.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
@Type(value = ViewExternalSelect.class, name = "external_select"),
3535
@Type(value = ViewMultiStaticSelect.class, name = "multi_static_select"),
3636
@Type(value = ViewMultiExternalSelect.class, name = "multi_external_select"),
37+
@Type(value = ViewMultiUsersSelect.class, name = "multi_users_select"),
3738
}
3839
)
3940
public interface ViewInput {

slack-base/src/main/java/com/hubspot/slack/client/models/interaction/views/ViewInputType.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public enum ViewInputType {
2020
STATIC_SELECT,
2121
MULTI_STATIC_SELECT,
2222
MULTI_EXTERNAL_SELECT,
23+
MULTI_USERS_SELECT,
2324
UNKNOWN;
2425

2526
private static final EnumIndex<String, ViewInputType> INDEX = new EnumIndex<>(
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.hubspot.slack.client.models.interaction.views;
2+
3+
import com.fasterxml.jackson.annotation.JsonIgnore;
4+
import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy;
5+
import com.fasterxml.jackson.databind.annotation.JsonNaming;
6+
import com.hubspot.immutables.style.HubSpotStyle;
7+
import java.util.List;
8+
import java.util.Optional;
9+
import org.immutables.value.Value.Immutable;
10+
11+
@Immutable
12+
@HubSpotStyle
13+
@JsonNaming(SnakeCaseStrategy.class)
14+
public interface ViewMultiUsersSelectIF extends ViewInput {
15+
List<String> getSelectedUsers();
16+
17+
@JsonIgnore
18+
default Optional<String> getStringValue() {
19+
List<String> users = getSelectedUsers();
20+
return users.isEmpty() ? Optional.empty() : Optional.of(String.join(",", users));
21+
}
22+
}

slack-base/src/test/java/com/hubspot/slack/client/models/views/ViewSubmissionDeserializationTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.hubspot.slack.client.models.interaction.views.ViewInputType;
1212
import com.hubspot.slack.client.models.interaction.views.ViewMultiExternalSelect;
1313
import com.hubspot.slack.client.models.interaction.views.ViewMultiStaticSelect;
14+
import com.hubspot.slack.client.models.interaction.views.ViewMultiUsersSelect;
1415
import com.hubspot.slack.client.testutils.TestBlocksBuilder;
1516
import java.io.IOException;
1617
import java.util.Map;
@@ -91,4 +92,16 @@ public void itDeserializesMultiExternalSelect() {
9192
assertThat(multiExternalSelect.getSelectedOptions())
9293
.containsExactly(option, anotherOption);
9394
}
95+
96+
@Test
97+
public void itDeserializesMultiUsersSelect() {
98+
ViewInput input = BLOCK_ID_TO_ACTION_ID_TO_VALUES
99+
.get("MuS")
100+
.get("multi_users_select-action");
101+
assertThat(input.getType()).isEqualTo(ViewInputType.MULTI_USERS_SELECT);
102+
103+
final ViewMultiUsersSelect multiUsersSelect = (ViewMultiUsersSelect) input;
104+
assertThat(multiUsersSelect.getSelectedUsers())
105+
.containsExactly("U12345", "U67890", "U11111");
106+
}
94107
}

slack-base/src/test/resources/view_submission.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,12 @@
158158
}
159159
]
160160
}
161+
},
162+
"MuS": {
163+
"multi_users_select-action": {
164+
"type": "multi_users_select",
165+
"selected_users": ["U12345", "U67890", "U11111"]
166+
}
161167
}
162168
}
163169
},

0 commit comments

Comments
 (0)