Skip to content

Commit 2f28341

Browse files
author
rimdoo
committed
Added 3.2.2
1 parent 3e2aeba commit 2f28341

22 files changed

+390
-99
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Changelog
22

3+
### v3.2.2 (Oct 27, 2022) with Core SDK `v4.1.1`
4+
* Added `setOnScrollFirstButtonClickListener(OnConsumableClickListener)` in `ChannelFragment.Builder` and `OpenChannelFragment.Builder`
5+
* Added `scrollToFirst()`, `setOnScrollFirstButtonClickListener(OnConsumableClickListener)`, and `onScrollFirstButtonClicked(View)` in `MessageListComponent` and `OpemChannelMessageListComponent`
6+
* Deprecated `setOnScrollBottomButtonClickListener(View.OnClickListener)` in `ChannelFragment.Builder` and `OpenChannelFragment.Builder`
7+
* Deprecated `scrollToBottom()`, `setOnScrollBottomButtonClickListener(View.OnClickListener)`, and `onScrollBottomButtonClicked(View)` in `MessageListComponent` and `OpemChannelMessageListComponent`
8+
* Improved stability
9+
310
### v3.2.1 (Sep 29, 2022) with Core SDK `v4.0.9`
411
* Added `takeVideo()` in `ChannelFragment` and `OpenChannelFragment`
512
* Support custom font in message bubble and input filed.

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@ org.gradle.jvmargs=-Xmx1536m
1616
# https://developer.android.com/topic/libraries/support-library/androidx-rn
1717
android.useAndroidX=true
1818

19-
UIKIT_VERSION = 3.2.1
19+
UIKIT_VERSION = 3.2.2
2020
UIKIT_VERSION_CODE = 1

uikit-custom-sample/src/main/java/com/sendbird/uikit/customsample/BaseApplication.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import androidx.multidex.MultiDexApplication;
99

1010
import com.sendbird.android.SendbirdChat;
11+
import com.sendbird.android.exception.SendbirdError;
1112
import com.sendbird.android.exception.SendbirdException;
1213
import com.sendbird.android.handler.InitResultHandler;
1314
import com.sendbird.android.params.ApplicationUserListQueryParams;
@@ -32,6 +33,7 @@
3233
import com.sendbird.uikit.interfaces.CustomUserListQueryHandler;
3334
import com.sendbird.uikit.interfaces.OnListResultHandler;
3435
import com.sendbird.uikit.interfaces.UserInfo;
36+
import com.sendbird.uikit.log.Logger;
3537
import com.sendbird.uikit.model.UserMentionConfig;
3638

