MessagesRequest class as you must be familiar with helps you to fetch messages based on the various parameters provided to it. This document will help you understand better the various options that are available using the MessagesRequest class.
The MessagesRequest class is designed using the Builder design pattern. In order to obtain an object of the MessagesRequest class, you will have to make use of the MessagesRequestBuilder class in the MessagesRequest class.
The MessagesRequestBuilder class allows you to set various parameters to the MessagesRequest class based on which the messages are fetched.
Steps to generate an object of the MessagesRequest class:
- Create an object of the
MessagesRequestBuilderclass. - Set all the parameters you wish to set.
- Call the
build()method of theMessagesRequestBuilderclass to get an object of theMessagesRequestclass.
MessagesRequest class, you can call either the fetchNext() method or the fetchPrevious() method using the object.
- fetchNext() - Calling this method will return the messages after the specified parameters.
- fetchPrevious() - Calling this method will give you messages before the specified parameters.
maximum of 100 messages can be pulled in a single iteration. Calling the fetchPrevious()/fetchNext() method on the same MessagesRequest object will get you the next set of messages.
Now that you are clear how to use the MessagesRequest class, below are the various options available:
Number of messages fetched
In other words, how do I set the number of messages fetched in a single iteration To achieve this, you can use thesetLimit() method. This method takes an integer value as the input and informs the SDK to fetch the specified number of messages in one iteration. The maximum number of messages that can be fetched in one go is 100.
- JavaScript
- TypeScript
Sample Console Output
Sample Console Output
fetchPrevious() returns:Messages for a user conversation
In other words, how do I fetch messages between me and any user This can be achieved using thesetUID() method. This method takes the UID of the user with whom the conversation is to be fetched. When a valid UID is passed, the SDK will return all the messages that are a part of the conversation between the logged-in user and the UID that has been specified.
- JavaScript
- TypeScript
Sample Console Output
Sample Console Output
fetchPrevious() returns:Messages for a group conversation
In other words, how do I fetch messages for any group conversation You can achieve this using thesetGUID() method. This method takes the GUID of a group for which the conversations are to be fetched. Passing a valid GUID to this method will return all the messages that are a part of the group conversation. Please note that the logged-in user must be a member of the group to fetch the messages for that group.
- JavaScript
- TypeScript
Sample Console Output
Sample Console Output
fetchPrevious() returns:setUID() and setGUID() is used, all the messages for the logged-in user will be fetched. This means that messages from all the one-on-one and group conversations which the logged-in user is a part of will be returned.> All the parameters discussed below can be used along with the setUID() or setGUID() or without any of the two to fetch all the messages that the logged-in user is a part of.Messages before/after a message
In other words, how do I fetch messages before or after a particular message This can be achieved using thesetMessageId() method. This method takes the message-id as input and provides messages only after/before the message-id based on if the fetchNext() or fetchPrevious() method is triggered.
- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchPrevious() returns:setUID() or setGUID() methods to fetch messages after/before any specific message-id for a particular user/group conversation.
Messages before/after a given time
In other words, how do I fetch messages before or after a particular date or time You can easily achieve this using thesetTimestamp() method. This method takes the Unix timestamp as input and provides messages only after/before the timestamp based on if fetchNext() or fetchPrevious() method is triggered.
- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchPrevious() returns:setUID() or setGUID() methods to fetch messages after/before any specific date or time for a particular user/group conversation.
Unread messages
In other words, how do I fetch unread messages This can easily be achieved using setting the unread flag to true. For this, you need to use thesetUnread() method. This method takes a boolean value as input. If the value is set to true, the SDK will return just the unread messages.
- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchPrevious() returns:setGUID() or setUID() can be used to fetch unread messages for a particular group or user conversation respectively.
Exclude messages from blocked users
In other words, how do I fetch messages excluding the messages from the users I have blocked This can be easily achieved using thehideMessagesFromBlockedUsers() method. This method accepts a boolean value which determines if the messages from users blocked by the logged-in user need to be a part if the fetched messages. If the value is set to true, the messages will be hidden and won’t be a part of the messages fetched. The default value is false i.e if this method is not used, the messages from blocked users will be included in the fetched messages.
- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchPrevious() returns (messages from blocked users are excluded):Updated and received messages
In other words, how do I fetch messages that have been received or updated after a particular date or time This method accepts a Unix timestamp value and will return all the messages that have been updated and the ones that have been sent/received after the specified time. The messages updated could mean the messages that have been marked as read/delivered or if the messages are edited or deleted.- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchNext() returns:Updated messages only
In other words, how do I fetch messages that have been updated after a particular date or time This can be achieved easily by setting the updatesOnly parameter to true. To do so, you can use the updatesOnly() method. This method takes a boolean input and can be used with thesetUpdatedAfter() method to get just the updated messages and not the messages sent/received after the specified time. This method cannot be used independently and always needs to be used with the setUpdatedAfter() method.
- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchNext() returns (only updated messages, e.g. read receipt changes):Messages for multiple categories
In other words, how do I fetch messages belonging to multiple categories We recommend before trying this, you refer to the Message structure and hierarchy guide to get familiar with the various categories of messages. For this, you will have to use thesetCategories() method. This method accepts a list of categories. This tells the SDK to fetch messages only belonging to these categories.
- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchPrevious() returns (includes both custom and message categories):message and custom category. This can also be used to disable certain categories of messages like call and action. This along with setGUID() and setUID() can help display only the messages you wish to display avoiding the other category of messages.
Messages for multiple types
In other words, how do I fetch messages belonging to multiple types We recommend before trying this, you refer to the Message structure and hierarchy guide to get familiar with the various types of messages. This can be easily achieved using thesetTypes() method. This method accepts a list of types. This tells the SDK to fetch messages only belonging to these types.
- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchPrevious() returns (only image, video, audio, file types):Messages for a specific thread
In other words, how do I fetch messages that are a part of a thread and not directly a user/group conversation This can be done using thesetParentMessageId() method. This method needs to be used when you have implemented threaded conversations in your app. This method will return the messages only belonging to the thread with the specified parent Id.
- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchPrevious() returns (messages belonging to the specified thread):Hide threaded messages in user/group conversations
In other words, how do I exclude threaded messages from the normal user/group conversations In order to do this, you can use thehideReplies() method. This method is also related to threaded conversations. This method takes boolean as input. This boolean when set to true will make sure that the messages that belong to threads are not fetched. If set to false, which is also the default value, the messages belong to the threads will also be fetched along with other messages.
- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchPrevious() returns (threaded replies are excluded, parent messages with threads still appear):Hide deleted messages in user/group conversations
In other words, how do I exclude deleted messages from a user/group conversation In order to do this, you can use thehideDeletedMessages() method. This method takes boolean as input. This boolean when set to true will make sure that the deleted messages are not fetched. If set to false, which is also the default value, the deleted messages will also be fetched along with other messages.
- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchPrevious() returns (deleted messages are excluded):Messages by tags
In other words, how do I fetch messages by tags In order to do this, you can use thesetTags() method. This method accepts a list of tags. This tells the SDK to fetch messages only belonging to these tags.
- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchPrevious() returns (only messages matching the specified tags):Messages with tags
In other words, how do I fetch messages with the tags information In order to do this, you can use thewithTags() method. This method accepts boolean as input. When set to true , the SDK will fetch messages along with the tags. When set to false , the SDK will not fetch tags associated with messages. The default value for this parameter is false .
- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchPrevious() returns (messages include the tags field):Messages with links
In other words, as a logged-in user, how do I fetch messages that contain links? In order to do this, you can use thehasLinks() method. This method accepts boolean as input. When set to true , the SDK will fetch messages which have links in the text. The default value for this parameter is false.
Conversation & Advanced Search. The Conversation & Advanced Search is only available in Advanced & Custom plans. If you’re already on one of these plans, please enable the Conversation & Advanced Search from CometChat Dashboard (Open your app, navigate to Chats -> Settings -> General Configuration)- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchPrevious() returns (only messages containing links):Messages with attachments
In other words, as a logged-in user, how do I fetch messages that contain attachments? In order to do this, you can use thehasAttachments() method. This method accepts boolean as input. When set to true , the SDK will fetch messages which have attachments (image, audio, video or file). The default value for this parameter is false.
Conversation & Advanced Search. The Conversation & Advanced Search is only available in Advanced & Custom plans. If you’re already on one of these plans, please enable the Conversation & Advanced Search from CometChat Dashboard (Open your app, navigate to Chats -> Settings -> General Configuration)- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchPrevious() returns (only messages with attachments):Messages with reactions
In other words, as a logged-in user, how do I fetch messages that contain reactions? In order to do this, you can use thehasReactions() method. This method accepts boolean as input. When set to true , the SDK will fetch messages which have reactions. The default value for this parameter is false.
Conversation & Advanced Search. The Conversation & Advanced Search is only available in Advanced & Custom plans. If you’re already on one of these plans, please enable the Conversation & Advanced Search from CometChat Dashboard (Open your app, navigate to Chats -> Settings -> General Configuration)- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchPrevious() returns (only messages that have reactions):Messages with mentions
In other words, as a logged-in user, how do I fetch messages that contain mentions? In order to do this, you can use thehasMentions() method. This method accepts boolean as input. When set to true , the SDK will fetch messages which have mentions. The default value for this parameter is false.
Conversation & Advanced Search. The Conversation & Advanced Search is only available in Advanced & Custom plans. If you’re already on one of these plans, please enable the Conversation & Advanced Search from CometChat Dashboard (Open your app, navigate to Chats -> Settings -> General Configuration)- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchPrevious() returns (only messages that contain mentions):Messages with particular user mentions
In other words, as a logged-in user, how do I fetch messages that mention specific users? In order to do this, you can use thesetMentionedUIDs() method. This method accepts an array of UIDs as input. When set, the SDK will fetch messages which have the mentions of the UIDs passed.
Conversation & Advanced Search. The Conversation & Advanced Search is only available in Advanced & Custom plans. If you’re already on one of these plans, please enable the Conversation & Advanced Search from CometChat Dashboard (Open your app, navigate to Chats -> Settings -> General Configuration)- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchPrevious() returns (only messages mentioning the specified UIDs):Messages with specific attachment types
In other words, as a logged-in user, how do I fetch messages that contain specific types of attachments? In order to do this, you can use thesetAttachmentTypes() method. This method accepts an array of CometChat.AttachmentType ENUM values as input. When provided, the SDK will fetch only those messages that include attachments of the specified types (such as image, audio, video, or file).
Conversation & Advanced Search. The Conversation & Advanced Search is only available in Advanced & Custom plans. If you’re already on one of these plans, please enable the Conversation & Advanced Search from CometChat Dashboard (Open your app, navigate to Chats -> Settings -> General Configuration)- To User
- To Group
- TypeScript (User)
- TypeScript (Group)
Sample Console Output
Sample Console Output
fetchPrevious() returns (only messages with the specified attachment types):Best Practices & Troubleshooting
Reuse MessagesRequest objects for pagination
Reuse MessagesRequest objects for pagination
fetchNext() or fetchPrevious() on the same MessagesRequest object to paginate through results. Creating a new MessagesRequest object will reset pagination and start from the beginning.Combine filters for precise results
Combine filters for precise results
setCategories() + setTypes() + setUID()) to narrow down results. This is more efficient than fetching all messages and filtering client-side.Use setUpdatedAfter() for local caching
Use setUpdatedAfter() for local caching
setUpdatedAfter() with the timestamp of your last synced message to fetch only new or updated messages. Combine with updatesOnly(true) if you only need edits, deletions, and read/delivery status changes.Set an appropriate limit
Set an appropriate limit
100. For most UI use cases, a limit of 30–50 provides a good balance between performance and user experience. Smaller limits mean faster responses and less memory usage.Troubleshooting: No messages returned
Troubleshooting: No messages returned
fetchNext() or fetchPrevious() returns an empty array, verify that: the logged-in user is a member of the group (for group conversations), the UID/GUID is correct, and the applied filters aren’t too restrictive. Try removing filters one at a time to isolate the issue.Troubleshooting: Conversation & Advanced Search features not working
Troubleshooting: Conversation & Advanced Search features not working
hasLinks(), hasAttachments(), hasReactions(), hasMentions(), setMentionedUIDs(), and setAttachmentTypes() require the Conversation & Advanced Search feature to be enabled. Ensure you are on an Advanced or Custom plan and have enabled the feature from the CometChat Dashboard (Chats → Settings → General Configuration).