Skip to main content

Documentation Index

Fetch the complete documentation index at: https://cometchat-22654f5b-docs-android-v6-beta2.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

// Send message in thread
val textMessage = TextMessage("UID", "Reply text", CometChatConstants.RECEIVER_TYPE_USER)
textMessage.parentMessageId = 100
CometChat.sendMessage(textMessage, object : CallbackListener<TextMessage>() {
    override fun onSuccess(message: TextMessage) { }
    override fun onError(e: CometChatException) { }
})

// Fetch thread messages
val messagesRequest = MessagesRequest.MessagesRequestBuilder()
    .setParentMessageId(100)
    .setLimit(30)
    .build()
messagesRequest.fetchPrevious(callback)

// Exclude threads from main conversation
val messagesRequest = MessagesRequest.MessagesRequestBuilder()
    .setUID("user_uid")
    .hideReplies(true)
    .build()
Messages that are started from a particular message are called Threaded messages or simply threads. Each Thread is attached to a message which is the Parent message for that thread.

Send Message in a Thread

Any message type (TextMessage, MediaMessage, or CustomMessage) can be sent in a thread. Set the parentMessageId using setParentMessageId() to indicate which thread the message belongs to.
TextMessage textMessage = new TextMessage(UID, "Hello", CometChatConstants.RECEIVER_TYPE_USER);
textMessage.setParentMessageId(100);

CometChat.sendMessage(textMessage, new CometChat.CallbackListener<TextMessage>() {
  @Override
    public void onSuccess(TextMessage textMessage) {
    Log.d(TAG, "Text Message Sent successfully");
  }

  @Override
    public void onError(CometChatException e) {
    Log.d(TAG, "Text Message Failed : " + e.getMessage());
  }
}); 
Media and Custom messages can also be sent in threads using setParentMessageId().

Receiving Real-Time Messages

Use MessageListener to receive real-time thread messages. Check if the received message belongs to the active thread using getParentMessageId().
private String listenerID = "UNIQUE_LISTENER_ID";
private int activeThreadId = 100;

CometChat.addMessageListener(listenerID, new CometChat.MessageListener() {
  @Override
  public void onTextMessageReceived(TextMessage textMessage) {
    if(message.getParentMessageId() == activeThreadId) {
      Log.d(TAG,"Text Message Received for active thread");
    }
  }

  @Override
  public void onMediaMessageReceived(MediaMessage mediaMessage) {
    if(message.getParentMessageId() == activeThreadId) {
      Log.d(TAG,"Media Message Received for active thread");
    }
  }

  @Override
    public void onCustomMessageReceived(CustomMessage customMessage) {
    if(message.getParentMessageId() == activeThreadId) {
        Log.d(TAG,"Custome Message Received for active thread");
    }
  }
});

Fetch Thread Messages

Use MessagesRequestBuilder with setParentMessageId() to fetch messages belonging to a specific thread. Call fetchPrevious() to get messages (max 100 per request).
MessagesRequest messagesRequest = neMessagesRequest.MessagesRequestBuilder()
  .setLimit(30)
  .setParentMessageId(100)
  .build();
      
messagesRequest.fetchPrevious(new CometChat.CallbackListener<List<BaseMessage>>() {
  @Override
    public void onSuccess(List<BaseMessage> messages) {
    Log.d(TAG, "Messages for thread fetched successfully");        
  }

  @Override
    public void onError(CometChatException e) {
    Log.d(TAG, "Message Fetching failed : "+ e.getMessage());
  }
});

Avoid Threaded Messages in User/Group Conversations

Use hideReplies(true) to exclude threaded messages when fetching messages for a conversation.
MessagesRequest messagesRequest = neMessagesRequest.MessagesRequestBuilder()
  .setLimit(30)
  .setUID("cometchat-uid-1")
  .hideReplies(true)
  .build();
      
messagesRequest.fetchPrevious(new CometChat.CallbackListener<List<BaseMessage>>() {
  @Override
    public void onSuccess(List<BaseMessage> messages) {
    Log.d(TAG, "Messages for thread fetched successfully");        
  }

  @Override
    public void onError(CometChatException e) {
    Log.d(TAG, "Message Fetching failed : "+ e.getMessage());
  }
});
The above snippet will return messages between the logged in user and cometchat-uid-1 excluding all the threaded messages belonging to the same conversation.

Next Steps

Send Messages

Learn how to send text, media, and custom messages

Receive Messages

Handle real-time message events with listeners

Message Structure

Understand message objects and their properties

Reactions

Add emoji reactions to messages