Skip to content

Commit c0dacc5

Browse files
committed
Enabled setting the senderId post-constructor
1 parent 0dea3f8 commit c0dacc5

File tree

4 files changed

+38
-11
lines changed

4 files changed

+38
-11
lines changed

.gitignore

+1-2
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,4 @@ android/proguard/
3737
.idea/
3838
build/
3939
.gradle
40-
/.DS_Store
41-
/gradle/.DS_Store
40+
*.DS_Store

chatkit/src/main/java/com/stfalcon/chatkit/messages/MessageHolders.java

+14-6
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import androidx.annotation.LayoutRes;
2828
import androidx.annotation.NonNull;
29+
import androidx.annotation.Nullable;
2930
import androidx.core.view.ViewCompat;
3031

3132
/*
@@ -597,16 +598,23 @@ public void onClick(View v) {
597598
}
598599

599600

600-
protected int getViewType(Object item, String senderId) {
601+
protected int getViewType(Object item, @Nullable String senderId) {
601602
boolean isOutcoming = false;
603+
602604
int viewType;
603605

604606
if (item instanceof IMessage) {
605-
IMessage message = (IMessage) item;
606-
isOutcoming = message.getUser().getId().contentEquals(senderId);
607-
viewType = getContentViewType(message);
608-
609-
} else viewType = VIEW_TYPE_DATE_HEADER;
607+
if (senderId != null) {
608+
IMessage message = (IMessage) item;
609+
isOutcoming = message.getUser().getId().contentEquals(senderId);
610+
viewType = getContentViewType(message);
611+
} else {
612+
throw new IllegalStateException("Missing senderId. Did you call setSenderId or " +
613+
"passed it in the constructor?");
614+
}
615+
} else {
616+
viewType = VIEW_TYPE_DATE_HEADER;
617+
}
610618

611619
return isOutcoming ? viewType * -1 : viewType;
612620
}

chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListAdapter.java

+20-2
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import java.util.List;
4141

4242
import androidx.annotation.LayoutRes;
43+
import androidx.annotation.Nullable;
4344
import androidx.recyclerview.widget.RecyclerView;
4445

4546
/**
@@ -70,13 +71,21 @@ public class MessagesListAdapter<MESSAGE extends IMessage>
7071
private DateFormatter.Formatter dateHeadersFormatter;
7172
private SparseArray<OnMessageViewClickListener> viewClickListenersArray = new SparseArray<>();
7273

74+
public MessagesListAdapter(ImageLoader imageLoader) {
75+
this((String) null, imageLoader);
76+
}
77+
78+
public MessagesListAdapter(MessageHolders holders, ImageLoader imageLoader) {
79+
this(null, holders, imageLoader);
80+
}
81+
7382
/**
7483
* For default list item layout and view holder.
7584
*
7685
* @param senderId identifier of sender.
7786
* @param imageLoader image loading method.
7887
*/
79-
public MessagesListAdapter(String senderId, ImageLoader imageLoader) {
88+
public MessagesListAdapter(@Nullable String senderId, ImageLoader imageLoader) {
8089
this(senderId, new MessageHolders(), imageLoader);
8190
}
8291

@@ -87,7 +96,7 @@ public MessagesListAdapter(String senderId, ImageLoader imageLoader) {
8796
* @param holders custom layouts and view holders. See {@link MessageHolders} documentation for details
8897
* @param imageLoader image loading method.
8998
*/
90-
public MessagesListAdapter(String senderId, MessageHolders holders,
99+
public MessagesListAdapter(@Nullable String senderId, MessageHolders holders,
91100
ImageLoader imageLoader) {
92101
this.senderId = senderId;
93102
this.holders = holders;
@@ -143,6 +152,15 @@ public int getMessagesCount() {
143152
* PUBLIC METHODS
144153
* */
145154

155+
/**
156+
* Sets the sender id for this adapter instance. Note that this will override
157+
* any id previously set.
158+
* @param senderId The sender id.
159+
*/
160+
public void setSenderId(String senderId) {
161+
this.senderId = senderId;
162+
}
163+
146164
/**
147165
* Adds message to bottom of list and scroll if needed.
148166
*

sample/src/main/java/com/stfalcon/chatkit/sample/features/demo/def/DefaultMessagesActivity.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public void onAddAttachments() {
5454
}
5555

5656
private void initAdapter() {
57-
super.messagesAdapter = new MessagesListAdapter<>(super.senderId, super.imageLoader);
57+
super.messagesAdapter = new MessagesListAdapter<>(super.imageLoader);
5858
super.messagesAdapter.enableSelectionMode(this);
5959
super.messagesAdapter.setLoadMoreListener(this);
6060
super.messagesAdapter.registerViewClickListener(R.id.chatkit_messageUserAvatar,
@@ -67,6 +67,8 @@ public void onMessageViewClick(View view, Message message) {
6767
}
6868
});
6969
this.messagesList.setAdapter(super.messagesAdapter);
70+
71+
super.messagesAdapter.setSenderId(super.senderId);
7072
}
7173

7274
@Override

0 commit comments

Comments
 (0)