Skip to content

Commit 3f61796

Browse files
author
Carter Hudson
committed
integrate latest changes from sdk develop; use chat event listener in java samples
1 parent 2ac7ef2 commit 3f61796

File tree

12 files changed

+49
-43
lines changed

12 files changed

+49
-43
lines changed

samplejava/src/main/java/com/example/chattutorialjava/ChannelActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
7171
}
7272
});
7373
// Step 4 - Let the message input know when we are editing a message
74-
binding.messageListView.setOnMessageEditHandler(message -> {
74+
binding.messageListView.setMessageEditHandler(message -> {
7575
messageInputViewModel.getEditMessage().postValue(message);
7676
});
7777

samplejava/src/main/java/com/example/chattutorialjava/ChannelActivity2.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
8080
});
8181

8282
// Step 5 - Let the message input know when we are editing a message
83-
binding.messageListView.setOnMessageEditHandler(message -> {
83+
binding.messageListView.setMessageEditHandler(message -> {
8484
messageInputViewModel.getEditMessage().postValue(message);
8585
});
8686

samplejava/src/main/java/com/example/chattutorialjava/ChannelActivity3.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
8888
});
8989

9090
// Step 5 - Let the message input know when we are editing a message
91-
binding.messageListView.setOnMessageEditHandler(message -> {
91+
binding.messageListView.setMessageEditHandler(message -> {
9292
messageInputViewModel.getEditMessage().postValue(message);
9393
});
9494

@@ -130,7 +130,6 @@ public void handleOnBackPressed() {
130130
typingHeaderView.setText(typing);
131131
}
132132
});
133-
return Unit.INSTANCE;
134133
});
135134
}
136135
}

samplejava/src/main/java/com/example/chattutorialjava/ChannelActivity4.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
8989
});
9090