3739
import java.util.ArrayList;
@@ -195,6 +197,10 @@ public void loadInitial(@NonNull OnListResultHandler<UserInfo> handler) {
195197
userListQuery = SendbirdChat.createApplicationUserListQuery(params);
196198
userListQuery.next((list, e) -> {
197199
if (e != null || list == null) {
200+
if (e != null && e.getCode() == SendbirdError.ERR_NON_AUTHORIZED) {
201+
Logger.w("An error occurred because you don't have access to the user list in your application. " +
202+
"In order to gain access, you can turn on this attribute in the Access Control List settings on Sendbird Dashboard.");
203+
}
198204
return;
199205
}
200206

uikit/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ dependencies {
6565
implementation fileTree(dir: 'libs', include: ['*.jar'])
6666

6767
// Sendbird
68-
api 'com.sendbird.sdk:sendbird-chat:4.0.9'
68+
api 'com.sendbird.sdk:sendbird-chat:4.1.1'
6969

7070
implementation 'com.github.bumptech.glide:glide:4.13.0'
7171
annotationProcessor 'com.github.bumptech.glide:compiler:4.13.0'
@@ -79,5 +79,6 @@ dependencies {
7979
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
8080

8181
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
82+
8283
}
8384

uikit/src/main/java/com/sendbird/uikit/activities/adapter/MessageDiffCallback.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,17 @@ class MessageDiffCallback extends DiffUtil.Callback {
2424
@NonNull
2525
private final GroupChannel newChannel;
2626
private final boolean useMessageGroupUI;
27+
private final boolean useReverseLayout;
2728

28-
public MessageDiffCallback(@Nullable GroupChannel oldChannel, @NonNull GroupChannel newChannel, @NonNull List<BaseMessage> oldMessageList, @NonNull List<BaseMessage> newMessageList, boolean useMessageGroupUI) {
29+
public MessageDiffCallback(@Nullable GroupChannel oldChannel, @NonNull GroupChannel newChannel,
30+
@NonNull List<BaseMessage> oldMessageList, @NonNull List<BaseMessage> newMessageList,
31+
boolean useMessageGroupUI, boolean useReverseLayout) {
2932
this.oldChannel = oldChannel;
3033
this.newChannel = newChannel;
3134
this.oldMessageList = oldMessageList;
3235
this.newMessageList = newMessageList;
3336
this.useMessageGroupUI = useMessageGroupUI;
37+
this.useReverseLayout = useReverseLayout;
3438
}
3539

3640
@Override
@@ -121,8 +125,8 @@ public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
121125
BaseMessage newPrevMessage = newItemPosition - 1 < 0 ? null : newMessageList.get(newItemPosition - 1);
122126
BaseMessage oldNextMessage = oldItemPosition + 1 >= oldMessageList.size() ? null : oldMessageList.get(oldItemPosition + 1);
123127
BaseMessage newNextMessage = newItemPosition + 1 >= newMessageList.size() ? null : newMessageList.get(newItemPosition + 1);
124-
MessageGroupType oldMessageGroupType = MessageUtils.getMessageGroupType(oldPrevMessage, oldMessage, oldNextMessage);
125-
MessageGroupType newMessageGroupType = MessageUtils.getMessageGroupType(newPrevMessage, newMessage, newNextMessage);
128+
MessageGroupType oldMessageGroupType = MessageUtils.getMessageGroupType(oldPrevMessage, oldMessage, oldNextMessage, useReverseLayout);
129+
MessageGroupType newMessageGroupType = MessageUtils.getMessageGroupType(newPrevMessage, newMessage, newNextMessage, useReverseLayout);
126130

127131
return oldMessageGroupType == newMessageGroupType;
128132
}

uikit/src/main/java/com/sendbird/uikit/activities/adapter/MessageListAdapter.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public class MessageListAdapter extends BaseMessageAdapter<BaseMessage, MessageV
6363
@Nullable
6464
private OnIdentifiableItemLongClickListener<BaseMessage> listItemLongClickListener;
6565
private final boolean useMessageGroupUI;
66+
private final boolean useReverseLayout;
6667
@Nullable
6768
private MessageUIConfig messageUIConfig;
6869

@@ -99,8 +100,21 @@ public MessageListAdapter(@Nullable GroupChannel channel) {
99100
* @since 2.2.0
100101
*/
101102
public MessageListAdapter(@Nullable GroupChannel channel, boolean useMessageGroupUI) {
103+
this(channel, useMessageGroupUI, true);
104+
}
105+
106+
/**
107+
* Constructor
108+
*
109+
* @param channel The {@link GroupChannel} that contains the data needed for this adapter
110+
* @param useMessageGroupUI <code>true</code> if the message group UI is used, <code>false</code> otherwise.
111+
* @param useReverseLayout <code>true</code> if the message list is reversed, <code>false</code> otherwise.
112+
* @since 3.2.2
113+
*/
114+
public MessageListAdapter(@Nullable GroupChannel channel, boolean useMessageGroupUI, boolean useReverseLayout) {
102115
if (channel != null) this.channel = GroupChannel.clone(channel);
103116
this.useMessageGroupUI = useMessageGroupUI;
117+
this.useReverseLayout = useReverseLayout;
104118
setHasStableIds(true);
105119
}
106120

@@ -229,7 +243,7 @@ public void onBindViewHolder(@NonNull MessageViewHolder holder, final int positi
229243
}
230244

231245
if (channel != null) {
232-
holder.onBindViewHolder(channel, prev, current, next);
246+
holder.onBindViewHolder(channel, prev, current, next, useReverseLayout);
233247
}
234248
}
235249

@@ -313,7 +327,7 @@ public void setItems(@NonNull final GroupChannel channel, @NonNull final List<Ba
313327
final List<BaseMessage> copiedMessage = Collections.unmodifiableList(messageList);
314328
differWorker.submit(() -> {
315329
final CountDownLatch lock = new CountDownLatch(1);
316-
final MessageDiffCallback diffCallback = new MessageDiffCallback(MessageListAdapter.this.channel, channel, MessageListAdapter.this.messageList, messageList, useMessageGroupUI);
330+
final MessageDiffCallback diffCallback = new MessageDiffCallback(MessageListAdapter.this.channel, channel, MessageListAdapter.this.messageList, messageList, useMessageGroupUI, useReverseLayout);
317331
final DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
318332

319333
mainHandler.post(() -> {
@@ -514,4 +528,4 @@ public BaseMessage getItem(int position) {
514528
public List<BaseMessage> getItems() {
515529
return Collections.unmodifiableList(messageList);
516530
}
517-
}
531+
}

uikit/src/main/java/com/sendbird/uikit/activities/adapter/OpenChannelMessageDiffCallback.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,17 @@ class OpenChannelMessageDiffCallback extends DiffUtil.Callback {
2323
@NonNull
2424
private final OpenChannel newChannel;
2525
private final boolean useMessageGroupUI;
26+
private final boolean useReverseLayout;
2627

27-
public OpenChannelMessageDiffCallback(@Nullable OpenChannel oldChannel, @NonNull OpenChannel newChannel, @NonNull List<BaseMessage> oldMessageList, @NonNull List<BaseMessage> newMessageList, boolean useMessageGroupUI) {
28+
public OpenChannelMessageDiffCallback(@Nullable OpenChannel oldChannel, @NonNull OpenChannel newChannel,
29+
@NonNull List<BaseMessage> oldMessageList, @NonNull List<BaseMessage> newMessageList,
30+
boolean useMessageGroupUI, boolean useReverseLayout) {
2831
this.oldChannel = oldChannel;
2932
this.newChannel = newChannel;
3033
this.oldMessageList = oldMessageList;
3134
this.newMessageList = newMessageList;
3235
this.useMessageGroupUI = useMessageGroupUI;
36+
this.useReverseLayout = useReverseLayout;
3337
}
3438

3539
@Override
@@ -84,8 +88,8 @@ public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
8488
BaseMessage newPrevMessage = newItemPosition - 1 < 0 ? null : newMessageList.get(newItemPosition - 1);
8589
BaseMessage oldNextMessage = oldItemPosition + 1 >= oldMessageList.size() ? null : oldMessageList.get(oldItemPosition + 1);
8690
BaseMessage newNextMessage = newItemPosition + 1 >= newMessageList.size() ? null : newMessageList.get(newItemPosition + 1);
87-
MessageGroupType oldMessageGroupType = MessageUtils.getMessageGroupType(oldPrevMessage, oldMessage, oldNextMessage);
88-
MessageGroupType newMessageGroupType = MessageUtils.getMessageGroupType(newPrevMessage, newMessage, newNextMessage);
91+
MessageGroupType oldMessageGroupType = MessageUtils.getMessageGroupType(oldPrevMessage, oldMessage, oldNextMessage, useReverseLayout);
92+
MessageGroupType newMessageGroupType = MessageUtils.getMessageGroupType(newPrevMessage, newMessage, newNextMessage, useReverseLayout);
8993

9094
return oldMessageGroupType == newMessageGroupType;
9195
}

uikit/src/main/java/com/sendbird/uikit/activities/adapter/OpenChannelMessageListAdapter.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public class OpenChannelMessageListAdapter extends BaseMessageAdapter<BaseMessag
5454
@Nullable
5555
private OnIdentifiableItemLongClickListener<BaseMessage> listItemLongClickListener;
5656
private final boolean useMessageGroupUI;
57+
private final boolean useReverseLayout;
5758
@Nullable
5859
private MessageUIConfig messageUIConfig;
5960

@@ -89,8 +90,21 @@ public OpenChannelMessageListAdapter(@Nullable OpenChannel channel) {
8990
* @since 2.2.0
9091
*/
9192
public OpenChannelMessageListAdapter(@Nullable OpenChannel channel, boolean useMessageGroupUI) {
93+
this(channel, useMessageGroupUI, true);
94+
}
95+
96+
/**
97+
* Constructor
98+
*
99+
* @param channel The {@link OpenChannel} that contains the data needed for this adapter
100+
* @param useMessageGroupUI <code>true</code> if the message group UI is used, <code>false</code> otherwise.
101+
* @param useReverseLayout <code>true</code> if the message list is reversed, <code>false</code> otherwise.
102+
* @since 3.2.2
103+
*/
104+
public OpenChannelMessageListAdapter(@Nullable OpenChannel channel, boolean useMessageGroupUI, boolean useReverseLayout) {
92105
if (channel != null) this.channel = OpenChannel.clone(channel);
93106
this.useMessageGroupUI = useMessageGroupUI;
107+
this.useReverseLayout = useReverseLayout;
94108
setHasStableIds(true);
95109
}
96110

@@ -187,7 +201,7 @@ public void onBindViewHolder(@NonNull MessageViewHolder holder, final int positi
187201
}
188202

189203
if (channel != null) {
190-
holder.onBindViewHolder(channel, prev, current, next);
204+
holder.onBindViewHolder(channel, prev, current, next, useReverseLayout);
191205
}
192206
}
193207

@@ -245,7 +259,7 @@ public void setItems(@NonNull final OpenChannel channel, @NonNull final List<Bas
245259
final List<BaseMessage> copiedMessage = Collections.unmodifiableList(messageList);
246260
service.submit(() -> {
247261
final CountDownLatch lock = new CountDownLatch(1);
248-
final OpenChannelMessageDiffCallback diffCallback = new OpenChannelMessageDiffCallback(OpenChannelMessageListAdapter.this.channel, channel, OpenChannelMessageListAdapter.this.messageList, messageList, useMessageGroupUI);
262+
final OpenChannelMessageDiffCallback diffCallback = new OpenChannelMessageDiffCallback(OpenChannelMessageListAdapter.this.channel, channel, OpenChannelMessageListAdapter.this.messageList, messageList, useMessageGroupUI, useReverseLayout);
249263
final DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(diffCallback);
250264

251265
mainHandler.post(() -> {
@@ -382,4 +396,4 @@ public void setMessageUIConfig(@Nullable MessageUIConfig messageUIConfig) {
382396
public MessageUIConfig getMessageUIConfig() {
383397
return this.messageUIConfig;
384398
}
385-
}
399+
}

uikit/src/main/java/com/sendbird/uikit/activities/viewholder/MessageViewHolder.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,11 @@ public MessageViewHolder(@NonNull View view) {
4343
this.useMessageGroupUI = useMessageGroupUI;
4444
}
4545

46-
public void onBindViewHolder(@NonNull BaseChannel channel, @Nullable BaseMessage prevMessage, @NonNull BaseMessage message, @Nullable BaseMessage nextMessage) {
46+
public void onBindViewHolder(@NonNull BaseChannel channel,
47+
@Nullable BaseMessage prevMessage,
48+
@NonNull BaseMessage message,
49+
@Nullable BaseMessage nextMessage,
50+
boolean useReverseLayout) {
4751
if (prevMessage != null) {
4852
this.isNewDate = !DateUtils.hasSameDate(message.getCreatedAt(), prevMessage.getCreatedAt());
4953
} else {
@@ -54,7 +58,7 @@ public void onBindViewHolder(@NonNull BaseChannel channel, @Nullable BaseMessage
5458
this.isShowProfile = !isMine;
5559

5660
bind(channel, message, useMessageGroupUI ?
57-
MessageUtils.getMessageGroupType(prevMessage, message, nextMessage) :
61+
MessageUtils.getMessageGroupType(prevMessage, message, nextMessage, useReverseLayout) :
5862
MessageGroupType.GROUPING_TYPE_SINGLE);
5963
itemView.requestLayout();
6064
}

0 commit comments

Comments
 (0)