Skip to content

Commit c920e28

Browse files
author
rimdoo
committed
Added 3.3.0
1 parent 2f28341 commit c920e28

File tree

187 files changed

+9399
-4393
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

187 files changed

+9399
-4393
lines changed

CHANGELOG.md

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

3+
### v3.3.0 (Nov 10, 2022) with Core SDK `v4.1.1`
4+
* Support thread type in GroupChannel
5+
* Added `THREAD` in `ReplyType`
6+
* Added `enum ThreadReplySelectType { PARENT, THREAD }`
7+
* Added `setThreadReplySelectType(threadReplySelectType)` in `SendBirdUIKit`
8+
* Added `getThreadReplySelectType()` in `SendBirdUIKit`
9+
* Added `MessageThreadActivity`, `MessageThreadFragment`, `MessageThreadModule`, `MessageThreadViewModel`, `MessageThreadHeaderComponent`, `ThreadListComponent`, `MessageThreadInputComponent`, and `ThreadListAdapter`
10+
* Added `newRedirectToMessageThreadIntent(Context, String, long)` in `ChannelActivity`
11+
* Added `VIEW_TYPE_PARENT_MESSAGE_INFO` in `MessageType`
12+
* Added `ThreadInfo`, `ParentMessageMenu` in `ClickableViewIdentifier`
13+
* Added `onThreadInfoClicked(View, int, BaseMessage)` in `ChannelFragment`
14+
* Added `setOnThreadInfoClickListener(OnItemClickListener<BaseMessage>)` in `ChannelFragment.Builder`
15+
* Added `MessageListUIParams` class
16+
* Added `bind(BaseChannel, BaseMessage, MessageListUIParams)` in `MessageViewHolder`
17+
* Added `createViewHolder(LayoutInflater, ViewGroup, MessageType, MessageListUIParams)` in `MessageViewHolderFactory`
18+
* Added `createOpenChannelViewHolder(LayoutInflater, ViewGroup, MessageType, MessageListUIParams)` in `MessageViewHolderFactory`
19+
* Deprecated `bind(BaseChannel, BaseMessage, MessageGroupType)` in `MessageViewHolder`
20+
* Deprecated `createViewHolder(LayoutInflater, ViewGroup, MessageType, boolean)` in `MessageViewHolderFactory`
21+
* Deprecated `createOpenChannelViewHolder(LayoutInflater, ViewGroup, MessageType, boolean)` in `MessageViewHolderFactory`
22+
* Added `setUseMessageListBanner(boolean)` in `ChannelFragment.Builder`
23+
* Added `setUseBanner(boolean)` in `MessageListComponent.Params`
24+
* Added `setUseUserIdForNickname(boolean)` and `isUsingUserIdForNickname()` in `SendbirdUIKit`
25+
326
### v3.2.2 (Oct 27, 2022) with Core SDK `v4.1.1`
427
* Added `setOnScrollFirstButtonClickListener(OnConsumableClickListener)` in `ChannelFragment.Builder` and `OpenChannelFragment.Builder`
528
* Added `scrollToFirst()`, `setOnScrollFirstButtonClickListener(OnConsumableClickListener)`, and `onScrollFirstButtonClicked(View)` in `MessageListComponent` and `OpemChannelMessageListComponent`

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.2
19+
UIKIT_VERSION = 3.3.0
2020
UIKIT_VERSION_CODE = 1

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import com.sendbird.android.user.query.ApplicationUserListQuery;
2424
import com.sendbird.uikit.SendbirdUIKit;
2525
import com.sendbird.uikit.adapter.SendbirdUIKitAdapter;
26+
import com.sendbird.uikit.consts.ReplyType;
27+
import com.sendbird.uikit.consts.ThreadReplySelectType;
2628
import com.sendbird.uikit.customsample.consts.InitState;
2729
import com.sendbird.uikit.customsample.consts.StringSet;
2830
import com.sendbird.uikit.customsample.fcm.MyFirebaseMessagingService;
@@ -112,6 +114,9 @@ public void onInitSucceed() {
112114
SendbirdUIKit.setLogLevel(SendbirdUIKit.LogLevel.ALL);
113115
// set whether to use user profile
114116
SendbirdUIKit.setUseDefaultUserProfile(false);
117+
// set reply type
118+
SendbirdUIKit.setReplyType(ReplyType.THREAD);
119+
SendbirdUIKit.setThreadReplySelectType(ThreadReplySelectType.THREAD);
115120
// set custom user list query
116121
SendbirdUIKit.setCustomUserListQueryHandler(getCustomUserListQuery());
117122
initState.setValue(InitState.SUCCEED);

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ public class StringSet {
55
public static final String CHANNEL_ID = "CHANNEL_ID";
66
public static final String KEY_CHANNEL_URL = "KEY_CHANNEL_URL";
77
public static final String PUSH_REDIRECT_CHANNEL = "PUSH_REDIRECT_CHANNEL";
8+
public static final String PUSH_REDIRECT_MESSAGE_ID = "PUSH_REDIRECT_MESSAGE_ID";
89
public static final String SETTINGS_USE_DO_NOT_DISTURB = "SETTINGS_USE_DO_NOT_DISTURB";
910
public static final String KEY_INPUT_TEXT = "KEY_INPUT_TEXT";
1011

1112
public static final String sendbird = "sendbird";
1213
public static final String channel = "channel";
1314
public static final String channel_url = "channel_url";
15+
public static final String message_id = "message_id";
1416
public static final String message = "message";
1517
public static final String sender = "sender";
1618
public static final String name = "name";

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ public static void sendNotification(@NonNull Context context, @NonNull JSONObjec
9090
String message = sendBird.getString(StringSet.message);
9191
JSONObject channel = sendBird.getJSONObject(StringSet.channel);
9292
String channelUrl = channel.getString(StringSet.channel_url);
93+
long messageId = sendBird.getLong(StringSet.message_id);
9394

9495
String senderName = context.getString(R.string.app_name);
9596
if (sendBird.has(StringSet.sender)) {
@@ -105,12 +106,12 @@ public static void sendNotification(@NonNull Context context, @NonNull JSONObjec
105106
notificationManager.createNotificationChannel(mChannel);
106107
}
107108

108-
Intent intent = GroupChannelMainActivity.newRedirectToChannelIntent(context, channelUrl);
109+
Intent intent = GroupChannelMainActivity.newRedirectToChannelIntent(context, channelUrl, messageId);
109110
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
110111
@SuppressLint("UnspecifiedImmutableFlag")
111112
PendingIntent pendingIntent = android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M ?
112-
PendingIntent.getActivity(context, channelUrl.hashCode() /* Request code */, intent, PendingIntent.FLAG_IMMUTABLE) :
113-
PendingIntent.getActivity(context, channelUrl.hashCode() /* Request code */, intent, 0);
113+
PendingIntent.getActivity(context, (int) messageId /* Request code */, intent, PendingIntent.FLAG_IMMUTABLE) :
114+
PendingIntent.getActivity(context, (int) messageId /* Request code */, intent, 0);
114115

115116
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
116117
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, CHANNEL_ID)
@@ -127,4 +128,4 @@ public static void sendNotification(@NonNull Context context, @NonNull JSONObjec
127128

128129
notificationManager.notify(String.valueOf(System.currentTimeMillis()), 0, notificationBuilder.build());
129130
}
130-
}
131+
}

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

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.sendbird.uikit.customsample.groupchannel;
22

33
import static com.sendbird.uikit.customsample.consts.StringSet.PUSH_REDIRECT_CHANNEL;
4+
import static com.sendbird.uikit.customsample.consts.StringSet.PUSH_REDIRECT_MESSAGE_ID;
45

56
import android.content.Context;
67
import android.content.Intent;
@@ -117,21 +118,32 @@ protected void onNewIntent(@Nullable Intent intent) {
117118
}
118119

119120
@NonNull
120-
public static Intent newRedirectToChannelIntent(@NonNull Context context, @NonNull String channelUrl) {
121+
public static Intent newRedirectToChannelIntent(@NonNull Context context,
122+
@NonNull String channelUrl,
123+
long messageId) {
121124
Intent intent = new Intent(context, GroupChannelMainActivity.class);
122125
intent.putExtra(PUSH_REDIRECT_CHANNEL, channelUrl);
126+
intent.putExtra(PUSH_REDIRECT_MESSAGE_ID, messageId);
123127
return intent;
124128
}
125129

126130
private void redirectChannelIfNeeded(Intent intent) {
127131
if (intent == null) return;
128132

129133
if ((intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) {
130-
getIntent().removeExtra(PUSH_REDIRECT_CHANNEL);
134+
intent.removeExtra(PUSH_REDIRECT_CHANNEL);
135+
intent.removeExtra(PUSH_REDIRECT_MESSAGE_ID);
131136
}
132137
if (intent.hasExtra(PUSH_REDIRECT_CHANNEL)) {
133138
String channelUrl = intent.getStringExtra(PUSH_REDIRECT_CHANNEL);
134-
if (channelUrl != null) {
139+
140+
if (intent.hasExtra(PUSH_REDIRECT_MESSAGE_ID)) {
141+
long messageId = intent.getLongExtra(PUSH_REDIRECT_MESSAGE_ID, 0L);
142+
if (messageId > 0L) {
143+
startActivity(ChannelActivity.newRedirectToMessageThreadIntent(this, channelUrl, messageId));
144+
intent.removeExtra(PUSH_REDIRECT_MESSAGE_ID);
145+
}
146+
} else {
135147
startActivity(ChannelActivity.newIntent(this, channelUrl));
136148
}
137149
intent.removeExtra(PUSH_REDIRECT_CHANNEL);

uikit-custom-sample/src/main/java/com/sendbird/uikit/customsample/groupchannel/components/viewholders/EmojiMessageMeViewHolder.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@
1515
import com.sendbird.android.message.SendingStatus;
1616
import com.sendbird.uikit.activities.viewholder.GroupChannelMessageViewHolder;
1717
import com.sendbird.uikit.consts.ClickableViewIdentifier;
18-
import com.sendbird.uikit.consts.MessageGroupType;
1918
import com.sendbird.uikit.customsample.databinding.ViewEmojiMessageMeHolderBinding;
2019
import com.sendbird.uikit.customsample.utils.DrawableUtils;
2120
import com.sendbird.uikit.interfaces.OnItemClickListener;
2221
import com.sendbird.uikit.interfaces.OnItemLongClickListener;
22+
import com.sendbird.uikit.model.MessageListUIParams;
2323

2424
import java.util.List;
2525
import java.util.Map;
26+
import java.util.concurrent.ConcurrentHashMap;
2627

2728
/**
2829
* ViewHolder to draw the emoji message sent from current user in the <code>GroupChannel</code>.
@@ -33,11 +34,10 @@ public class EmojiMessageMeViewHolder extends GroupChannelMessageViewHolder {
3334
public EmojiMessageMeViewHolder(@NonNull ViewEmojiMessageMeHolderBinding binding) {
3435
super(binding.getRoot());
3536
this.binding = binding;
36-
clickableViewMap.put(ClickableViewIdentifier.Chat.name(), binding.ivEmoji);
3737
}
3838

3939
@Override
40-
public void bind(@NonNull BaseChannel channel, @NonNull BaseMessage message, @NonNull MessageGroupType messageGroupType) {
40+
public void bind(@NonNull BaseChannel channel, @NonNull BaseMessage message, @NonNull MessageListUIParams params) {
4141
Context context = binding.getRoot().getContext();
4242
boolean sendingState = message.getSendingStatus() == SendingStatus.SUCCEEDED;
4343

@@ -56,12 +56,15 @@ public void bind(@NonNull BaseChannel channel, @NonNull BaseMessage message, @No
5656
binding.root.setPadding(binding.root.getPaddingLeft(), paddingTop, binding.root.getPaddingRight(), paddingBottom);
5757
}
5858

59-
@NonNull
6059
@Override
61-
public Map<String, View> getClickableViewMap() {
62-
return clickableViewMap;
60+
public void setEmojiReaction(@NonNull List<Reaction> reactionList, @Nullable OnItemClickListener<String> emojiReactionClickListener, @Nullable OnItemLongClickListener<String> emojiReactionLongClickListener, @Nullable View.OnClickListener moreButtonClickListener) {
6361
}
6462

63+
@NonNull
6564
@Override
66-
public void setEmojiReaction(@NonNull List<Reaction> reactionList, @Nullable OnItemClickListener<String> emojiReactionClickListener, @Nullable OnItemLongClickListener<String> emojiReactionLongClickListener, @Nullable View.OnClickListener moreButtonClickListener) {}
65+
public Map<String, View> getClickableViewMap() {
66+
return new ConcurrentHashMap<String, View>() {{
67+
put(ClickableViewIdentifier.Chat.name(), binding.ivEmoji);
68+
}};
69+
}
6770
}

uikit-custom-sample/src/main/java/com/sendbird/uikit/customsample/groupchannel/components/viewholders/EmojiMessageOtherViewHolder.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,16 @@
2020
import com.sendbird.android.user.Sender;
2121
import com.sendbird.uikit.activities.viewholder.GroupChannelMessageViewHolder;
2222
import com.sendbird.uikit.consts.ClickableViewIdentifier;
23-
import com.sendbird.uikit.consts.MessageGroupType;
2423
import com.sendbird.uikit.customsample.R;
2524
import com.sendbird.uikit.customsample.databinding.ViewEmojiMessageOtherHolderBinding;
2625
import com.sendbird.uikit.customsample.utils.DrawableUtils;
2726
import com.sendbird.uikit.interfaces.OnItemClickListener;
2827
import com.sendbird.uikit.interfaces.OnItemLongClickListener;
28+
import com.sendbird.uikit.model.MessageListUIParams;
2929

3030
import java.util.List;
3131
import java.util.Map;
32+
import java.util.concurrent.ConcurrentHashMap;
3233

3334
/**
3435
* ViewHolder to draw the emoji message sent from other users in the <code>GroupChannel</code>.
@@ -39,12 +40,10 @@ public class EmojiMessageOtherViewHolder extends GroupChannelMessageViewHolder {
3940
public EmojiMessageOtherViewHolder(@NonNull ViewEmojiMessageOtherHolderBinding binding) {
4041
super(binding.getRoot());
4142
this.binding = binding;
42-
clickableViewMap.put(ClickableViewIdentifier.Chat.name(),binding.ivEmoji);
43-
clickableViewMap.put(ClickableViewIdentifier.Profile.name(), binding.ivProfileView);
4443
}
4544

4645
@Override
47-
public void bind(@NonNull BaseChannel channel, @NonNull BaseMessage message, @NonNull MessageGroupType messageGroupType) {
46+
public void bind(@NonNull BaseChannel channel, @NonNull BaseMessage message, @NonNull MessageListUIParams params) {
4847
Context context = binding.getRoot().getContext();
4948
boolean sendingState = message.getSendingStatus() == SendingStatus.SUCCEEDED;
5049
binding.tvSentAt.setVisibility(sendingState ? View.VISIBLE : View.GONE);
@@ -82,10 +81,12 @@ public void bind(@NonNull BaseChannel channel, @NonNull BaseMessage message, @No
8281
@NonNull
8382
@Override
8483
public Map<String, View> getClickableViewMap() {
85-
return clickableViewMap;
84+
return new ConcurrentHashMap<String, View>() {{
85+
put(ClickableViewIdentifier.Chat.name(),binding.ivEmoji);
86+
put(ClickableViewIdentifier.Profile.name(), binding.ivProfileView);
87+
}};
8688
}
8789

88-
8990
@Override
9091
public void setEmojiReaction(@NonNull List<Reaction> reactionList, @Nullable OnItemClickListener<String> emojiReactionClickListener, @Nullable OnItemLongClickListener<String> emojiReactionLongClickListener, @Nullable View.OnClickListener moreButtonClickListener) {}
9192
}

uikit-custom-sample/src/main/java/com/sendbird/uikit/customsample/groupchannel/components/viewholders/HighlightMessageMeViewHolder.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,15 @@
1313
import com.sendbird.android.message.SendingStatus;
1414
import com.sendbird.uikit.activities.viewholder.GroupChannelMessageViewHolder;
1515
import com.sendbird.uikit.consts.ClickableViewIdentifier;
16-
import com.sendbird.uikit.consts.MessageGroupType;
1716
import com.sendbird.uikit.customsample.databinding.ViewHighlightMessageMeHolderBinding;
1817
import com.sendbird.uikit.customsample.utils.DrawableUtils;
1918
import com.sendbird.uikit.interfaces.OnItemClickListener;
2019
import com.sendbird.uikit.interfaces.OnItemLongClickListener;
20+
import com.sendbird.uikit.model.MessageListUIParams;
2121

2222
import java.util.List;
2323
import java.util.Map;
24+
import java.util.concurrent.ConcurrentHashMap;
2425

2526
/**
2627
* ViewHolder to draw the highlight message sent from current user in the <code>GroupChannel</code>.
@@ -31,11 +32,10 @@ public class HighlightMessageMeViewHolder extends GroupChannelMessageViewHolder
3132
public HighlightMessageMeViewHolder(@NonNull ViewHighlightMessageMeHolderBinding binding) {
3233
super(binding.getRoot());
3334
this.binding = binding;
34-
clickableViewMap.put(ClickableViewIdentifier.Chat.name(), binding.tvMessage);
3535
}
3636

3737
@Override
38-
public void bind(@NonNull BaseChannel channel, @NonNull BaseMessage message, @NonNull MessageGroupType messageGroupType) {
38+
public void bind(@NonNull BaseChannel channel, @NonNull BaseMessage message, @NonNull MessageListUIParams params) {
3939
Context context = binding.getRoot().getContext();
4040
boolean sendingState = message.getSendingStatus() == SendingStatus.SUCCEEDED;
4141

@@ -53,7 +53,9 @@ public void bind(@NonNull BaseChannel channel, @NonNull BaseMessage message, @No
5353
@NonNull
5454
@Override
5555
public Map<String, View> getClickableViewMap() {
56-
return clickableViewMap;
56+
return new ConcurrentHashMap<String, View>() {{
57+
put(ClickableViewIdentifier.Chat.name(), binding.tvMessage);
58+
}};
5759
}
5860

5961
@Override

uikit-custom-sample/src/main/java/com/sendbird/uikit/customsample/groupchannel/components/viewholders/HighlightMessageOtherViewHolder.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,16 @@
2020
import com.sendbird.android.user.Sender;
2121
import com.sendbird.uikit.activities.viewholder.GroupChannelMessageViewHolder;
2222
import com.sendbird.uikit.consts.ClickableViewIdentifier;
23-
import com.sendbird.uikit.consts.MessageGroupType;
2423
import com.sendbird.uikit.customsample.R;
2524
import com.sendbird.uikit.customsample.databinding.ViewHighlightMessageOtherHolderBinding;
2625
import com.sendbird.uikit.customsample.utils.DrawableUtils;
2726
import com.sendbird.uikit.interfaces.OnItemClickListener;
2827
import com.sendbird.uikit.interfaces.OnItemLongClickListener;
28+
import com.sendbird.uikit.model.MessageListUIParams;
2929

3030
import java.util.List;
3131
import java.util.Map;
32+
import java.util.concurrent.ConcurrentHashMap;
3233

3334
/**
3435
* ViewHolder to draw the highlight message sent from other users in the <code>GroupChannel</code>.
@@ -39,12 +40,10 @@ public class HighlightMessageOtherViewHolder extends GroupChannelMessageViewHold
3940
public HighlightMessageOtherViewHolder(@NonNull ViewHighlightMessageOtherHolderBinding binding) {
4041
super(binding.getRoot());
4142
this.binding = binding;
42-
clickableViewMap.put(ClickableViewIdentifier.Chat.name(),binding.tvMessage);
43-
clickableViewMap.put(ClickableViewIdentifier.Profile.name(), binding.ivProfileView);
4443
}
4544

4645
@Override
47-
public void bind(@NonNull BaseChannel channel, @NonNull BaseMessage message, @NonNull MessageGroupType messageGroupType) {
46+
public void bind(@NonNull BaseChannel channel, @NonNull BaseMessage message, @NonNull MessageListUIParams params) {
4847
Context context = binding.getRoot().getContext();
4948
boolean sendingState = message.getSendingStatus() == SendingStatus.SUCCEEDED;
5049
binding.tvSentAt.setVisibility(sendingState ? View.VISIBLE : View.GONE);
@@ -78,10 +77,12 @@ public void bind(@NonNull BaseChannel channel, @NonNull BaseMessage message, @No
7877
@NonNull
7978
@Override
8079
public Map<String, View> getClickableViewMap() {
81-
return clickableViewMap;
80+
return new ConcurrentHashMap<String, View>() {{
81+
put(ClickableViewIdentifier.Chat.name(),binding.tvMessage);
82+
put(ClickableViewIdentifier.Profile.name(), binding.ivProfileView);
83+
}};
8284
}
8385

84-
8586
@Override
8687
public void setEmojiReaction(@NonNull List<Reaction> reactionList, @Nullable OnItemClickListener<String> emojiReactionClickListener, @Nullable OnItemLongClickListener<String> emojiReactionLongClickListener, @Nullable View.OnClickListener moreButtonClickListener) {}
8788
}

0 commit comments

Comments
 (0)