9191
// Step 5 - Let the message input know when we are editing a message
92-
binding.messageListView.setOnMessageEditHandler(message -> {
92+
binding.messageListView.setMessageEditHandler(message -> {
9393
messageInputViewModel.getEditMessage().postValue(message);
9494
});
9595

@@ -112,12 +112,14 @@ public void handleOnBackPressed() {
112112
String nobodyTyping = "nobody is typing";
113113
typingHeaderView.setText(nobodyTyping);
114114

115+
// Observe raw events through the low-level client
115116
Set<String> currentlyTyping = new HashSet<>();
116117
ChatClient.instance()
117118
.channel(cid)
118119
.subscribeFor(
119120
this,
120-
new Class[]{TypingStartEvent.class, TypingStopEvent.class}, event -> {
121+
new Class[]{TypingStartEvent.class, TypingStopEvent.class},
122+
event -> {
121123
if (event instanceof TypingStartEvent) {
122124
User user = ((TypingStartEvent) event).getUser();
123125
String name = (String) user.getExtraData().get("name");
@@ -132,8 +134,9 @@ public void handleOnBackPressed() {
132134
if (!currentlyTyping.isEmpty()) {
133135
typing = "typing: " + TextUtils.join(", ", currentlyTyping);
134136
}
137+
135138
typingHeaderView.setText(typing);
136-
return Unit.INSTANCE;
137-
});
139+
}
140+
);
138141
}
139142
}

samplejava/src/main/java/com/example/chattutorialjava/ImgurAttachmentViewHolderFactory.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ class ImgurAttachmentViewHolderFactory extends MessageListItemViewHolderFactory
1919

2020
@Override
2121
public int getItemViewType(@NotNull MessageListItem item) {
22-
if (hasImgurImage(item)) {
23-
return IMGUR;
24-
}
25-
return super.getItemViewType(item);
22+
return hasImgurImage(item) ? IMGUR : super.getItemViewType(item);
2623
}
2724

2825
@NotNull
2926
@Override
30-
public BaseMessageItemViewHolder<? extends MessageListItem> createViewHolder(@NotNull ViewGroup parentView, int viewType) {
27+
public BaseMessageItemViewHolder<? extends MessageListItem> createViewHolder(
28+
@NotNull ViewGroup parentView,
29+
int viewType
30+
) {
3131
boolean isImgur = viewType == IMGUR;
3232
return isImgur ? ImgurAttachmentViewHolder.create(parentView) : super.createViewHolder(parentView, viewType);
3333
}
@@ -39,7 +39,7 @@ private boolean hasImgurImage(MessageListItem item) {
3939

4040
Message message = ((MessageListItem.MessageItem) item).getMessage();
4141
List<Attachment> attachments = message.getAttachments();
42-
if (attachments == null || attachments.isEmpty()) {
42+
if (attachments.isEmpty()) {
4343
return false;
4444
}
4545

samplejava/src/main/java/com/example/chattutorialjava/MainActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
3232

3333
// Step 1 - Set up the client for API calls, the domain for offline storage and the UI components
3434
ChatClient client = new ChatClient.Builder("b67pax5b2wdq", getApplicationContext()).build();
35-
ChatDomain domain = new ChatDomain.Builder(client, getApplicationContext()).build();
36-
new ChatUI.Builder(client, domain, getApplicationContext()).build();
35+
new ChatDomain.Builder(client, getApplicationContext()).build();
36+
new ChatUI.Builder(getApplicationContext()).build();
3737

3838
// Step 2 - Authenticate and connect the user
3939
User user = new User();

samplekotlin/src/main/java/com/example/chattutorial/ChannelActivity.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ class ChannelActivity : AppCompatActivity() {
5757
}
5858

5959
// Step 4 - Let the message input know when we are editing a message
60-
binding.messageListView.setOnMessageEditHandler {
61-
messageInputViewModel.editMessage.postValue(it)
60+
binding.messageListView.setMessageEditHandler { message ->
61+
messageInputViewModel.editMessage.postValue(message)
6262
}
6363

6464
// Step 5 - Handle navigate up state
@@ -69,12 +69,12 @@ class ChannelActivity : AppCompatActivity() {
6969
}
7070

7171
// Step 6 - Handle back button behaviour correctly when you're in a thread
72-
val handleBackPressed = {
72+
val backHandler = {
7373
messageListViewModel.onEvent(MessageListViewModel.Event.BackButtonPressed)
7474
}
75-
binding.messagesHeaderView.setBackButtonClickListener(handleBackPressed)
75+
binding.messagesHeaderView.setBackButtonClickListener(backHandler)
7676
onBackPressedDispatcher.addCallback(this) {
77-
handleBackPressed()
77+
backHandler()
7878
}
7979
}
8080

samplekotlin/src/main/java/com/example/chattutorial/ChannelActivity2.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ class ChannelActivity2 : AppCompatActivity() {
6464
}
6565

6666
// Step 5 - Let the message input know when we are editing a message
67-
binding.messageListView.setOnMessageEditHandler {
68-
messageInputViewModel.editMessage.postValue(it)
67+
binding.messageListView.setMessageEditHandler { message ->
68+
messageInputViewModel.editMessage.postValue(message)
6969
}
7070

7171
// Step 6 - Handle back button behaviour correctly when you're in a thread

samplekotlin/src/main/java/com/example/chattutorial/ChannelActivity3.kt

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ class ChannelActivity3 : AppCompatActivity() {
6666
}
6767

6868
// Step 5 - Let the message input know when we are editing a message
69-
binding.messageListView.setOnMessageEditHandler {
70-
messageInputViewModel.editMessage.postValue(it)
69+
binding.messageListView.setMessageEditHandler { message ->
70+
messageInputViewModel.editMessage.postValue(message)
7171
}
7272

7373
// Step 6 - Handle back button behaviour correctly when you're in a thread
@@ -84,18 +84,22 @@ class ChannelActivity3 : AppCompatActivity() {
8484
binding.typingHeaderView.text = nobodyTyping
8585

8686
// Obtain a ChannelController
87-
ChatDomain.instance().useCases.getChannelController(cid).enqueue { channelControllerResult ->
88-
if (channelControllerResult.isSuccess) {
89-
90-
// Observe typing users
91-
channelControllerResult.data().typing.observe(this) { typingState ->
92-
binding.typingHeaderView.text = when {
93-
typingState.users.isNotEmpty() -> typingState.users.joinToString(prefix = "typing: ") { user -> user.name }
94-
else -> nobodyTyping
87+
ChatDomain.instance().useCases.getChannelController(cid)
88+
.enqueue { channelControllerResult ->
89+
if (channelControllerResult.isSuccess) {
90+
// Observe typing users
91+
channelControllerResult.data().typing.observe(this) { typingState ->
92+
binding.typingHeaderView.text = when {
93+
94+
typingState.users.isNotEmpty() -> {
95+
typingState.users.joinToString(prefix = "typing: ") { user -> user.name }
96+
}
97+
98+
else -> nobodyTyping
99+
}
95100
}
96101
}
97102
}
98-
}
99103
}
100104

101105
companion object {

samplekotlin/src/main/java/com/example/chattutorial/ChannelActivity4.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ class ChannelActivity4 : AppCompatActivity() {
6868
}
6969

7070
// Step 5 - Let the message input know when we are editing a message
71-
binding.messageListView.setOnMessageEditHandler {
72-
messageInputViewModel.editMessage.postValue(it)
71+
binding.messageListView.setMessageEditHandler { message ->
72+
messageInputViewModel.editMessage.postValue(message)
7373
}
7474

7575
// Step 6 - Handle back button behaviour correctly when you're in a thread
@@ -87,16 +87,17 @@ class ChannelActivity4 : AppCompatActivity() {
8787

8888
val currentlyTyping = mutableSetOf<String>()
8989

90+
// Observe raw events through the low-level client
9091
ChatClient
9192
.instance()
9293
.channel(cid)
9394
.subscribeFor(
9495
this, TypingStartEvent::class, TypingStopEvent::class
9596
) { event ->
96-
@Suppress("NON_EXHAUSTIVE_WHEN_ON_SEALED_CLASS")
9797
when (event) {
9898
is TypingStartEvent -> currentlyTyping.add(event.user.extraData["name"] as String)
9999
is TypingStopEvent -> currentlyTyping.remove(event.user.extraData["name"] as String)
100+
else -> Unit
100101
}
101102

102103
binding.typingHeaderView.text = when {

0 commit comments

Comments
 (0)