From 65db9857f7a8c970a45fefbebf3522f774bcafb3 Mon Sep 17 00:00:00 2001 From: Farhan-CometChat Date: Mon, 16 Feb 2026 16:31:07 +0530 Subject: [PATCH 1/8] docs(react-native): Update documentation with descriptions and quick references MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add meta descriptions to all React Native SDK documentation pages - Add "Quick Reference for AI Agents & Developers" sections with code examples - Add "Available via" notes linking to related resources (SDK, REST API, UI Kits) - Standardize tab titles across documentation (e.g., "User Conversation" → "JavaScript", "Typescript" → "TypeScript") - Improve consistency in code examples and formatting across all pages - Enhance discoverability and provide quick access to common patterns for developers --- .../additional-message-filtering.mdx | 238 +- sdk/react-native/authentication-overview.mdx | 328 ++- sdk/react-native/call-logs.mdx | 76 +- sdk/react-native/calling-overview.mdx | 56 +- sdk/react-native/calling-setup.mdx | 53 +- sdk/react-native/default-call.mdx | 68 +- sdk/react-native/delete-conversation.mdx | 60 +- sdk/react-native/delete-message.mdx | 78 +- sdk/react-native/delivery-read-receipts.mdx | 150 +- sdk/react-native/direct-call.mdx | 92 + sdk/react-native/edit-message.mdx | 99 +- sdk/react-native/expo-integration-guide.mdx | 52 + sdk/react-native/flag-message.mdx | 57 + sdk/react-native/interactive-messages.mdx | 215 +- sdk/react-native/key-concepts.mdx | 121 +- sdk/react-native/login-listener.mdx | 168 +- sdk/react-native/mentions.mdx | 98 +- .../message-structure-and-hierarchy.mdx | 128 +- sdk/react-native/messaging-overview.mdx | 37 + sdk/react-native/overview.mdx | 610 +++-- sdk/react-native/presenter-mode.mdx | 82 +- sdk/react-native/rate-limits.mdx | 84 +- sdk/react-native/reactions.mdx | 80 + sdk/react-native/receive-messages.mdx | 1390 +++++----- sdk/react-native/recording.mdx | 82 +- sdk/react-native/retrieve-conversations.mdx | 134 +- sdk/react-native/send-message.mdx | 2369 ++++++++--------- sdk/react-native/session-timeout.mdx | 20 +- sdk/react-native/setup-sdk.mdx | 377 +-- sdk/react-native/standalone-calling.mdx | 89 + sdk/react-native/threaded-messages.mdx | 109 +- sdk/react-native/transient-messages.mdx | 63 +- sdk/react-native/typing-indicators.mdx | 83 +- sdk/react-native/video-view-customisation.mdx | 69 +- 34 files changed, 4784 insertions(+), 3031 deletions(-) diff --git a/sdk/react-native/additional-message-filtering.mdx b/sdk/react-native/additional-message-filtering.mdx index 92416031c..1da35ae4a 100644 --- a/sdk/react-native/additional-message-filtering.mdx +++ b/sdk/react-native/additional-message-filtering.mdx @@ -1,11 +1,36 @@ --- title: "Additional Message Filtering" +description: "Learn how to use MessagesRequestBuilder to filter and fetch messages by conversation, type, category, tags, timestamps, and more in the CometChat React Native SDK." --- +{/* TL;DR for Agents and Quick Reference */} + +**Quick Reference for AI Agents & Developers** +```javascript +// Fetch messages for a user conversation +let request = new CometChat.MessagesRequestBuilder().setUID("UID").setLimit(50).build(); + +// Fetch messages for a group conversation +let request = new CometChat.MessagesRequestBuilder().setGUID("GUID").setLimit(50).build(); + +// Fetch only unread messages +let request = new CometChat.MessagesRequestBuilder().setUID("UID").setUnread(true).setLimit(30).build(); + +// Fetch only media messages +let request = new CometChat.MessagesRequestBuilder().setUID("UID").setCategories(["message"]).setTypes(["image", "video", "audio", "file"]).setLimit(30).build(); + +// Fetch messages, then paginate +let messages = await request.fetchPrevious(); +``` + The `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. + +**Available via:** [SDK](/sdk/react-native/additional-message-filtering) | [REST API](/rest-api/messages/list-messages) | [UI Kits](/ui-kit/react/message-list#filters) + + 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. @@ -58,7 +83,7 @@ let messagesRequest: CometChat.MessagesRequest = This can be achieved using the `setUID()` 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 let UID = "UID"; let messagesRequest = new CometChat.MessagesRequestBuilder() @@ -87,7 +112,7 @@ let UID: string = "UID", You can achieve this using the `setGUID()` 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 let GUID = "GUID"; let messagesRequest = new CometChat.MessagesRequestBuilder() @@ -122,7 +147,7 @@ If none of the above two methods `setUID()` and `setGUID()` is used, all the mes This can be achieved using the `setMessageId()` 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. - + ```javascript let UID = "UID"; let messageId = 1; @@ -136,7 +161,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let UID = "UID"; let messageId = 1; @@ -150,7 +175,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```typescript let UID: string = "UID", messageId: number = 1, @@ -165,7 +190,7 @@ let UID: string = "UID", - + ```typescript let UID: string = "UID", messageId: number = 1, @@ -191,7 +216,7 @@ This method can be used along with `setUID()` or `setGUID()` methods to fetch me You can easily achieve this using the `setTimestamp()` 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. - + ```javascript let UID = "UID"; let timestamp = 1602221371; @@ -205,7 +230,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let UID = "UID"; let timestamp = 1602221371; @@ -219,7 +244,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```typescript let UID = "UID"; let timestamp = 1602221371; @@ -233,7 +258,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```typescript let UID = "UID"; let timestamp = 1602221371; @@ -258,7 +283,7 @@ This method can be used along with `setUID()` or `setGUID()` methods to fetch me This can easily be achieved using setting the unread flag to true. For this, you need to use the `setUnread()` method. This method takes a boolean value as input. If the value is set to true, the SDK will return just the unread messages. - + ```javascript let UID = "UID"; let limit = 30; @@ -271,7 +296,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let UID = "UID"; let limit = 30; @@ -284,20 +309,21 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```typescript -let UID = "UID"; -let limit = 30; -let messagesRequest = new CometChat.MessagesRequestBuilder() - .setUID(UID) - .setUnread(true) - .setLimit(limit) - .build(); +let UID: string = "UID"; +let limit: number = 30; +let messagesRequest: CometChat.MessagesRequest = + new CometChat.MessagesRequestBuilder() + .setUID(UID) + .setUnread(true) + .setLimit(limit) + .build(); ``` - + ```typescript let GUID: string = "GUID", limit: number = 30, @@ -322,7 +348,7 @@ This method along with `setGUID()` or `setUID()` can be used to fetch unread mes This can be easily achieved using the `hideMessagesFromBlockedUsers()` 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. - + ```javascript let UID = "UID"; let limit = 30; @@ -335,7 +361,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let GUID = "GUID"; let limit = 30; @@ -348,7 +374,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```typescript let UID: string = "UID", limit: number = 30, @@ -362,7 +388,7 @@ let UID: string = "UID", - + ```typescript let GUID: string = "GUID", limit: number = 30, @@ -387,7 +413,7 @@ This method can be used to hide the messages by users blocked by logged in user 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. - + ```javascript let UID = "UID"; let limit = 30; @@ -401,7 +427,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let UID = "UID"; let limit = 30; @@ -415,7 +441,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```typescript let UID = "UID"; let limit = 30; @@ -429,7 +455,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```typescript let GUID: string = "GUID", limit: number = 30, @@ -452,10 +478,10 @@ This can be useful in finding the messages that have been received or updated af *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 the `setUpdatedAfter()` method to get jus 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. +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 the `setUpdatedAfter()` 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. - + ```javascript let UID = "UID"; let limit = 30; @@ -470,7 +496,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let GUID = "GUID"; let limit = 30; @@ -485,7 +511,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```typescript let UID: string = "UID", limit: number = 30, @@ -501,7 +527,7 @@ let UID: string = "UID", - + ```typescript let GUID: string = "GUID", limit: number = 30, @@ -528,7 +554,7 @@ We recommend before trying this, you refer to the [Message structure and hierarc For this, you will have to use the `setCategories()` method. This method accepts a list of categories. This tells the SDK to fetch messages only belonging to these categories. - + ```javascript let UID = "UID"; let limit = 30; @@ -542,7 +568,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let GUID = "GUID"; let limit = 30; @@ -556,7 +582,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```typescript let UID: string = "UID", limit: number = 30, @@ -571,7 +597,7 @@ let UID: string = "UID", - + ```typescript let GUID: string = "GUID", limit: number = 30, @@ -599,7 +625,7 @@ We recommend before trying this, you refer to the [Message structure and hierarc This can be easily achieved using the `setTypes()` method. This method accepts a list of types. This tells the SDK to fetch messages only belonging to these types. - + ```javascript let UID = "UID"; let limit = 30; @@ -615,7 +641,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let GUID = "GUID"; let limit = 30; @@ -631,7 +657,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```typescript let GUID = "GUID"; let limit = 30; @@ -647,7 +673,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```typescript let GUID: string = "GUID", limit: number = 30, @@ -670,12 +696,12 @@ Using the above code snippet, you can fetch all the media messages. This along w ## 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 conversations* +*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 the `setParentMessageId()` 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. - + ```javascript let UID = "UID"; let messageId = 1; @@ -689,7 +715,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let GUID = "GUID"; let messageId = 1; @@ -703,7 +729,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```typescript let UID: string = "UID", limit: number = 30, @@ -718,7 +744,7 @@ let UID: string = "UID", - + ```typescript let GUID: string = "GUID", limit: number = 30, @@ -737,6 +763,7 @@ let GUID: string = "GUID", The above code snippet returns the messages that belong to the thread with parent id 100. + ## Hide threaded messages in user/group conversations *In other words, how do I exclude threaded messages from the normal user/group conversations* @@ -744,7 +771,7 @@ The above code snippet returns the messages that belong to the thread with paren In order to do this, you can use the `hideReplies()` 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. - + ```javascript let UID = "UID"; let limit = 30; @@ -757,7 +784,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let GUID = "GUID"; let limit = 30; @@ -770,7 +797,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```typescript let UID: string = "UID", limit: number = 30, @@ -784,7 +811,7 @@ let UID: string = "UID", - + ```typescript let GUID: string = "GUID", limit: number = 30, @@ -802,12 +829,12 @@ let GUID: string = "GUID", ## Hide deleted messages in user/group conversations -*In other words, how do I exclude deleted messages from a 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 the `hideDeletedMessages()` 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. - + ```javascript let UID = "UID"; let limit = 30; @@ -820,7 +847,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let GUID = "GUID"; let limit = 30; @@ -833,7 +860,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```typescript let UID: string = "UID", limit: number = 30, @@ -847,7 +874,7 @@ let UID: string = "UID", - + ```typescript let GUID: string = "GUID", limit: number = 30, @@ -870,7 +897,7 @@ let GUID: string = "GUID", In order to do this, you can use the `setTags()` method. This method accepts a list of tags. This tells the SDK to fetch messages only belonging to these tags. - + ```javascript let UID = "UID"; let limit = 30; @@ -884,7 +911,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let GUID = "GUID"; let limit = 30; @@ -898,7 +925,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```typescript let UID: string = "UID", limit: number = 30, @@ -913,7 +940,7 @@ let UID: string = "UID", - + ```typescript let GUID: string = "GUID", limit: number = 30, @@ -937,7 +964,7 @@ let GUID: string = "GUID", In order to do this, you can use the `withTags()` 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` . - + ```javascript let UID = "UID"; let limit = 30; @@ -950,7 +977,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let GUID = "GUID"; let limit = 30; @@ -963,7 +990,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```typescript let UID: string = "UID", limit: number = 30, @@ -977,7 +1004,7 @@ let UID: string = "UID", - + ```typescript let GUID: string = "GUID", limit: number = 30, @@ -995,7 +1022,7 @@ let GUID: string = "GUID", ## Messages with links -In other words, as a logged-in user, how do I fetch messages that contains 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 the `hasLinks()` 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`. @@ -1006,7 +1033,7 @@ This feature is only available with `Conversation & Advanced Search`. The `Conve - + ```javascript let UID = "UID"; let limit = 30; @@ -1019,7 +1046,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let GUID = "GUID"; let limit = 30; @@ -1064,7 +1091,7 @@ let GUID: string = "GUID", ## Messages with attachments -In other words, as a logged-in user, how do I fetch messages that contains 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 the `hasAttachments()` 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`. @@ -1075,7 +1102,7 @@ This feature is only available with `Conversation & Advanced Search`. The `Conve - + ```javascript let UID = "UID"; let limit = 30; @@ -1088,7 +1115,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let GUID = "GUID"; let limit = 30; @@ -1133,7 +1160,7 @@ let GUID: string = "GUID", ## Messages with reactions -In other words, as a logged-in user, how do I fetch messages that contains 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 the `hasReactions()` 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`. @@ -1144,7 +1171,7 @@ This feature is only available with `Conversation & Advanced Search`. The `Conve - + ```javascript let UID = "UID"; let limit = 30; @@ -1157,7 +1184,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let GUID = "GUID"; let limit = 30; @@ -1202,7 +1229,7 @@ let GUID: string = "GUID", ## Messages with mentions -In other words, as a logged-in user, how do I fetch messages that contains 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 the `hasMentions()` 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`. @@ -1213,7 +1240,7 @@ This feature is only available with `Conversation & Advanced Search`. The `Conve - + ```javascript let UID = "UID"; let limit = 30; @@ -1226,7 +1253,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let GUID = "GUID"; let limit = 30; @@ -1271,7 +1298,7 @@ let GUID: string = "GUID", ## Messages with particular user mentions -In other words, as a logged-in user, how do I fetch messages that mentions specific users? +*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 the `setMentionedUIDs()` 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. @@ -1282,7 +1309,7 @@ This feature is only available with `Conversation & Advanced Search`. The `Conve - + ```javascript let UID = "UID"; let limit = 30; @@ -1295,7 +1322,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let GUID = "GUID"; let limit = 30; @@ -1340,7 +1367,7 @@ let GUID: string = "GUID", ## 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 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 the `setAttachmentTypes()` 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). @@ -1351,7 +1378,7 @@ This feature is only available with `Conversation & Advanced Search`. The `Conve - + ```javascript let UID = "UID"; let limit = 30; @@ -1364,7 +1391,7 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() - + ```javascript let GUID = "GUID"; let limit = 30; @@ -1406,3 +1433,50 @@ let GUID: string = "GUID", + +## Best Practices & Troubleshooting + + + + Always call `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. + + + + You can chain multiple builder methods together (e.g., `setCategories()` + `setTypes()` + `setUID()`) to narrow down results. This is more efficient than fetching all messages and filtering client-side. + + + + If you store messages locally, use `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. + + + + The maximum limit per fetch is `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. + + + + If `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. + + + + Methods like `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](https://www.cometchat.com/pricing) and have enabled the feature from the [CometChat Dashboard](https://app.cometchat.com) (Chats → Settings → General Configuration). + + + +--- + +## Next Steps + + + + Listen for and handle incoming real-time messages + + + Send text, media, and custom messages to users and groups + + + Understand message categories, types, and structure + + + Fetch and display conversation lists with latest messages + + diff --git a/sdk/react-native/authentication-overview.mdx b/sdk/react-native/authentication-overview.mdx index 73ef4f107..b16de3557 100644 --- a/sdk/react-native/authentication-overview.mdx +++ b/sdk/react-native/authentication-overview.mdx @@ -1,9 +1,23 @@ --- title: "Authentication" sidebarTitle: "Overview" +description: "Learn how to create users, log in with Auth Key or Auth Token, and manage user sessions in CometChat React Native SDK." --- + +**Quick Reference** - Login with Auth Key (dev) or Auth Token (production): +```javascript +// Auth Key login (development only) +const user = await CometChat.login("USER_UID", "AUTH_KEY"); + +// Auth Token login (recommended for production) +const user = await CometChat.login("AUTH_TOKEN"); + +// Check existing session +const loggedInUser = await CometChat.getLoggedinUser(); +``` + ## Create User @@ -13,10 +27,7 @@ Before you log in a user, you must add the user to CometChat. 2. **For production apps**: Use the CometChat [Create User API](https://api-explorer.cometchat.com/reference/creates-user) to create the user when your user signs up in your app. -Sample Users - -We have setup 5 users for testing having UIDs: `cometchat-uid-1`, `cometchat-uid-2`, `cometchat-uid-3`, `cometchat-uid-4` and `cometchat-uid-5`. - +**Sample Users:** We have set up 5 users for testing with UIDs: `cometchat-uid-1`, `cometchat-uid-2`, `cometchat-uid-3`, `cometchat-uid-4` and `cometchat-uid-5`. Once initialization is successful, you will need to log the user into CometChat using the `login()` method. @@ -24,136 +35,140 @@ Once initialization is successful, you will need to log the user into CometChat We recommend you call the CometChat login method once your user logs into your app. The `login()` method needs to be called only once. - -The CometChat SDK maintains the session of the logged-in user within the SDK. Thus you do not need to call the login method for every session. You can use the CometChat.getLoggedinUser() method to check if there is any existing session in the SDK. This method should return the details of the logged-in user. If this method returns null, it implies there is no session present within the SDK and you need to log the user into ComeChat. - +The CometChat SDK maintains the session of the logged-in user within the SDK. Thus you do not need to call the login method for every session. You can use the `CometChat.getLoggedinUser()` method to check if there is any existing session in the SDK. This method should return the details of the logged-in user. If this method returns `null`, it implies there is no session present within the SDK and you need to log the user into CometChat. ## Login using Auth Key -This straightforward authentication method is ideal for proof-of-concept (POC) development or during the early stages of application development. For production environments, however, we strongly recommend using an [AuthToken](#login-using-auth-token) instead of an Auth Key to ensure enhanced security. + +**Security Warning:** This straightforward authentication method is ideal for proof-of-concept (POC) development or during the early stages of application development. For production environments, we strongly recommend using an [Auth Token](#login-using-auth-token) instead of an Auth Key to ensure enhanced security. + - -```javascript -var UID = "UID"; -var authKey = "AUTH_KEY"; - -CometChat.getLoggedinUser().then( - (user) => { - if (!user) { - CometChat.login(UID, authKey).then( - (user) => { - console.log("Login Successful:", { user }); - }, - (error) => { - console.log("Login failed with exception:", { error }); + + ```javascript + var UID = "UID"; + var authKey = "AUTH_KEY"; + + // Check if user is already logged in before calling login + CometChat.getLoggedinUser().then( + (user) => { + if (!user) { + CometChat.login(UID, authKey).then( + (user) => { + console.log("Login Successful:", { user }); + }, + (error) => { + console.log("Login failed with exception:", { error }); + } + ); } - ); - } - }, - (error) => { - console.log("Something went wrong", error); - } -); -``` - - - - -```javascript -var UID: string = "cometchat-uid-1", - authKey: string = "AUTH_KEY"; - -CometChat.getLoggedinUser().then( - (user: CometChat.User) => { - if (!user) { - CometChat.login(UID, authKey).then( - (user: CometChat.User) => { - console.log("Login Successful:", { user }); - }, - (error: CometChat.CometChatException) => { - console.log("Login failed with exception:", { error }); + }, + (error) => { + console.log("Something went wrong", error); + } + ); + ``` + + + ```typescript + var UID: string = "cometchat-uid-1", + authKey: string = "AUTH_KEY"; + + // Check if user is already logged in before calling login + CometChat.getLoggedinUser().then( + (user: CometChat.User) => { + if (!user) { + CometChat.login(UID, authKey).then( + (user: CometChat.User) => { + console.log("Login Successful:", { user }); + }, + (error: CometChat.CometChatException) => { + console.log("Login failed with exception:", { error }); + } + ); } - ); - } - }, - (error: CometChat.CometChatException) => { - console.log("Some Error Occured", { error }); - } -); -``` - - - + }, + (error: CometChat.CometChatException) => { + console.log("Some Error Occured", { error }); + } + ); + ``` + -| Parameters | Description | -| ---------- | ------------------------------------------------ | -| UID | The UID of the user that you would like to login | -| authKey | CometChat Auth Key | +| Parameter | Description | +| --------- | ------------------------------------------------ | +| UID | The UID of the user that you would like to login | +| authKey | CometChat Auth Key | After the user logs in, their information is returned in the `User` object on `Promise` resolved. ## Login using Auth Token -This advanced authentication procedure does not use the Auth Key directly in your client code thus ensuring safety. +This advanced authentication procedure does not use the Auth Key directly in your client code, thus ensuring safety. -1. [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. -2. [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. -3. Load the Auth Token in your client and pass it to the `login()` method. + + + [Create a User](https://api-explorer.cometchat.com/reference/creates-user) via the CometChat API when the user signs up in your app. + + + [Create an Auth Token](https://api-explorer.cometchat.com/reference/create-authtoken) via the CometChat API for the new user and save the token in your database. + + + Load the Auth Token in your client and pass it to the `login()` method. + + - -```javascript -var authToken = "AUTH_TOKEN"; - -CometChat.getLoggedinUser().then( - (user) => { - if (!user) { - CometChat.login(authToken).then( - (user) => { - console.log("Login Successful:", { user }); - }, - (error) => { - console.log("Login failed with exception:", { error }); + + ```javascript + var authToken = "AUTH_TOKEN"; + + // Check if user is already logged in before calling login + CometChat.getLoggedinUser().then( + (user) => { + if (!user) { + CometChat.login(authToken).then( + (user) => { + console.log("Login Successful:", { user }); + }, + (error) => { + console.log("Login failed with exception:", { error }); + } + ); } - ); - } - }, - (error) => { - console.log("Something went wrong", error); - } -); -``` - - - - -```javascript -var authToken: string = "AUTH_TOKEN"; - -CometChat.getLoggedinUser().then( - (user: CometChat.User) => { - if (!user) { - CometChat.login(authToken).then( - (user: CometChat.User) => { - console.log("Login Successful:", { user }); - }, - (error: CometChat.CometChatException) => { - console.log("Login failed with exception:", { error }); + }, + (error) => { + console.log("Something went wrong", error); + } + ); + ``` + + + ```typescript + var authToken: string = "AUTH_TOKEN"; + + // Check if user is already logged in before calling login + CometChat.getLoggedinUser().then( + (user: CometChat.User) => { + if (!user) { + CometChat.login(authToken).then( + (user: CometChat.User) => { + console.log("Login Successful:", { user }); + }, + (error: CometChat.CometChatException) => { + console.log("Login failed with exception:", { error }); + } + ); } - ); - } - }, - (error: CometChat.CometChatException) => { - console.log("Some Error Occured", { error }); - } -); -``` - - - + }, + (error: CometChat.CometChatException) => { + console.log("Some Error Occured", { error }); + } + ); + ``` + | Parameter | Description | @@ -167,32 +182,61 @@ After the user logs in, their information is returned in the `User` object on th You can use the `logout()` method to log out the user from CometChat. We suggest you call this method once your user has been successfully logged out from your app. - -```javascript -CometChat.logout().then( - () => { - console.log("Logout completed successfully"); - }, - (error) => { - console.log("Logout failed with exception:", { error }); - } -); -``` - - - - -```javascript -CometChat.logout().then( - (loggedOut: Object) => { - console.log("Logout completed successfully"); - }, - (error: CometChat.CometChatException) => { - console.log("Logout failed with exception:", { error }); - } -); -``` - - - + + ```javascript + CometChat.logout().then( + () => { + console.log("Logout completed successfully"); + }, + (error) => { + console.log("Logout failed with exception:", { error }); + } + ); + ``` + + + ```typescript + CometChat.logout().then( + (loggedOut: Object) => { + console.log("Logout completed successfully"); + }, + (error: CometChat.CometChatException) => { + console.log("Logout failed with exception:", { error }); + } + ); + ``` + + + + + - Always check for an existing session with `getLoggedinUser()` before calling `login()` + - Use Auth Token (not Auth Key) in production environments + - Generate Auth Tokens server-side and never expose your REST API Key in client code + - Call `logout()` when the user logs out of your app to clean up the CometChat session + - Handle login errors gracefully and provide user-friendly error messages + + + - **Login fails with "UID not found":** Ensure the user has been created in CometChat before attempting login + - **Auth Token expired:** Generate a new Auth Token from your server and retry login + - **Session persists after logout:** Ensure `logout()` completes successfully before redirecting + - **Multiple login calls:** Use `getLoggedinUser()` to prevent redundant login attempts + + + +## Next Steps + + + + Listen for real-time login and logout events + + + Start sending text, media, and custom messages + + + Track real-time online/offline status of users + + + Add pre-built UI components to your app + + diff --git a/sdk/react-native/call-logs.mdx b/sdk/react-native/call-logs.mdx index c96177a84..b025c6931 100644 --- a/sdk/react-native/call-logs.mdx +++ b/sdk/react-native/call-logs.mdx @@ -1,8 +1,27 @@ --- title: "Call Logs" +description: "Fetch, filter, and display call history in your React Native app using CometChat Calls SDK — including call duration, participants, direction, and recording status." --- + +**Quick Reference** - Fetch call logs: +```javascript +const loggedInUser = await CometChat.getLoggedinUser(); + +let callLogRequest = new CometChatCalls.CallLogRequestBuilder() + .setLimit(30) + .setAuthToken(loggedInUser.getAuthToken()) + .setCallCategory("call") + .build(); + +const callLogs = await callLogRequest.fetchNext(); +``` + + + +**Available via:** [SDK](/sdk/react-native/call-logs) | [REST API](/rest-api/list-calls) | [UI Kits](/ui-kit/react/call-features#call-logs) + ## Overview @@ -40,7 +59,7 @@ let callLogRequestBuilder = new CometChatCalls.CallLogRequestBuilder() ### Fetch Next -The**`fetchNext()`**method retrieves the next set of call logs. +The `fetchNext()` method retrieves the next set of call logs. ```javascript let callLogRequestBuilder = new CometChatCalls.CallLogRequestBuilder() @@ -60,7 +79,7 @@ callLogRequestBuilder.fetchNext() ### Fetch Previous -The**`fetchPrevious()`**method retrieves the previous set of call logs. +The `fetchPrevious()` method retrieves the previous set of call logs. ```javascript let callLogRequestBuilder = new CometChatCalls.CallLogRequestBuilder() @@ -80,7 +99,7 @@ callLogRequestBuilder.fetchPrevious() ## Get Call Details -To retrieve the specific details of a call, use the**`getCallDetails()`**method. This method requires the Auth token of the logged-in user and the session ID along with a callback listener. +To retrieve the specific details of a call, use the `getCallDetails()` method. This method requires the Auth token of the logged-in user and the session ID along with a callback listener. ```javascript var sessionID = "SESSION_ID"; @@ -93,4 +112,53 @@ CometChatCalls.getCallDetails(sessionID, authToken) }); ``` -Note: Replace**`"SESSION_ID"`**with the ID of the session you are interested in. + +Replace `"SESSION_ID"` with the ID of the session you are interested in. + + +## Best Practices + + + + Always use `fetchNext()` with a reasonable `setLimit()` value (e.g., 20-30) rather than fetching all logs at once. This improves performance and reduces memory usage, especially for users with extensive call histories. + + + Use the builder's filter methods (`setCallType`, `setCallStatus`, `setCallDirection`) to fetch only the logs relevant to your current UI view. For example, show only missed calls in a "Missed" tab rather than filtering client-side. + + + Consider caching fetched call logs locally to reduce API calls and improve load times. Use `fetchNext()` to load newer logs and `fetchPrevious()` for older ones as the user scrolls. + + + +## Troubleshooting + + + + Verify that the `authToken` passed to `setAuthToken()` is valid and belongs to the logged-in user. Also check that calls have actually been made — call logs are only generated after a call session completes. + + + Ensure you're reusing the same `callLogRequestBuilder` instance for pagination. Creating a new builder resets the cursor, causing the same page to be fetched repeatedly. + + + Confirm the `sessionID` is correct and corresponds to a completed call. Active or in-progress calls may not have full details available yet. + + + +--- + +## Next Steps + + + + Implement a complete calling experience with incoming and outgoing call UI + + + Start and manage call sessions with full configuration options + + + Record call sessions for playback and compliance + + + Implement calling without the Chat SDK + + \ No newline at end of file diff --git a/sdk/react-native/calling-overview.mdx b/sdk/react-native/calling-overview.mdx index f8ec2136f..12683a7c5 100644 --- a/sdk/react-native/calling-overview.mdx +++ b/sdk/react-native/calling-overview.mdx @@ -1,15 +1,35 @@ --- title: "Calling" sidebarTitle: "Overview" +description: "Add voice and video calling to your React Native app with CometChat. Choose between Ringing, Call Session, or Standalone implementations." --- + +**Quick Reference** - Install the Calls SDK and initialize: + +```javascript +npm install @cometchat/calls-sdk-react-native + +// Initialize CometChatCalls +const callAppSettings = new CometChatCalls.CallAppSettingsBuilder() + .setAppId("APP_ID") + .setRegion("REGION") + .build(); +await CometChatCalls.init(callAppSettings); +``` + + + +Available via: [SDK](/sdk/react-native/calling-overview) | [REST API](/rest-api/calls) | [UI Kits](/ui-kit/react-native/call-features) + + ## Overview CometChat provides voice and video calling capabilities for your React Native application. This guide helps you choose the right implementation approach based on your use case. ## Prerequisites -1. CometChat SDK installed and configured. See the [Setup](/sdk/react-native/overview) guide. +1. CometChat SDK installed and configured. See the [Setup](/sdk/react-native/setup-sdk) guide. 2. CometChat Calls SDK added to your project: ```bash @@ -87,3 +107,37 @@ Use this when you want: Configure automatic call termination when participants are inactive. + + + + - Initialize `CometChatCalls` on app startup, right after `CometChat.init()` + - Use the Ringing flow for user-to-user calls where you need push notification support + - Use Call Session when building custom call UIs or conference-style experiences + - Always request camera and microphone permissions before initiating a call + - Handle call errors gracefully and provide user-friendly feedback + + + - **Calls not connecting:** Verify the Calls SDK is initialized after the Chat SDK and that both use the same App ID and Region + - **No audio/video:** Check that camera and microphone permissions are granted on both Android and iOS + - **Push notifications not arriving:** Ensure push notification setup is complete — see the [Push Notifications](/sdk/react-native/push-notification) guide + - **iOS build fails:** Run `pod install` in the `ios` directory after adding the Calls SDK dependency + - **Android minSdkVersion error:** Set `minSdkVersion` to 24 or higher in your `build.gradle` + + + +## Next Steps + + + + Install dependencies, configure permissions, and initialize the Calls SDK. + + + Implement the complete incoming/outgoing call experience. + + + Manage call sessions with custom initiation logic. + + + Retrieve and display call history for your users. + + diff --git a/sdk/react-native/calling-setup.mdx b/sdk/react-native/calling-setup.mdx index f8483f5ca..6896922cc 100644 --- a/sdk/react-native/calling-setup.mdx +++ b/sdk/react-native/calling-setup.mdx @@ -1,8 +1,23 @@ --- title: "Setup" +description: "Install and configure the CometChat Calls SDK for React Native, including dependencies, platform permissions, and initialization." --- + +**Quick Reference** - Install and initialize the Calls SDK: +```javascript +npm install @cometchat/calls-sdk-react-native + +// Initialize on app startup +import { CometChatCalls } from "@cometchat/calls-sdk-react-native"; +const callAppSettings = new CometChatCalls.CallAppSettingsBuilder() + .setAppId("APP_ID") + .setRegion("REGION") + .build(); +await CometChatCalls.init(callAppSettings); +``` + ## Get your Application Keys @@ -56,7 +71,7 @@ The CometChat Calls SDK also requires the below dependencies to be installed. -If you’re using Expo, please refer to the [Expo Integration Guide](/sdk/react-native/expo-integration-guide) for setting up permissions. +If you're using Expo, please refer to the [Expo Integration Guide](/sdk/react-native/expo-integration-guide) for setting up permissions. @@ -191,8 +206,44 @@ CometChatCalls.init(callAppSetting).then( + Make sure you replace the `APP_ID` with your CometChat `AppID` and `REGION` with your **App Region** in the above code. + | Parameter | Description | | ----------------- | ---------------------------------------- | | `callAppSettings` | An object of the `CallAppSettings` class | + + + + - Initialize `CometChatCalls` right after `CometChat.init()` on app startup + - Always call `CometChatCalls.init()` before using any calling methods + - Request camera and microphone permissions at runtime before initiating calls + - Use the correct `netinfo` version based on your React Native version (0.63+ vs below) + - Run `pod install` after adding dependencies to ensure iOS native modules are linked + + + - **Initialization fails:** Verify your App ID and Region match the values in your CometChat Dashboard + - **Android build fails:** Ensure `minSdkVersion` is set to 24 or higher in `build.gradle` + - **iOS build fails:** Run `pod install` in the `ios` directory and open the `.xcworkspace` file (not `.xcodeproj`) + - **Permission denied errors:** Confirm camera and microphone permissions are declared in `AndroidManifest.xml` and `Info.plist` + - **Module not found:** Make sure all required peer dependencies are installed — check the dependency list above + + + +## Next Steps + + + + Choose the right calling implementation for your use case. + + + Implement the complete incoming/outgoing call experience. + + + Manage call sessions with custom initiation logic. + + + Record audio and video calls for playback or compliance. + + diff --git a/sdk/react-native/default-call.mdx b/sdk/react-native/default-call.mdx index baa178f5b..a44b1d3db 100644 --- a/sdk/react-native/default-call.mdx +++ b/sdk/react-native/default-call.mdx @@ -1,7 +1,28 @@ --- title: "Ringing" +description: "Implement a complete calling workflow with ringing, incoming/outgoing call UI, accept, reject, and cancel functionality in CometChat React Native SDK." --- + +**Quick Reference** - Initiate a call and listen for events: + +```javascript +// Initiate a video call +const call = new CometChat.Call("RECEIVER_ID", CometChat.CALL_TYPE.VIDEO, CometChat.RECEIVER_TYPE.USER); +await CometChat.initiateCall(call); + +// Accept an incoming call +await CometChat.acceptCall(sessionId); + +// Reject or cancel +await CometChat.rejectCall(sessionId, CometChat.CALL_STATUS.REJECTED); +``` + + + +Available via: [SDK](/sdk/react-native/default-call) | [REST API](/rest-api/calls) | [UI Kits](/ui-kit/react-native/call-features) + + ## Overview This section explains how to implement a complete calling workflow with ringing functionality, including incoming/outgoing call UI, call acceptance, rejection, and cancellation. Previously known as **Default Calling**. @@ -18,7 +39,7 @@ After the call is accepted, you need to start the call session. See the [Call Se - Accept the call using `acceptCall()` - Reject the call using `rejectCall()` with status `CALL_STATUS_REJECTED` 4. **Caller** can cancel the call using `rejectCall()` with status `CALL_STATUS_CANCELLED` -5. Once accepted, both participants call `startSession()` to join the call +5. Once accepted, both participants generate a call token and render the `CometChatCalls.Component` to join the call ## Initiate Call @@ -110,6 +131,7 @@ CometChat.initiateCall(call).then( On success, a `Call` object is returned containing the call details including a unique `sessionId` required for starting the call session. + ## Call Listeners Register the `CallListener` to receive real-time call events. Each listener requires a unique `listenerId` string to prevent duplicate registrations and enable targeted removal. @@ -187,6 +209,10 @@ CometChat.removeCallListener(listenerId); + +Always remove call listeners when the component unmounts using `CometChat.removeCallListener(listenerId)`. Failing to do so can cause memory leaks and duplicate event handling. + + ### Events | Event | Description | @@ -197,6 +223,7 @@ CometChat.removeCallListener(listenerId); | `onIncomingCallCancelled(call)` | Invoked on the receiver's device when the caller cancels before answering. Dismiss incoming call UI here. | | `onCallEndedMessageReceived(call)` | Invoked when a call ends. The `call` contains final status and duration. Update call history here. | + ## Accept Call When an incoming call is received via `onIncomingCallReceived()`, use `acceptCall()` to accept it. On success, start the call session. @@ -311,6 +338,7 @@ CometChat.rejectCall(sessionId, status).then( + ## Start Call Session Once the call is accepted, both participants need to start the call session. @@ -416,6 +444,7 @@ CometChatCalls.generateToken(sessionId, userAuthToken).then( For more details on call settings and customization, see the [Call Session](/sdk/react-native/direct-call#start-call-session) guide. + ## End Call To end an active call in the ringing flow, the process differs based on who ends the call. @@ -522,3 +551,40 @@ CometChat.rejectCall(sessionId, status).then( ``` + + + + + - Always remove call listeners on component unmount to prevent memory leaks and duplicate events + - Store the `sessionId` from `initiateCall()` or `onIncomingCallReceived()` — you'll need it for accept, reject, cancel, and starting the session + - Handle the `CALL_STATUS_BUSY` case when the receiver is already on another call + - Call `CometChat.clearActiveCall()` and `CometChatCalls.endSession()` together when a call ends to properly release all resources + - Request camera and microphone permissions before initiating or accepting a call + - Show appropriate UI feedback (spinner, ringing animation) while waiting for the receiver to respond + + + - **`onIncomingCallReceived` not firing:** Ensure `CometChat.addCallListener()` is registered before the call is initiated and that the listener ID is unique + - **Call accepted but no audio/video:** After `acceptCall()`, you must start the call session by generating a token and rendering `CometChatCalls.Component` — see the Start Call Session section above + - **Duplicate call events:** You may have registered the same listener multiple times — always call `CometChat.removeCallListener(listenerId)` on unmount + - **`initiateCall` fails with error:** Verify the receiver UID/GUID exists and that the logged-in user has an active session + - **Call ends immediately after accept:** Make sure both caller and receiver generate a call token and render `CometChatCalls.Component` — if only one side renders the component, the call will appear to drop + - **Busy status not working:** Ensure you're using `CometChat.CALL_STATUS.BUSY` (not `REJECTED`) when the receiver is already on a call + + + +## Next Steps + + + + Start and manage the actual call session after the ringing flow completes. + + + Install dependencies, configure permissions, and initialize the Calls SDK. + + + Record audio and video calls for playback or compliance. + + + Retrieve and display call history including duration and participants. + + diff --git a/sdk/react-native/delete-conversation.mdx b/sdk/react-native/delete-conversation.mdx index 886bc7c50..7f368575d 100644 --- a/sdk/react-native/delete-conversation.mdx +++ b/sdk/react-native/delete-conversation.mdx @@ -1,15 +1,33 @@ --- title: "Delete A Conversation" +description: "Learn how to delete user and group conversations for the logged-in user using the CometChat React Native SDK." --- + +**Quick Reference** +```javascript +// Delete a user conversation +CometChat.deleteConversation("UID", "user"); + +// Delete a group conversation +CometChat.deleteConversation("GUID", "group"); +``` + + +**Available via:** [SDK](/sdk/react-native/delete-conversation) | [REST API](/rest-api/conversations/reset-user-conversation) | [UI Kits](/ui-kits/react-native/overview) + In case you want to delete a conversation, you can use the `deleteConversation()` method. -This method takes two parameters. The unique id (UID/GUID) of the conversation to be deleted & the type (user/group) of conversation to be deleted. +This method takes two parameters: the unique ID (UID/GUID) of the conversation to be deleted, and the type (`user`/`group`) of conversation to be deleted. + + +Deleting a conversation is an irreversible operation for the logged-in user. Once deleted, the conversation and its associated data cannot be recovered for that user. + - + ```javascript let UID = "UID"; let type = "user"; @@ -24,7 +42,7 @@ CometChat.deleteConversation(UID, type).then( - + ```javascript let GUID = "GUID"; let type = "group"; @@ -39,7 +57,7 @@ CometChat.deleteConversation(GUID, type).then( - + ```typescript let UID: string = "UID"; let type: string = "user"; @@ -54,7 +72,7 @@ CometChat.deleteConversation(UID, type).then( - + ```typescript let GUID: string = "GUID"; let type: string = "group"; @@ -78,4 +96,34 @@ The `deleteConversation()` method takes the following parameters: | Parameter | Description | Required | | ---------------- | --------------------------------------------------------------------------------- | -------- | | conversationWith | `UID` of the user or `GUID` of the group whose conversation you want to delete. | YES | -| conversationType | The type of conversation you want to delete . It can be either `user` or `group`. | YES | +| conversationType | The type of conversation you want to delete. It can be either `user` or `group`. | YES | + + + + - Always confirm with the user before deleting a conversation, as this action is irreversible for the logged-in user. + - Handle the error callback gracefully to inform users if the deletion fails (e.g., due to network issues or invalid IDs). + - After a successful deletion, update your local conversation list by refreshing it using `ConversationsRequest`. + + + - **Conversation not found**: Ensure the `UID` or `GUID` you are passing is correct and that a conversation with that user or group exists. + - **Permission denied**: Verify that the logged-in user has the appropriate permissions and that the SDK is initialized and the user is logged in. + - **Type mismatch**: Make sure the `conversationType` parameter matches the ID you are passing — use `"user"` with a `UID` and `"group"` with a `GUID`. + + + +## Next Steps + + + + Fetch and display the list of conversations for the logged-in user. + + + Remove individual messages from a conversation. + + + Listen for and handle incoming real-time messages. + + + Explore the full set of messaging capabilities available in the SDK. + + diff --git a/sdk/react-native/delete-message.mdx b/sdk/react-native/delete-message.mdx index 0a21fbff8..50183400c 100644 --- a/sdk/react-native/delete-message.mdx +++ b/sdk/react-native/delete-message.mdx @@ -1,22 +1,48 @@ --- title: "Delete A Message" +description: "Learn how to delete messages, listen for real-time message delete events, and retrieve missed message deletions using the CometChat React Native SDK." --- +{/* TL;DR for Agents and Quick Reference */} + +**Quick Reference for AI Agents & Developers** +```javascript +// Delete a message by ID +let messageId = "MESSAGE_ID"; +CometChat.deleteMessage(messageId).then( + (message) => console.log("Message deleted", message), + (error) => console.log("Delete failed:", error) +); + +// Listen for real-time message deletes +CometChat.addMessageListener("LISTENER_ID", new CometChat.MessageListener({ + onMessageDeleted: (message) => console.log("Deleted:", message) +})); +``` + While [deleting a message](/sdk/react-native/delete-message#delete-a-message) is straightforward, receiving events for deleted messages with CometChat has two parts: 1. Adding a listener to receive [real-time message deletes](/sdk/react-native/delete-message#real-time-message-delete-events) when your app is running. 2. Calling a method to retrieve [missed message deletes](/sdk/react-native/delete-message#missed-message-delete-events) when your app was not running. + +**Available via:** [SDK](/sdk/react-native/delete-message) | [REST API](/rest-api/messages/delete-message) | [UI Kits](/ui-kits/react-native/overview) + + ## Delete a Message *In other words, as a sender, how do I delete a message?* -In case you have to delete a message, you can use the `deleteMessage()` method. This method takes the message ID of the message to be deleted. +To delete a message, use the `deleteMessage()` method. This method takes the message ID of the message to be deleted. + + +This operation is irreversible. Deleted messages cannot be recovered. + - + ```javascript let messageId = "ID_OF_THE_MESSAGE_YOU_WANT_TO_DELETE"; @@ -48,7 +74,7 @@ CometChat.deleteMessage(messageId).then( -Once the message is deleted, In the `onSuccess()` callback, you get an object of the `BaseMessage` class, with the `deletedAt` field set with the timestamp of the time the message was deleted. Also, the `deletedBy` field is set. These two fields can be used to identify if the message is deleted while iterating through a list of messages. +Once the message is deleted, in the `onSuccess()` callback, you get an object of the `BaseMessage` class, with the `deletedAt` field set with the timestamp of the time the message was deleted. Also, the `deletedBy` field is set. These two fields can be used to identify if the message is deleted while iterating through a list of messages. By default, CometChat allows certain roles to delete a message. @@ -66,7 +92,7 @@ By default, CometChat allows certain roles to delete a message. In order to receive real-time events for a message being deleted, you need to override the `onMessageDeleted()` method of the `MessageListener` class. - + ```javascript var listenerID = "UNIQUE_LISTENER_ID"; @@ -100,6 +126,14 @@ CometChat.addMessageListener( + +Always remove listeners when they are no longer needed (e.g., on component unmount or screen navigation). Failing to remove listeners can cause memory leaks and duplicate event handling. + +```javascript +CometChat.removeMessageListener("UNIQUE_LISTENER_ID"); +``` + + ## Missed Message Delete Events *In other words, as a recipient, how do I know if someone deleted a message when my app was not running?* @@ -115,6 +149,40 @@ For the message deleted event, in the `Action` object received, the following fi -In order to edit or delete a message you need to be either the sender of the message or the admin/moderator of the group in which the message was sent. +In order to edit or delete a message, you need to be either the sender of the message or the admin/moderator of the group in which the message was sent. + + + + - **Check `deletedAt` when rendering messages.** Before displaying a message, check if `deletedAt` is set. If it is, show a "This message was deleted" placeholder instead of the original content. + - **Use unique listener IDs.** Use a unique identifier per screen or component (e.g., `"ChatScreen_DeleteListener"`) to avoid conflicts with other listeners. + - **Always clean up listeners.** Remove message listeners in your component's cleanup or unmount lifecycle to prevent memory leaks. + - **Handle permissions gracefully.** If a user attempts to delete a message they don't have permission to delete, handle the error callback and inform the user. + + + - **"Message delete failed" error:** Verify that the message ID is valid and that the current user has permission to delete the message (sender, group admin, or group moderator). + - **`onMessageDeleted` not firing:** Ensure you have registered the `MessageListener` with `CometChat.addMessageListener()` before the delete event occurs, and that the listener ID is unique. + - **Deleted messages still showing in the UI:** Make sure you are checking the `deletedAt` field on each message when rendering your message list, and updating your local state when `onMessageDeleted` fires. + - **Duplicate delete events:** This usually happens when multiple listeners are registered with the same or different IDs without being removed. Ensure you remove listeners on component unmount. + + + +--- + +## Next Steps + + + + Modify the content of a sent message + + + Send text, media, and custom messages + + + Listen for and retrieve incoming messages + + + Report inappropriate or unwanted messages + + diff --git a/sdk/react-native/delivery-read-receipts.mdx b/sdk/react-native/delivery-read-receipts.mdx index e6b5b9b6f..88596c79e 100644 --- a/sdk/react-native/delivery-read-receipts.mdx +++ b/sdk/react-native/delivery-read-receipts.mdx @@ -1,13 +1,38 @@ --- title: "Delivery & Read Receipts" +description: "Learn how to mark messages as delivered, read, or unread and listen for real-time receipt events using the CometChat React Native SDK." --- + +**Quick Reference** - Mark messages and listen for receipts: + +```javascript +// Mark as delivered +CometChat.markAsDelivered(message); + +// Mark as read +CometChat.markAsRead(message); +// Listen for receipts +CometChat.addMessageListener("LISTENER_ID", new CometChat.MessageListener({ + onMessagesDelivered: (receipt) => console.log("Delivered", receipt), + onMessagesRead: (receipt) => console.log("Read", receipt), +})); +``` + + + +**Available via:** [SDK](/sdk/react-native/delivery-read-receipts) | [REST API](/rest-api/conversations/mark-user-conversation-as-delivered) | [UI Kits](/ui-kits/react-native/overview) + ## Mark Messages as Delivered *In other words, as a recipient, how do I inform the sender that I've received a message?* +{/* Mark all messages up to a specified message ID as delivered. Two ways to use markAsDelivered: + 1. Pass the message object directly — CometChat.markAsDelivered(message) + 2. Pass individual params — CometChat.markAsDelivered(messageId, receiverId, receiverType, senderId) */} + You can mark the messages for a particular conversation as read using the `markAsDelivered()` method. This method takes the below parameters as input: | Parameter | Information | @@ -25,7 +50,7 @@ Ideally, you would like to mark all the messages as delivered for any conversati 2. **When the user is on the chat window and a real-time message is received:** In this case you need to obtain the message ID of the message and pass it to the markAsDelivered() method. - + ```javascript var messageId = "MESSAGE_ID"; var receiverId = "MESSAGE_RECEIVER_UID"; @@ -36,7 +61,7 @@ CometChat.markAsDelivered(messageId, receiverId, receiverType, senderId); - + ```javascript var messageId = "MESSAGE_ID"; var receiverId = "MESSAGE_RECEIVER_GUID"; @@ -47,7 +72,7 @@ CometChat.markAsDelivered(messageId, receiverId, receiverType, senderId); - + ```typescript var messageId: string = "MESSAGE_ID"; var receiverId: string = "MESSAGE_RECEIVER_UID"; @@ -58,7 +83,7 @@ CometChat.markAsDelivered(messageId, receiverId, receiverType, senderId); - + ```typescript var messageId: string = "MESSAGE_ID"; var receiverId: string = "MESSAGE_RECEIVER_GUID"; @@ -76,7 +101,7 @@ This method will mark all the messages before the messageId specified, for the c In case you would like to be notified of an error if the receipts fail to go through you can use `.then(successCallback, failureCallback)` of the `markAsDelivered` method. - + ```javascript CometChat.markAsDelivered( message.getId(), @@ -98,7 +123,7 @@ CometChat.markAsDelivered( - + ```javascript CometChat.markAsDelivered( message.getId(), @@ -120,7 +145,7 @@ CometChat.markAsDelivered( - + ```typescript var messageId: string = "MESSAGE_ID"; var receiverId: string = "MESSAGE_SENDER_UID"; @@ -141,7 +166,7 @@ CometChat.markAsDelivered(messageId, receiverId, receiverType, senderId).then( - + ```typescript var messageId: string = "MESSAGE_ID"; var receiverId: string = "MESSAGE_RECEIVER_GUID"; @@ -167,7 +192,7 @@ CometChat.markAsDelivered(messageId, receiverId, receiverType, senderId).then( Another option the CometChat SDK provides is to pass the entire message object to the markAsDelivered() method. - + ```javascript CometChat.markAsDelivered(message); ``` @@ -187,7 +212,7 @@ CometChat.markAsDelivered(message); In case you would like to be notified of an error if the receipts fail to go through you can use `.then(successCallback, failureCallback)` of the `markAsDelivered` method. - + ```javascript CometChat.markAsDelivered(message).then( () => { @@ -228,6 +253,10 @@ CometChat.markAsDelivered(message).then( *In other words, as a recipient, how do I inform the sender I've read a message?* +{/* Mark all messages up to a specified message ID as read. Two ways to use markAsRead: + 1. Pass the message object directly — CometChat.markAsRead(message) + 2. Pass individual params — CometChat.markAsRead(messageId, receiverId, receiverType, senderId) */} + You can mark the messages for a particular conversation as read using the `markAsRead()` method. This method takes the below parameters as input: | Parameter | Information | @@ -245,7 +274,7 @@ Ideally, you would like to mark all the messages as read for any conversation wh 2. **When the user is on the chat window and a real-time message is received:** In this case you need to obtain the message ID of the message and pass it to the markAsRead() method - + ``` var messageId = "MESSAGE_ID"; var receiverId = "MESSAGE_SENDER_UID"; @@ -256,7 +285,7 @@ CometChat.markAsRead(messageId, receiverId, receiverType, senderId); - + ``` var messageId = "MESSAGE_ID"; var receiverId = "MESSAGE_RECEIVER_GUID"; @@ -267,7 +296,7 @@ CometChat.markAsRead(messageId, receiverId, receiverType, senderId); - + ``` var messageId: string = "MESSAGE_ID"; var receiverId: string = "MESSAGE_SENDER_UID"; @@ -278,7 +307,7 @@ CometChat.markAsRead(messageId, receiverId, receiverType, senderId); - + ``` var messageId: string = "MESSAGE_ID"; var receiverId: string = "MESSAGE_RECEIVER_GUID"; @@ -296,7 +325,7 @@ This method will mark all the messages before the messageId specified, for the c In case you would like to be notified of an error if the receipts fail to go through you can use `.then(successCallback, failureCallback)` of the `markAsDelivered` method. - + ```javascript CometChat.markAsRead( message.getId(), @@ -315,7 +344,7 @@ CometChat.markAsRead( - + ```javascript CometChat.markAsRead( message.getId(), @@ -334,7 +363,7 @@ CometChat.markAsRead( - + ```typescript var messageId: string = "MESSAGE_ID"; var receiverId: string = "MESSAGE_SENDER_UID"; @@ -352,7 +381,7 @@ CometChat.markAsRead(messageId, receiverId, receiverType, senderId).then( - + ```typescript var messageId: string = "MESSAGE_ID"; var receiverId: string = "MESSAGE_RECEIVER_GUID"; @@ -375,7 +404,7 @@ CometChat.markAsRead(messageId, receiverId, receiverType, senderId).then( Another option the CometChat SDK provides is to pass the entire message object to the markAsRead() method.If the message object is the last message, the entire conversation will be marked as read. - + ```javascript CometChat.markAsRead(message); ``` @@ -395,7 +424,7 @@ CometChat.markAsRead(message); In case you would like to be notified of an error if the receipts fail to go through you can use `.then(successCallback, failureCallback)` of the `markAsDelivered` method. - + ```javascript CometChat.markAsRead(message).then( () => { @@ -428,6 +457,9 @@ CometChat.markAsRead(message).then( ## Mark Messages as Unread +{/* Mark a message as unread — CometChat.markMessageAsUnread(message) + Only works for messages received from other users. Returns updated Conversation object. */} + The Mark as Unread feature allows users to designate specific messages or conversations as unread, even if they have been previously viewed. This feature is valuable for users who want to revisit and respond to important messages or conversations later, ensuring they don't forget or overlook them. @@ -445,7 +477,7 @@ You cannot mark your own messages as unread. This method only works for messages - + ```javascript CometChat.markMessageAsUnread(message); ``` @@ -465,7 +497,7 @@ CometChat.markMessageAsUnread(message); In case you would like to be notified of an error if the receipts fail to go through you can use `.then(successCallback, failureCallback).` On success, this method returns an updated `Conversation` object with the updated unread message count and other conversation data. - + ```javascript CometChat.markMessageAsUnread(message).then( (conversation) => { @@ -510,7 +542,7 @@ CometChat.markMessageAsUnread(message).then( 4. `onMessagesReadByAll()` - This event is triggered when a group message is read by all members of the group. This event is only for Group conversations. - + ```javascript let listenerId = "UNIQUE_LISTENER_ID"; @@ -570,6 +602,16 @@ CometChat.addMessageListener( + +**Listener Cleanup Required** — Always remove your message listener when the component unmounts or the listener is no longer needed to avoid memory leaks and duplicate event handling: + +```javascript +CometChat.removeMessageListener("UNIQUE_LISTENER_ID"); +``` + +In React Native, place this in a cleanup function inside `useEffect` or in `componentWillUnmount`. + + You will receive events in the form of `MessageReceipt` objects. The message receipt contains the below parameters: | Parameter | Information | @@ -590,10 +632,13 @@ However, for a group message, if you wish to fetch the `deliveredAt` and `readAt ### Receipt History for a Single Message +{/* Fetch delivery & read receipts for a specific message — CometChat.getMessageReceipts(messageId) + Returns a list of MessageReceipt objects with per-user delivery/read status. */} + To fetch the message receipts, you can use the `getMessageReceipts()` method. - + ```javascript let messageId = msgId; CometChat.getMessageReceipts(messageId).then( @@ -638,3 +683,60 @@ The following features will be available only if the **Enhanced Messaging Status * `markMessageAsUnread` method. + +## Best Practices + + + + Mark messages as **delivered** as soon as they are received by the device — typically when fetching messages or receiving a real-time message while the app is open. Mark messages as **read** only when the user actually views the conversation or message. This distinction gives senders accurate insight into whether their message reached the device versus was actually seen. + + + + Rather than calling `markAsDelivered()` for every individual message, pass the **last message** in a fetched list. The SDK marks all prior messages in that conversation as delivered automatically, reducing unnecessary API calls. + + + + Remove message listeners when a component unmounts using `CometChat.removeMessageListener(listenerId)`. Failing to do so can cause memory leaks, duplicate callbacks, and unexpected behavior — especially in React Native navigation flows where screens may mount and unmount frequently. + + + + Prefer passing the full `BaseMessage` object to `markAsDelivered()` and `markAsRead()` instead of individual parameters. This is simpler, less error-prone, and ensures the SDK has all the context it needs. + + + +## Troubleshooting + + + + Ensure you have registered a `MessageListener` with `CometChat.addMessageListener()` **before** the receipt events are dispatched. Verify the listener ID is unique and that you haven't accidentally removed the listener elsewhere. Also confirm the user is logged in and the WebSocket connection is active. + + + + Check that you are passing valid parameters — `messageId`, `receiverId`, `receiverType`, and `senderId` must all be correct. For group messages, `receiverId` should be the group GUID, not a user UID. Use the `.then()` error callback to inspect the `CometChatException` for details. + + + + These events require the **Enhanced Messaging Status** feature to be enabled for your app in the [CometChat Dashboard](https://app.cometchat.com). Verify this setting is turned on if you rely on group-level delivery and read tracking. + + + + You cannot mark your own messages as unread — this method only works for messages received from other users. Additionally, the `markMessageAsUnread` method requires the **Enhanced Messaging Status** feature to be enabled. + + + +## Next Steps + + + + Learn how to send text, media, and custom messages to users and groups. + + + Set up real-time message listeners and fetch missed messages. + + + Fetch and display the user's conversation list with unread counts. + + + Show real-time typing status in one-on-one and group chats. + + diff --git a/sdk/react-native/direct-call.mdx b/sdk/react-native/direct-call.mdx index 0ddc14e2a..79933e654 100644 --- a/sdk/react-native/direct-call.mdx +++ b/sdk/react-native/direct-call.mdx @@ -1,11 +1,34 @@ --- title: "Call Session" +description: "Start and manage call sessions in your React Native app using the CometChat Calls SDK, including token generation, call settings, listeners, and session control." --- +{/* TL;DR for Agents and Quick Reference */} + +**Quick Reference** - Generate token and start a call session: + +```javascript +// Generate call token +const callToken = await CometChatCalls.generateToken(sessionId, userAuthToken); + +// Configure and render +const callSettings = new CometChatCalls.CallSettingsBuilder() + .enableDefaultLayout(true) + .setIsAudioOnlyCall(false) + .build(); + +// +``` + + ## Overview This section demonstrates how to start a call session in a React Native application. Previously known as **Direct Calling**. + +**Available via:** SDK | UI Kits + + Before you begin, we strongly recommend you read the [calling setup guide](/sdk/react-native/calling-setup). @@ -89,6 +112,7 @@ const callListener = new CometChatCalls.OngoingCallListener({ }, onCallEnded: () => { console.log("Call ended"); + // Clear Active Call and End Session - see End Call Session section }, onCallEndButtonPressed: () => { console.log("End call button pressed"); @@ -141,6 +165,7 @@ const callListener = new CometChatCalls.OngoingCallListener({ }, onCallEnded: () => { console.log("Call ended"); + // Clear Active Call and End Session - see End Call Session section }, onCallEndButtonPressed: () => { console.log("End call button pressed"); @@ -186,6 +211,7 @@ return ( | `callToken` | The `GenerateToken` object received from `generateToken()` onSuccess | | `callSettings` | Object of `CallSettings` class configured via `CallSettingsBuilder` | + ### Call Settings Configure the call experience using the following `CallSettingsBuilder` methods: @@ -317,6 +343,11 @@ useEffect(() => { + +Always remove call event listeners when the component unmounts using `CometChatCalls.removeCallEventListener(listenerId)`. Failing to remove listeners can cause memory leaks and duplicate event handling. + + + ### Events | Event | Description | @@ -455,6 +486,7 @@ onCallEndButtonPressed: () => { + ## Methods These methods are available for performing custom actions during an active call session. Use them to build custom UI controls or implement specific behaviors based on your use case. @@ -637,3 +669,63 @@ CometChatCalls.endSession(); + + +## Best Practices + + + + Call tokens are session-specific and time-limited. Generate them right before starting the call session rather than caching them for extended periods. This ensures the token is fresh and reduces the chance of token expiry errors. + + + When using the Ringing flow, remember to call both `CometChat.endCall()` and `CometChatCalls.endSession()`. Missing either call can leave the session in an inconsistent state — the Chat SDK may still show the call as active, or media resources may not be released properly. + + + Always remove call event listeners in your component's cleanup function (e.g., the return function of `useEffect`). Orphaned listeners can cause memory leaks, duplicate event handling, and unexpected behavior when navigating between screens. + + + The `CometChatCalls.Component` should be rendered inside a `View` with `height: '100%'`, `width: '100%'`, and `position: 'relative'`. This ensures the call UI fills the screen correctly and overlays render in the right position. + + + When registering call event listeners with `addCallEventListener`, use a unique `listenerId` per component instance. This prevents one component from accidentally overwriting another component's listener, especially in navigation stacks where multiple screens may be mounted simultaneously. + + + +## Troubleshooting + + + + Ensure the user is logged in and the auth token is valid. Call `CometChat.getLoggedinUser()` to verify the user session is active. If the auth token has expired, re-authenticate the user before generating a call token. + + + Verify that the `CometChatCalls.Component` is wrapped in a `View` with explicit dimensions (`height: '100%'`, `width: '100%'`). The component requires a sized container to render. Also confirm that both `callSettings` and `callToken` props are provided and not `null` or `undefined`. + + + Check that the listener is registered before the call session starts. If using `addCallEventListener`, ensure the `listenerId` is unique and hasn't been overwritten by another registration. Also verify that the Calls SDK has been initialized via `CometChatCalls.init()`. + + + The `onCallEnded` callback only fires for 1:1 calls (exactly 2 participants). For group calls, use `onUserLeft` and `onUserListUpdated` to track when participants leave, and handle session cleanup based on your app's logic. + + + Check device permissions for camera and microphone. On React Native, you need to request `CAMERA` and `RECORD_AUDIO` permissions on Android, and add `NSCameraUsageDescription` and `NSMicrophoneUsageDescription` to `Info.plist` on iOS. Also verify that `setIsAudioOnlyCall` matches your intended call type. + + + +--- + +## Next Steps + + + + Implement a complete calling experience with incoming and outgoing call UI + + + Record call sessions for playback and compliance + + + Customize the main video container and participant tiles + + + Enable screen sharing and presenter layouts in calls + + \ No newline at end of file diff --git a/sdk/react-native/edit-message.mdx b/sdk/react-native/edit-message.mdx index b81b7aa21..57926da7d 100644 --- a/sdk/react-native/edit-message.mdx +++ b/sdk/react-native/edit-message.mdx @@ -1,67 +1,83 @@ --- title: "Edit A Message" +description: "Edit text and custom messages, listen for real-time edit events, and retrieve missed edits using the CometChat React Native SDK." --- +{/* TL;DR for Agents and Quick Reference */} + +**Quick Reference** - Edit a text message: +```javascript +let receiverID = "RECEIVER_UID"; +let messageText = "Updated message text"; +let receiverType = CometChat.RECEIVER_TYPE.USER; +let textMessage = new CometChat.TextMessage(receiverID, messageText, receiverType); +textMessage.setId(MESSAGE_ID); + +CometChat.editMessage(textMessage).then( + message => console.log("Message Edited", message), + error => console.log("Edit failed:", error) +); +``` + + + +**Available via:** [SDK](/sdk/react-native/edit-message) | [REST API](/rest-api/messages/update-message) | [UI Kits](/ui-kits/react-native/overview) + While [editing a message](/sdk/react-native/edit-message#edit-a-message) is straightforward, receiving events for edited messages with CometChat has two parts: -1. Adding a listener to receive [real-time message edits](/sdk/react-native/edit-message#real-time-message-edit-events) when your app is running -2. Calling a method to retrieve [missed message edits](/sdk/react-native/edit-message#missed-message-edit-events) when your app was not running +1. Adding a listener to receive [real-time message edits](/sdk/react-native/edit-message#real-time-message-edit-events) when your app is running. +2. Calling a method to retrieve [missed message edits](/sdk/react-native/edit-message#missed-message-edit-events) when your app was not running. ## Edit a Message *In other words, as a sender, how do I edit a message?* -In order to edit a message, you can use the `editMessage()` method. This method takes an object of the `BaseMessage` class. At the moment, you are only allowed to edit `TextMessage` and `CustomMessage`. Thus, the `BaseMessage` object must either be a Text or a Custom Message. +To edit a message, you can use the `editMessage()` method. This method takes an object of the `BaseMessage` class. At the moment, you are only allowed to edit `TextMessage` and `CustomMessage`. Thus, the `BaseMessage` object must either be a Text or a Custom Message. ### Add/Update Tags -While editing a message, you can update the tags associated with the Message. You can use the `setTags()` method to do so. The tags added while editing a message will replace the tags set when the message was sent. +While editing a message, you can update the tags associated with the message. Use the `setTags()` method to do so. The tags added while editing a message will replace the tags set when the message was sent. - + ```javascript let tags = ["pinnedMessage"]; textMessage.setTags(tags); ``` - - + ```javascript let tags = ["pinnedMessage"]; customMessage.setTags(tags); ``` - - + ```typescript let tags: Array = ["pinnedMessage"]; textMessage.setTags(tags); ``` - - + ```typescript let tags: Array = ["pinnedMessage"]; customMessage.setTags(tags); ``` - - Once the message object is ready, you can use the `editMessage()` method and pass the message object to it. - + ```javascript let receiverID = "RECEIVER_UID"; let messageText = "Hello world!"; @@ -79,7 +95,6 @@ message => { } ); ``` - @@ -100,9 +115,7 @@ CometChat.editMessage(textMessage).then( } ); ``` - - The object of the edited message will be returned in the `onSuccess()` callback method of the listener. The message object will contain the `editedAt` field set with the timestamp of the time the message was edited. This will help you identify if the message was edited while iterating through the list of messages. The `editedBy` field is also set to the UID of the user who edited the message. @@ -120,10 +133,10 @@ By default, CometChat allows certain roles to edit a message. *In other words, as a recipient, how do I know when someone has edited their message when my app is running?* -In order to receive real-time events for message being edited, you need to override the `onMessageEdited()` method of the `MessageListener` class. +To receive real-time events for a message being edited, you need to override the `onMessageEdited()` method of the `MessageListener` class. - + ```javascript var listenerID = "UNIQUE_LISTENER_ID"; @@ -136,7 +149,6 @@ new CometChat.MessageListener({ }) ); ``` - @@ -152,18 +164,20 @@ new CometChat.MessageListener({ }) ); ``` - - + +Always remove your message listeners when the component unmounts to prevent memory leaks and unexpected behavior. Call `CometChat.removeMessageListener("UNIQUE_LISTENER_ID")` in your cleanup function (e.g., in a `useEffect` return or `componentWillUnmount`). + + ## Missed Message Edit Events *In other words, as a recipient, how do I know when someone edited their message when my app was not running?* -When you retrieve the list of previous messages, for the message that was edited, the `editedAt` and the `editedBy` fields will be set. Also, for example, of the total number of messages for a conversation are 100, and the message with message ID 50 was edited. Now the message with id 50 will have the `editedAt` and the `editedBy` fields set whenever it is pulled from the history. Also, the 101st message will be and \[Action] message informing you that the message with id 50 has been edited. +When you retrieve the list of previous messages, for the message that was edited, the `editedAt` and the `editedBy` fields will be set. Also, for example, if the total number of messages for a conversation is 100, and the message with message ID 50 was edited, the message with ID 50 will have the `editedAt` and the `editedBy` fields set whenever it is pulled from the history. Additionally, the 101st message will be an [Action] message informing you that the message with ID 50 has been edited. -For the message edited event, in the `Action` object received, the following fields can help you get the relevant information- +For the message edited event, in the `Action` object received, the following fields can help you get the relevant information: 1. `action` - `edited` 2. `actionOn` - Updated message object with the edited details. @@ -171,7 +185,38 @@ For the message edited event, in the `Action` object received, the following fie 4. `actionFor` - User/group object having the details of the receiver to which the message was sent. - -In order to edit a message, you need to be either the sender of the message or the admin/moderator of the group in which the message was sent. - +To edit a message, you need to be either the sender of the message or the admin/moderator of the group in which the message was sent. + + + +- Always verify the message type (`TextMessage` or `CustomMessage`) before attempting an edit, as other message types are not supported. +- Use the `editedAt` and `editedBy` fields to display edit indicators in your UI so users know a message has been modified. +- Register your message edit listener early in the component lifecycle to avoid missing real-time edit events. +- When updating tags via `setTags()`, remember that the new tags fully replace any previously set tags — merge existing tags manually if you need to preserve them. + + + +- **Edit fails with permission error**: Ensure the current user is the message sender, or a group owner/moderator for group messages. +- **`onMessageEdited` not firing**: Confirm that `CometChat.addMessageListener()` has been called with a unique listener ID and that the listener has not been removed prematurely. +- **Edited message not reflected in history**: After editing, re-fetch or update the local message list. The `editedAt` field on the message object confirms the edit was applied. +- **Tags not updating**: Make sure you call `setTags()` on the message object before passing it to `editMessage()`. Tags set during editing replace all previous tags. + + + +## Next Steps + + + + Remove messages from conversations for users or groups. + + + Send text, media, and custom messages to users and groups. + + + Listen for incoming messages in real time and fetch missed messages. + + + Send and receive replies within message threads. + + diff --git a/sdk/react-native/expo-integration-guide.mdx b/sdk/react-native/expo-integration-guide.mdx index 7136d7955..ed0a8b85f 100644 --- a/sdk/react-native/expo-integration-guide.mdx +++ b/sdk/react-native/expo-integration-guide.mdx @@ -1,8 +1,23 @@ --- title: "Expo Integration" +description: "Configure CometChat Calls SDK in an Expo React Native app — add dependencies, set Android and iOS permissions, and use development builds instead of Expo GO." --- + +**Quick Reference** - Key Expo setup steps: +```json +// Android: app.json → android block +"permissions": ["CAMERA", "RECORD_AUDIO", "INTERNET", "MODIFY_AUDIO_SETTINGS"], +"plugins": [["expo-build-properties", { "android": { "minSdkVersion": 24 } }]] + +// iOS: app.json → ios block +"infoPlist": { + "NSCameraUsageDescription": "This app uses the camera for video calls.", + "NSMicrophoneUsageDescription": "This app uses the microphone for audio/video calls." +} +``` + ## Add the CometChatCalls Dependency @@ -16,6 +31,10 @@ To add CometChat Calls SDK, please refer to the steps mentioned [here](/sdk/reac Our React Native Calls SDK does not work with Expo GO since it requires some custom native modules. Also, expo does not recommend using Expo GO for building production grade apps. So in order to use our Calls SDK in an expo app you need to use [development builds](https://docs.expo.dev/develop/development-builds/introduction/). You can follow the official Expo [guide](https://docs.expo.dev/guides/local-app-development/) for more details. + +Expo GO is not supported. You must use [development builds](https://docs.expo.dev/develop/development-builds/introduction/) to use the CometChat Calls SDK in an Expo app. + + ### Android You need to add the below `permissions` & `plugin` block inside `android` block of the `app.json` file. You need to install `expo-build-properties` package in your app. @@ -74,3 +93,36 @@ You need to add the below `permissions` block inside `ios` block of the `app.jso To initialize CometChat Calls SDK, please refer to the guide [here](/sdk/react-native/calling-setup#initialize-cometchatcalls) + +## Troubleshooting + + + + Ensure you're using a development build, not Expo GO. Run `npx expo prebuild` followed by `npx expo run:android` or `npx expo run:ios` to create a development build with native modules. + + + Verify that `minSdkVersion` is set to at least `24` in the `expo-build-properties` plugin config. The CometChat Calls SDK requires Android API level 24 or higher. + + + Check that `NSCameraUsageDescription` and `NSMicrophoneUsageDescription` are set in the `infoPlist` block of your `app.json`. Without these, iOS will silently deny access to camera and microphone. + + + +--- + +## Next Steps + + + + Complete Calls SDK installation and initialization guide + + + Start and manage call sessions after setup is complete + + + Implement incoming and outgoing call UI with ringing + + + Set up the core CometChat Chat SDK for React Native + + \ No newline at end of file diff --git a/sdk/react-native/flag-message.mdx b/sdk/react-native/flag-message.mdx index 350149f5d..8e504d73c 100644 --- a/sdk/react-native/flag-message.mdx +++ b/sdk/react-native/flag-message.mdx @@ -1,11 +1,32 @@ --- title: "Flag Message" +description: "Flag and report inappropriate messages for moderation review using the CometChat React Native SDK." --- +{/* TL;DR for Agents and Quick Reference */} + +**Quick Reference for AI Agents & Developers** + +```javascript +// Get available flag reasons +const reasons = await CometChat.getFlagReasons(); + +// Flag a message with a reason +const payload = { reasonId: "spam", remark: "Promotional content" }; +await CometChat.flagMessage("MESSAGE_ID", payload); +``` + +**Required:** Moderation enabled in [Dashboard](https://app.cometchat.com) → Moderation → Advanced Settings + + ## Overview Flagging messages allows users to report inappropriate content to moderators or administrators. When a message is flagged, it appears in the [CometChat Dashboard](https://app.cometchat.com) under **Moderation > Flagged Messages** for review. + +**Available via:** [SDK](/sdk/react-native/flag-message) | [REST API](/rest-api/chat-apis) | [UI Kits](/ui-kits/react-native/overview) + + For a complete understanding of how flagged messages are reviewed and managed, see the [Flagged Messages](/moderation/flagged-messages) documentation. @@ -218,3 +239,39 @@ if (result.success) { showToast("Message reported successfully"); } ``` + + + + + - **Cache flag reasons:** Call `getFlagReasons()` once at app initialization or when the report dialog is first opened, then reuse the cached list. Avoid fetching reasons on every report action. + - **Require a reason:** Always require users to select a reason before submitting a flag. This improves the quality of moderation data and helps moderators prioritize reviews. + - **Provide a remark field:** Allow users to add optional context via the `remark` parameter. Additional details help moderators make faster, more informed decisions. + - **Confirm before submitting:** Show a confirmation dialog before calling `flagMessage()` to prevent accidental reports. + - **Show feedback after flagging:** Display a success message or toast after a message is flagged so the user knows their report was submitted. + + + - **`getFlagReasons()` returns an empty array:** Ensure that flag reasons are configured in the [CometChat Dashboard](https://app.cometchat.com) under **Moderation > Advanced Settings**. Moderation must also be enabled for your app. + - **`flagMessage()` fails with an error:** Verify that the `reasonId` matches one of the IDs returned by `getFlagReasons()`. Also confirm that the `messageId` is valid and belongs to a conversation the logged-in user has access to. + - **Flagged messages not appearing in Dashboard:** Check that moderation is enabled in your Dashboard settings. Flagged messages appear under **Moderation > Flagged Messages**. + - **Permission errors:** The logged-in user must be a participant in the conversation containing the message they want to flag. Users cannot flag messages from conversations they are not part of. + + + +--- + +## Next Steps + + + + Edit sent messages in one-on-one and group conversations + + + Delete messages for yourself or for all participants + + + Listen for incoming messages in real time + + + Track message delivery and read status + + diff --git a/sdk/react-native/interactive-messages.mdx b/sdk/react-native/interactive-messages.mdx index 8498fb652..40027f84e 100644 --- a/sdk/react-native/interactive-messages.mdx +++ b/sdk/react-native/interactive-messages.mdx @@ -1,14 +1,35 @@ --- title: "Interactive Messages" +description: "Send and receive interactive messages with embedded forms, cards, and custom interactive elements using the CometChat React Native SDK." --- + +**Quick Reference** - Send an interactive message and listen for it: +```javascript +// Send an interactive message +const interactiveMessage = new CometChat.InteractiveMessage( + "UID", CometChat.RECEIVER_TYPE.USER, "form", { title: "Survey", formFields: [] } +); +await CometChat.sendInteractiveMessage(interactiveMessage); + +// Listen for incoming interactive messages +CometChat.addMessageListener("interactive-listener", new CometChat.MessageListener({ + onInteractiveMessageReceived: (msg) => console.log("Interactive:", msg), + onInteractionGoalCompleted: (msg) => console.log("Goal completed:", msg), +})); +``` + + + +**Available via:** [SDK](/sdk/react-native/interactive-messages) | [REST API](/rest-api/chat-apis) | [UI Kits](/ui-kits/react-native/overview) + An `InteractiveMessage` is a specialized object that encapsulates an interactive unit within a chat message, such as an embedded form that users can fill out directly within the chat interface. This enhances user engagement by making the chat experience more interactive and responsive to user input. ## InteractiveMessage -`InteractiveMessage` is a chat message with embedded interactive content. It can contain various properties: +`InteractiveMessage` is a chat message with embedded interactive content. It can contain the following properties: | Parameter | Description | | | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | -------- | @@ -28,27 +49,36 @@ An `Interaction` represents a user action involved with an `InteractiveMessage`. ## Mark as Interacted -This method marks a message as interacted by identifying it with the provided Id. it also logs the interactive element associated with the interaction. +This method marks a message as interacted by identifying it with the provided Id. It also logs the interactive element associated with the interaction. - -```javascript -CometChat.markAsInteracted(message?.getId(), elementId) -.then((response) => { - console.log("Mark As Interacted", response); - }); - .catch((error) => { - console.log("error while markAsInteracted", error); - }); -``` - - - + + ```javascript + CometChat.markAsInteracted(message?.getId(), elementId) + .then((response) => { + console.log("Mark As Interacted", response); + }) + .catch((error) => { + console.log("error while markAsInteracted", error); + }); + ``` + + + ```typescript + CometChat.markAsInteracted(message?.getId(), elementId) + .then((response) => { + console.log("Mark As Interacted", response); + }) + .catch((error) => { + console.log("error while markAsInteracted", error); + }); + ``` + ## Goal Completion -A key feature of InteractiveMessage is checking whether a user's interactions with the message meet the defined `InteractionGoal` +A key feature of `InteractiveMessage` is checking whether a user's interactions with the message meet the defined `InteractionGoal`. You would be tracking every interaction users perform on an `InteractiveMessage` (captured as `Interaction` objects) and comparing those with the defined `InteractionGoal`. The completion of a goal can vary depending on the goal type: @@ -73,19 +103,28 @@ The `InteractiveMessage` can be sent using the `sendInteractiveMessage` method o Here is an example of how to use it: - -```typescript -CometChat.sendInteractiveMessage(message) -.then((message: CometChat.InteractiveMessage) => { - console.log("message sent successfully", message.getSentAt()); -}) -.catch((error: CometChat.CometChatException) => { - console.log("error while sending message", { error }); -}); -``` - - - + + ```javascript + CometChat.sendInteractiveMessage(message) + .then((message) => { + console.log("message sent successfully", message.getSentAt()); + }) + .catch((error) => { + console.log("error while sending message", { error }); + }); + ``` + + + ```typescript + CometChat.sendInteractiveMessage(message) + .then((message: CometChat.InteractiveMessage) => { + console.log("message sent successfully", message.getSentAt()); + }) + .catch((error: CometChat.CometChatException) => { + console.log("error while sending message", { error }); + }); + ``` + ## Event Listeners @@ -99,20 +138,30 @@ The `onInteractiveMessageReceived` event listener is triggered when an `Interact Here is an example: - -```typescript -CometChat.addMessageListener( -"UNIQUE_LISTENER_ID", -new CometChat.MessageListener({ - onInteractiveMessageReceived: message => { - console.log("on Interactive Message Received", message); - } -}) -); -``` - - - + + ```javascript + CometChat.addMessageListener( + "UNIQUE_LISTENER_ID", + new CometChat.MessageListener({ + onInteractiveMessageReceived: (message) => { + console.log("on Interactive Message Received", message); + } + }) + ); + ``` + + + ```typescript + CometChat.addMessageListener( + "UNIQUE_LISTENER_ID", + new CometChat.MessageListener({ + onInteractiveMessageReceived: (message: CometChat.InteractiveMessage) => { + console.log("on Interactive Message Received", message); + } + }) + ); + ``` + ### On Interaction Goal Completed @@ -122,24 +171,76 @@ The `onInteractionGoalCompleted` event listener is invoked when an interaction g Here is an example: - -```typescript -CometChat.addMessageListener( -"UNIQUE_LISTENER_ID", -new CometChat.MessageListener({ - onInteractionGoalCompleted: message => { - console.log("on Interaction Goal Completed", message); - } -}) -); -``` - - - + + ```javascript + CometChat.addMessageListener( + "UNIQUE_LISTENER_ID", + new CometChat.MessageListener({ + onInteractionGoalCompleted: (message) => { + console.log("on Interaction Goal Completed", message); + } + }) + ); + ``` + + + ```typescript + CometChat.addMessageListener( + "UNIQUE_LISTENER_ID", + new CometChat.MessageListener({ + onInteractionGoalCompleted: (message: CometChat.InteractiveMessage) => { + console.log("on Interaction Goal Completed", message); + } + }) + ); + ``` + These event listeners offer your application a way to provide real-time updates in response to incoming interactive messages and goal completions, contributing to a more dynamic and responsive user chat experience. + +**Listener Cleanup:** Always remove message listeners when they are no longer needed. Remove the listener in `componentWillUnmount()` or the cleanup function of a `useEffect` hook to prevent memory leaks. + +```javascript +CometChat.removeMessageListener("UNIQUE_LISTENER_ID"); +``` + + ## Usage An `InteractiveMessage` is constructed with the receiver's UID, the receiver type, the interactive type, and interactive data as a JSONObject. Once created, the `InteractiveMessage` can be sent using CometChat's `sendInteractiveMessage()` method. Incoming `InteractiveMessages` can be received and processed via CometChat's message listener framework. + + + + - Use descriptive, unique listener IDs (e.g., `"interactive-form-listener"`) to avoid conflicts with other listeners + - Always remove message listeners on component unmount to prevent memory leaks + - Set `allowSenderInteraction` to `true` only when the sender needs to interact with their own message (e.g., previewing a form) + - Define clear `InteractionGoal` types to accurately track user engagement with interactive elements + - Handle both `onInteractiveMessageReceived` and `onInteractionGoalCompleted` events to provide a complete interactive experience + + + - **Interactive message not sending:** Verify that `interactiveData` is a valid JSON object and all required fields (`receiverId`, `receiverType`, `messageType`) are set + - **Not receiving interactive messages:** Ensure the message listener is registered with `onInteractiveMessageReceived` and the user is logged in + - **Goal not completing:** Check that the `InteractionGoal` type matches the expected interactions — use `ANY_ACTION` for simple cases and `ALL_OF` only when every specified element must be interacted with + - **`markAsInteracted` failing:** Confirm that the message ID and element ID are valid and that the user has permission to interact with the message + - **Duplicate events:** Verify you are not registering the same listener ID multiple times without removing the previous one + + + +## Next Steps + + + + Send text, media, custom, and interactive messages to users and groups + + + Listen for real-time messages and fetch missed or unread messages + + + Understand message categories, types, and hierarchy including interactive messages + + + Explore the full range of CometChat messaging capabilities + + diff --git a/sdk/react-native/key-concepts.mdx b/sdk/react-native/key-concepts.mdx index 023f77247..458c45e21 100644 --- a/sdk/react-native/key-concepts.mdx +++ b/sdk/react-native/key-concepts.mdx @@ -1,92 +1,111 @@ --- title: "Key Concepts" +description: "Understand the fundamental building blocks of CometChat — users, groups, messaging categories, authentication, and roles." --- + +**Quick Reference** - Core identifiers you'll use throughout the SDK: +```javascript +// User identified by UID +const user = new CometChat.User("user1"); +user.setName("Kevin"); -### CometChat Dashboard +// Group identified by GUID +const group = new CometChat.Group("group1", "My Group", CometChat.GROUP_TYPE.PUBLIC); + +// Message categories: message | custom | action | call | interactive +``` + + +## CometChat Dashboard The CometChat Dashboard enables you to create new apps (projects) and manage your existing apps. -How many apps to create? +**How many apps to create?** -Ideally, you should create two apps- one for development and one for production. And you should use a single app irrespective of the number of platforms. > > Do not create separate apps for every platform; if you do, your users on different platforms will not be able to communicate with each other! +Ideally, you should create two apps — one for development and one for production. You should use a single app irrespective of the number of platforms. +Do not create separate apps for every platform; if you do, your users on different platforms will not be able to communicate with each other. -* For every app, a unique App ID is generated. This App ID will be required when integrating CometChat within your app. -* Along with the App ID, you will need to create an Auth Key (from the Dashboard) which can be used for user authentication. +- For every app, a unique App ID is generated. This App ID will be required when integrating CometChat within your app. +- Along with the App ID, you will need to create an Auth Key (from the Dashboard) which can be used for user authentication. -### Auth & Rest API Keys +## Auth & REST API Keys You can generate two types of keys from the dashboard. | Type | Privileges | Recommended Use | | ------------ | ---------------------------------------------------------------- | --------------------------------------------- | -| Auth Key | The Auth Key can be used to create & login users. | In your client side code (during development) | -| Rest API Key | The Rest API Key can be used to perform any CometChat operation. | In your server side code | +| Auth Key | The Auth Key can be used to create & login users. | In your client-side code (during development) | +| REST API Key | The REST API Key can be used to perform any CometChat operation. | In your server-side code | + + +**Security Warning:** Auth Keys should only be used during development. For production environments, use [Auth Tokens](/sdk/react-native/authentication-overview#login-using-auth-token) generated from your server to authenticate users securely. + -### Users +## Users A user is anyone who uses CometChat. ### UID -* Each user is uniquely identified using UID. -* The UID is typically the primary ID of the user from your database. +- Each user is uniquely identified using a UID. +- The UID is typically the primary ID of the user from your database. - UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and other special characters are not allowed. - ### Auth Token -* A single user can have multiple auth tokens. The auth tokens should be per user per device. -* It should be generated by API call ideally, via server to server call. The auth token should then be given to CometChat for login. -* An Auth Token can only be deleted via dashboard or using REST API. +- A single user can have multiple auth tokens. The auth tokens should be per user per device. +- It should be generated by an API call ideally, via a server-to-server call. The auth token should then be given to CometChat for login. +- An Auth Token can only be deleted via the dashboard or using the REST API. -### Authentication +## Authentication To allow a user to use CometChat, the user must log in to CometChat. -**CometChat does not handle user management.** You must handle user registration and login at your end. Once the user is logged into your app/site, you can log in the user to CometChat **programmatically**. So the user does not ever directly login to CometChat. + +**CometChat does not handle user management.** You must handle user registration and login at your end. Once the user is logged into your app/site, you can log in the user to CometChat **programmatically**. The user does not ever directly login to CometChat. + + **CometChat does not handle friends management.** If you want to associate friends with your users, you must handle friends management in your app. Once two users are friends (i.e. they have accepted each other as friends), then you can associate them as friends in CometChat. + ### Typical Workflow | Your App | Your Server | CometChat | | ----------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | -| User registers in your app | You store the user information in your database (e.g. ID, name, email, phone, location etc. in `users` table) | You add the user to CometChat (only ID & name) using the Rest API | +| User registers in your app | You store the user information in your database (e.g. ID, name, email, phone, location etc. in `users` table) | You add the user to CometChat (only ID & name) using the REST API | | User logs in to your app | You verify the credentials, login the user and retrieve the user ID | You log in the user to CometChat using the same user ID programmatically | | User sends a friend request | You display the request to the potential friend | No action required | -| User accepts a friend request | You display the users as friends | You add both the users as friends using the Rest API | +| User accepts a friend request | You display the users as friends | You add both the users as friends using the REST API | -### User Roles +## User Roles A role is a category for a group of similar users. For example, you may want to group your premium users using the role "Premium". You then use this to filter users or enable/disable features by writing conditional code. -### User List +## User List -* The User List can be used to build the **Contacts** or **Who's Online** view in your app. -* The list of users can be different based on the logged-in user. +- The User List can be used to build the **Contacts** or **Who's Online** view in your app. +- The list of users can be different based on the logged-in user. -### Groups +## Groups A group can be used for multiple users to communicate with each other on a particular topic/interest. ### GUID -* Each group is uniquely identified using GUID. -* The GUID is typically the primary ID of the group from your database. If you do not store group information in your database, you can generate a random string for use as GUID. +- Each group is uniquely identified using a GUID. +- The GUID is typically the primary ID of the group from your database. If you do not store group information in your database, you can generate a random string for use as GUID. - GUID can be alphanumeric with underscore and hyphen. Spaces, punctuation and other special characters are not allowed. - ### Types @@ -101,7 +120,7 @@ CometChat supports three different types of groups: ### Members -Once a participant joins a group, they become a member of the group. Members are part of the group indefinitely i.e. they will keep receiving messages, calls & notifications. To stop, the participant must either be kicked, banned or intentionally leave the group. +Once a participant joins a group, they become a member of the group. Members are part of the group indefinitely — they will keep receiving messages, calls & notifications. To stop, the participant must either be kicked, banned or intentionally leave the group. CometChat supports three different types of member scopes in a group: @@ -111,15 +130,33 @@ CometChat supports three different types of member scopes in a group: | Moderator | - | - Change scope of moderator or participant. - Update group - Kick & Ban Participants - Send & Receive Messages & Calls | | Participant | Any other user is assigned Participant scope | - Send & Receive Messages & Calls | -### Messaging - -Any message in CometChat can belong to either one of the below categories - -| Category | Description | -| -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| message | Any message belonging to the category `message` can belong to either one of the below types: 1. text 2. image 3. video 4. audio 5. file | -| custom | Custom messages are an option available for developers to send custom data across to users/groups. To send any additional data that does not fit in the default categories and types provided by CometChat, you can use the custom messages. | -| action | Action messages are system-generated messages. These can belong to either of the below types:1. groupMember - when the action is performed on a group member 2. message - when the action is performed on a message | -| call | These are call-related messages. These can belong to either one of the two types:1. audio 2. video | - -For more information, you can refer to the [Message structure and hierarchy guide](/sdk/react-native/message-structure-and-hierarchy). +## Messaging + +Any message in CometChat belongs to one of the following categories: + +| Category | Description | +| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| message | Any message belonging to the category `message` can belong to either one of the below types: 1. text 2. image 3. video 4. audio 5. file | +| custom | Custom messages are an option available for developers to send custom data across to users/groups. To send any additional data that does not fit in the default categories and types provided by CometChat, you can use custom messages. | +| action | Action messages are system-generated messages. These can belong to either of the below types: 1. groupMember — when the action is performed on a group member 2. message — when the action is performed on a message | +| call | These are call-related messages. These can belong to either one of the two types: 1. audio 2. video | +| interactive | Interactive messages encapsulate interactive units within a chat message, such as forms or cards. See [Interactive Messages](/sdk/react-native/interactive-messages) | + +For more information, you can refer to the [Message Structure and Hierarchy guide](/sdk/react-native/message-structure-and-hierarchy). + +## Next Steps + + + + Initialize CometChat and authenticate users in your app + + + Start sending text, media, and custom messages + + + Track real-time online/offline status of users + + + Understand message categories, types, and hierarchy + + diff --git a/sdk/react-native/login-listener.mdx b/sdk/react-native/login-listener.mdx index eb91e8364..626896499 100644 --- a/sdk/react-native/login-listener.mdx +++ b/sdk/react-native/login-listener.mdx @@ -1,12 +1,25 @@ --- title: "Login Listener" +description: "Receive real-time updates for login and logout events using the LoginListener class in CometChat React Native SDK." --- + +**Quick Reference** - Register a login listener: +```javascript +CometChat.addLoginListener( + "UNIQUE_LISTENER_ID", + new CometChat.LoginListener({ + loginSuccess: (e) => console.log("Logged in", e), + loginFailure: (e) => console.log("Login failed", e), + logoutSuccess: () => console.log("Logged out"), + logoutFailure: (e) => console.log("Logout failed", e), + }) +); +``` + -The CometChat SDK provides you with real-time updates for the `login` and `logout` events. This can be achieved using the `LoginListener` class provided. LoginListener consists of 4 events that can be triggered. These are as follows: - -Login Listener provides you with the below 4 methods: +The CometChat SDK provides you with real-time updates for the `login` and `logout` events. This can be achieved using the `LoginListener` class. LoginListener provides the following 4 methods: | Delegate Method | Information | | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -15,76 +28,109 @@ Login Listener provides you with the below 4 methods: | logoutSuccess() | Informs you about the user being logged out successfully. | | logoutFailure(event) | Informs you about the failure while logging out the user. The reason for the failure can be obtained from the object of the `CometChatException` class. | -To add the `LoginListener`, you need to use the `addLoginListener()` method provided by the SDK which takes a unique identifier for the listener and of the the `LoginListener` class itself. +## Add Login Listener + +To add the `LoginListener`, use the `addLoginListener()` method provided by the SDK. It takes a unique identifier for the listener and an instance of the `LoginListener` class. - -```javascript -var listenerID = "UNIQUE_LISTENER_ID"; -CometChat.addLoginListener( - listenerID, - new CometChat.LoginListener({ - loginSuccess: (e) => { + + ```javascript + var listenerID = "UNIQUE_LISTENER_ID"; + + CometChat.addLoginListener( + listenerID, + new CometChat.LoginListener({ + loginSuccess: (e) => { console.log("LoginListener :: loginSuccess", e); - }, - loginFailure: (e) => { + }, + loginFailure: (e) => { console.log("LoginListener :: loginFailure", e); - }, - logoutSuccess: () => { + }, + logoutSuccess: () => { console.log("LoginListener :: logoutSuccess"); - }, - logoutFailure: (e) => { + }, + logoutFailure: (e) => { console.log("LoginListener :: logoutFailure", e); - } - }) -); -``` - - - - -```javascript -var listenerID: string = "UNIQUE_LISTENER_ID"; -CometChat.addLoginListener( - listenerID, - new CometChat.LoginListener({ - loginSuccess: (user: CometChat.User) => { + }, + }) + ); + ``` + + + ```typescript + var listenerID: string = "UNIQUE_LISTENER_ID"; + + CometChat.addLoginListener( + listenerID, + new CometChat.LoginListener({ + loginSuccess: (user: CometChat.User) => { console.log("LoginListener :: loginSuccess", user); - }, - loginFailure: (error: CometChat.CometChatException) => { + }, + loginFailure: (error: CometChat.CometChatException) => { console.log("LoginListener :: loginFailure", error); - }, - logoutSuccess: () => { + }, + logoutSuccess: () => { console.log("LoginListener :: logoutSuccess"); - }, - logoutFailure: (error: CometChat.CometChatException) => { + }, + logoutFailure: (error: CometChat.CometChatException) => { console.log("LoginListener :: logoutFailure", error); - } - }) -); -``` - - - + }, + }) + ); + ``` + -In order to stop receiving events related to login and logout you need to use the removeLoginListener() method provided by the SDK and pass the ID of the listener that needs to be removed. - - - -```javascript -var listenerID = "UNIQUE_LISTENER_ID"; -CometChat.removeLoginListener(listenerID); -``` - - - - -```javascript -var listenerID: string = "UNIQUE_LISTENER_ID"; -CometChat.removeLoginListener(listenerID); -``` +## Remove Login Listener - +To stop receiving events related to login and logout, use the `removeLoginListener()` method and pass the ID of the listener that needs to be removed. + + + ```javascript + var listenerID = "UNIQUE_LISTENER_ID"; + CometChat.removeLoginListener(listenerID); + ``` + + + ```typescript + var listenerID: string = "UNIQUE_LISTENER_ID"; + CometChat.removeLoginListener(listenerID); + ``` + + + +**Listener Cleanup:** Always remove your login listeners when they are no longer needed (e.g., when a component unmounts) to prevent memory leaks and unexpected behavior. Use `removeLoginListener()` with the same listener ID you used when adding it. + + + + + - Use unique, descriptive listener IDs to avoid conflicts (e.g., `"login-screen-listener"`) + - Add listeners in component mount lifecycle and remove them on unmount + - Handle all four events to provide a complete user experience + - Use `loginFailure` to display user-friendly error messages + + + - **Listener not firing:** Ensure the listener was added before the login/logout event occurs + - **Duplicate events:** Check that you're not adding the same listener multiple times without removing it first + - **Memory leaks:** Verify that `removeLoginListener()` is called when the component unmounts + + + +## Next Steps + + + + Learn about login methods and session management + + + Track real-time online/offline status of users + + + Monitor and manage WebSocket connection status + + + Start sending text, media, and custom messages + + diff --git a/sdk/react-native/mentions.mdx b/sdk/react-native/mentions.mdx index 50627369e..8e51dbae7 100644 --- a/sdk/react-native/mentions.mdx +++ b/sdk/react-native/mentions.mdx @@ -1,10 +1,24 @@ --- title: "Mentions" +description: "Learn how to mention users in messages using the CometChat React Native SDK. Use the <@uid:UID> format to tag specific users in text and media message captions." --- + +**Quick Reference** - Mention a user in a message: +```javascript +// Use the format <@uid:UID> to mention users +let messageText = "Hello, <@uid:cometchat-uid-1>"; +let textMessage = new CometChat.TextMessage("RECEIVER_ID", messageText, CometChat.RECEIVER_TYPE.USER); +CometChat.sendMessage(textMessage); +``` + -Mentions in messages enable users to refer to specific individual within a conversation. This is done by using the `<@uid:UID>` format, where `UID` represents the user’s unique identification. + +Available via: [SDK](/sdk/react-native/mentions) | [REST API](/rest-api/messages/list-messages) | [UI Kits](/ui-kit/react-native/core-features#mentions) + + +Mentions in messages enable users to refer to specific individual within a conversation. This is done by using the `<@uid:UID>` format, where `UID` represents the user's unique identification. Mentions are a powerful tool for enhancing communication in messaging platforms. They streamline interaction by allowing users to easily engage and collaborate with particular individuals, especially in group conversations. @@ -13,7 +27,7 @@ Mentions are a powerful tool for enhancing communication in messaging platforms. To send a message with a mentioned user, you must follow a specific format: `<@uid:UID>`. For example, to mention the user with UID `cometchat-uid-1` with the message "`Hello`," your text would be "`Hello, <@uid:cometchat-uid-1>`" - + ```javascript let receiverID = "UID"; let messageText = "Hello, <@uid:cometchat-uid-1>"; @@ -36,7 +50,7 @@ CometChat.sendMessage(textMessage).then( - + ```javascript let receiverID = "GUID"; let messageText = "Hello <@uid:cometchat-uid-1>"; @@ -59,7 +73,7 @@ CometChat.sendMessage(textMessage).then( - + ```typescript let receiverID: string = "UID", messageText: string = "Hello <@uid:cometchat-uid-1>"; @@ -77,7 +91,7 @@ CometChat.sendMessage(textMessage).then( - + ```typescript let receiverID: string = "GUID", messageText: string = "Hello world!", @@ -108,6 +122,11 @@ You can mention user in text message and media messages captions + +**Push Notifications & UI Rendering:** While the message format uses `<@uid:UID>`, push notifications are sent with the parsed body containing the actual username — not the raw `<@uid:>` format. For UI rendering with the SDK, use `message.getMentionedUsers()` to get the mentioned user objects (which include both `uid` and `name`) and replace the `<@uid:>` tags in your message bubble accordingly. If you're using a UI Kit, this is handled automatically. + + + ## Mentioned Messages By default, the SDK will fetch all the messages irrespective of the fact that the logged-in user is mentioned or not in the message. The SDK has other optional filters such as tags and blocked relationships. @@ -122,7 +141,7 @@ By default, the SDK will fetch all the messages irrespective of the fact that th To get a list of messages in a conversation where users are mentioned along with the user tags of the mentioned users. - + ```javascript let UID = "UID"; let limit = 30; @@ -149,7 +168,7 @@ messagesRequest.fetchPrevious().then( - + ```javascript let GUID = "GUID"; let limit = 30; @@ -176,7 +195,7 @@ messagesRequest.fetchPrevious().then( - + ```typescript let UID: string = "UID", limit: number = 30, @@ -205,7 +224,7 @@ messagesRequest.fetchPrevious().then( - + ```typescript let GUID: string = "GUID", limit: number = 30, @@ -236,12 +255,13 @@ messagesRequest.fetchPrevious().then( + ## Mentions With Blocked Info To get a list of messages in a conversation where users are mentioned along with the blocked relationship of the mentioned users with the logged-in user. - + ```javascript let UID = "UID"; let limit = 30; @@ -268,7 +288,7 @@ messagesRequest.fetchPrevious().then( - + ```javascript let GUID = "GUID"; let limit = 30; @@ -296,7 +316,7 @@ messagesRequest.fetchPrevious().then( - + ```typescript let UID: string = "UID", limit: number = 30, @@ -326,7 +346,7 @@ messagesRequest.fetchPrevious().then( - + ```typescript let GUID: string = "GUID", limit: number = 30, @@ -358,6 +378,7 @@ messagesRequest.fetchPrevious().then( + ## Get Users Mentioned In a Particular Message To retrieve the list of users mentioned in the particular message, you can use the `message.getMentionedUsers()` method. This method will return an array containing the mentioned users, or an empty array if no users were mentioned in the message. @@ -365,3 +386,54 @@ To retrieve the list of users mentioned in the particular message, you can use t ```javascript message.getMentionedUsers(); ``` + +## Best Practices + + + + Always use the `<@uid:UID>` format when mentioning users. The UID must exactly match the user's unique identifier in CometChat. Incorrect UIDs will not resolve to a valid mention. + + + Before sending a message with mentions, verify that the UIDs you are referencing exist in your CometChat app. Mentioning non-existent UIDs will not throw an error, but the mention will not resolve to a user on the recipient's end. + + + Use `mentionsWithTagInfo(true)` and `mentionsWithBlockedInfo(true)` on your `MessagesRequestBuilder` when you need to display additional context about mentioned users, such as their roles (via tags) or blocked status. Avoid enabling these filters unnecessarily to reduce payload size. + + + Mentions are supported in text messages and media message captions. Ensure your UI handles rendering mentions consistently across both message types. + + + +## Troubleshooting + + + + Ensure you are using the correct `<@uid:UID>` format. The UID must be wrapped exactly as `<@uid:your-uid-here>`. Also verify that the mentioned user exists in your CometChat app. Use `message.getMentionedUsers()` to confirm the SDK parsed the mentions correctly. + + + This typically means the mention format in the message text is incorrect or the UID does not match any registered user. Double-check the message text for proper `<@uid:UID>` syntax and ensure there are no extra spaces or typos in the UID. + + + Make sure you have set `mentionsWithTagInfo(true)` or `mentionsWithBlockedInfo(true)` on your `MessagesRequestBuilder` before calling `fetchPrevious()`. These filters are disabled by default. + + + Verify that you are setting the caption text with the `<@uid:UID>` format on the media message object. Mentions in captions follow the same format as text messages. + + + +## Next Steps + + + + Learn how to send text, media, and custom messages to users and groups. + + + Set up real-time message listeners and fetch message history. + + + Add emoji reactions to messages for richer user interactions. + + + Organize conversations with threaded replies on messages. + + \ No newline at end of file diff --git a/sdk/react-native/message-structure-and-hierarchy.mdx b/sdk/react-native/message-structure-and-hierarchy.mdx index 73e784952..e046e938b 100644 --- a/sdk/react-native/message-structure-and-hierarchy.mdx +++ b/sdk/react-native/message-structure-and-hierarchy.mdx @@ -1,16 +1,25 @@ --- title: "Message Structure And Hierarchy" +description: "Understand the various message categories, types, and statuses in CometChat — including message, custom, action, call, and interactive messages." --- + +**Quick Reference** - Message categories and their common types: +```javascript +// Check message category and type +const category = message.getCategory(); // "message" | "custom" | "action" | "call" | "interactive" +const type = message.getType(); // "text" | "image" | "video" | "audio" | "file" | custom type +``` + -The below diagram helps you better understand the various message categories and types that a CometChat message can belong to. +The diagram below helps you understand the various message categories and types that a CometChat message can belong to. -As you can see in the above diagram, every message belongs to a particular category. A message can belong to either one of the 4 categories +As you can see in the above diagram, every message belongs to a particular category. A message can belong to one of the 5 categories: 1. Message 2. Custom @@ -18,67 +27,104 @@ As you can see in the above diagram, every message belongs to a particular categ 4. Call 5. Interactive -Each category can be further be classified into types. +Each category can be further classified into types. -\#Message A message belonging to the category `message` can be classified into either 1 of the below types: +## Message -1. text - A plain text message -2. image- An image message -3. video- A video message -4. audio- An audio message -5. file- A file message +A message belonging to the category `message` can be classified into one of the following types: + +| Type | Description | +|-------|----------------------| +| text | A plain text message | +| image | An image message | +| video | A video message | +| audio | An audio message | +| file | A file message | ## Custom -In the case of messages that belong to the `custom` category, there are no predefined types. Custom messages can be used by developers to send messages that do not fit in the default category and types provided by CometChat. For messages with the category `custom`, the developers can set their own type to uniquely identify the custom message. A very good example of a custom message would be the sharing of location co-ordinates. In this case, the developer can decide to use the custom message with type set to `location`. +In the case of messages that belong to the `custom` category, there are no predefined types. Custom messages can be used by developers to send messages that do not fit in the default category and types provided by CometChat. For messages with the category `custom`, the developers can set their own type to uniquely identify the custom message. + +A good example of a custom message would be sharing location coordinates. In this case, the developer can decide to use the custom message with type set to `location`. ## Interactive An InteractiveMessage is a specialized object that encapsulates an interactive unit within a chat message, such as an embedded form that users can fill out directly within the chat interface. This enhances user engagement by making the chat experience more interactive and responsive to user input. -form- for interactive form card- for interactive card customInteractive- for custom interaction messages +| Type | Description | +|-------------------|----------------------------------------| +| form | For interactive form messages | +| card | For interactive card messages | +| customInteractive | For custom interaction messages | - -to know about Interactive messages please [Click here](/sdk/react-native/interactive-messages) - +To learn more about Interactive messages, please refer to the [Interactive Messages](/sdk/react-native/interactive-messages) guide. ## Action Action messages are system-generated messages. Messages belonging to the `action` category can further be classified into one of the below types: -1. groupMember - action performed on a group member. -2. message - action performed on a message. +| Type | Description | +|-------------|----------------------------------------| +| groupMember | Action performed on a group member | +| message | Action performed on a message | -Action messages hold another property called `action` which actually determine the action that has been performed For the type `groupMember` the action can be either one of the below: +Action messages hold another property called `action` which determines the action that has been performed. -1. joined - when a group member joins a group -2. left - when a group member leaves a group -3. kicked - when a group member is kicked from the group -4. banned - when a group member is banned from the group -5. unbanned - when a group member is unbanned from the group -6. added - when a user is added to the group -7. scopeChanged - When the scope of a group member is changed. +### groupMember Actions -For the type `message`, the action can be either one of the below: +| Action | Description | +|--------------|------------------------------------------------| +| joined | When a group member joins a group | +| left | When a group member leaves a group | +| kicked | When a group member is kicked from the group | +| banned | When a group member is banned from the group | +| unbanned | When a group member is unbanned from the group | +| added | When a user is added to the group | +| scopeChanged | When the scope of a group member is changed | -1. edited - when a message is edited. -2. deleted - when a message is deleted. +### message Actions -## Call - -Messages with the category `call` are Calling related messages. These can belong to either one of the 2 types +| Action | Description | +|---------|----------------------------| +| edited | When a message is edited | +| deleted | When a message is deleted | -1. audio -2. video - -The call messages have a property called status that helps you figure out the status of the call. The status can be either one of the below values: +## Call -1. initiated - when a is initiated to a user/group -2. ongoing - when the receiver of the call has accepted the call -3. canceled - when the call has been canceled by the initiator of the call -4. rejected - when the call has been rejected by the receiver of the call -5. unanswered - when the call was not answered by the receiver. -6. busy - when the receiver of the call was busy on another call. -7. ended - when the call was successfully completed and ended by either the initiator or receiver. +Messages with the category `call` are calling-related messages. These can belong to either one of the 2 types: + +| Type | Description | +|-------|------------------| +| audio | Audio call | +| video | Video call | + +The call messages have a property called `status` that helps you determine the status of the call: + +| Status | Description | +|-------------|--------------------------------------------------------------------| +| initiated | When a call is initiated to a user/group | +| ongoing | When the receiver of the call has accepted the call | +| canceled | When the call has been canceled by the initiator of the call | +| rejected | When the call has been rejected by the receiver of the call | +| unanswered | When the call was not answered by the receiver | +| busy | When the receiver of the call was busy on another call | +| ended | When the call was successfully completed and ended by either party | + +## Next Steps + + + + Start sending text, media, and custom messages + + + Build forms, cards, and custom interactive messages + + + Listen for and handle incoming messages in real-time + + + Review the fundamental building blocks of CometChat + + diff --git a/sdk/react-native/messaging-overview.mdx b/sdk/react-native/messaging-overview.mdx index 517fb6db6..d6e3f28d5 100644 --- a/sdk/react-native/messaging-overview.mdx +++ b/sdk/react-native/messaging-overview.mdx @@ -1,12 +1,49 @@ --- title: "Messaging" sidebarTitle: "Overview" +description: "Overview of CometChat messaging capabilities — send, receive, and fetch message history for text, media, custom, and interactive messages." --- + +**Quick Reference** - Core messaging methods: +```javascript +// Send a text message +const textMessage = new CometChat.TextMessage("UID", "Hello!", CometChat.RECEIVER_TYPE.USER); +await CometChat.sendMessage(textMessage); + +// Listen for incoming messages +CometChat.addMessageListener("listener-id", new CometChat.MessageListener({ + onTextMessageReceived: (msg) => console.log("Text:", msg), + onMediaMessageReceived: (msg) => console.log("Media:", msg), + onCustomMessageReceived: (msg) => console.log("Custom:", msg), +})); +``` + + + +Available via: [SDK](/sdk/react-native/messaging-overview) | [REST API](/rest-api/messages) | [UI Kits](/ui-kit/react-native/core-features#instant-messaging) + Messaging is one of the core features of CometChat. We've thoughtfully created methods to help you send, receive and fetch message history. At the minimum, you must add code for [sending messages](/sdk/react-native/send-message) and [receiving messages](/sdk/react-native/receive-messages). Once you've implemented that, you can proceed to more advanced features like [typing indicators](/sdk/react-native/typing-indicators) and [delivery & read receipts](/sdk/react-native/delivery-read-receipts). + +## Next Steps + + + + Send text, media, and custom messages to users and groups + + + Listen for real-time messages and fetch missed messages + + + Show real-time typing status in conversations + + + Track when messages are delivered and read + + diff --git a/sdk/react-native/overview.mdx b/sdk/react-native/overview.mdx index da1eadb45..66a78f663 100644 --- a/sdk/react-native/overview.mdx +++ b/sdk/react-native/overview.mdx @@ -1,376 +1,430 @@ --- title: "Overview" +description: "Get started with CometChat React Native SDK - initialize, authenticate users, and integrate chat functionality into your React Native application." --- + +**Quick Reference** - Copy-paste ready initialization and login: +```javascript +useEffect(() => { + const initCometChat = async () => { + const appSetting = new CometChat.AppSettingsBuilder() + .subscribePresenceForAllUsers() + .setRegion("REGION") + .autoEstablishSocketConnection(true) + .build(); + await CometChat.init("APP_ID", appSetting); + + // Login user (check if already logged in first) + const loggedInUser = await CometChat.getLoggedinUser(); + if (!loggedInUser) { + await CometChat.login("USER_UID", "AUTH_KEY"); + } + }; + initCometChat(); +}, []); +``` + This guide demonstrates how to add chat to a React Native application using CometChat. Before you begin, we strongly recommend you read the [Key Concepts](/sdk/react-native/key-concepts) guide. #### I want to integrate with my app -1. [Get your application keys](overview#get-your-application-keys) -2. [Add the CometChat dependency](overview#add-the-cometchat-dependency) -3. [Initialize CometChat](overview#initialize-cometchat) -4. [Register and Login your user](overview#register-and-login-your-user) -5. [Integrate our UI Kits](overview#integrate-our-ui-kits) +1. [Get your Application Keys](#get-your-application-keys) +2. [Add the CometChat Dependency](#add-the-cometchat-dependency) +3. [Initialize CometChat](#initialize-cometchat) +4. [Register and Login your user](#register-and-login-your-user) +5. [Integrate our UI Kits](#integrate-our-ui-kits) #### I want to explore a sample app (includes UI) Open the app folder in your favorite code editor and follow the steps mentioned in the `README.md` file. -[React Native Sample App](https://github.com/cometchat-pro/react-native-chat-app) + + Explore a complete React Native chat application with UI components + -### Get your Application Keys +## Get your Application Keys [Signup for CometChat](https://app.cometchat.com) and then: -1. Create a new app -2. Head over to the **API & Auth Keys** section and note the **Auth Key**, **App ID** & **Region** + + + Create a new application in your CometChat dashboard + + + Head over to the **API & Auth Keys** section and note the **Auth Key**, **App ID** & **Region** + + ## Add the CometChat Dependency Install the package as an NPM module: - -```bash -npm install @cometchat/chat-sdk-react-native -``` - - - + + ```bash + npm install @cometchat/chat-sdk-react-native + ``` + + + ```bash + yarn add @cometchat/chat-sdk-react-native + ``` + **To integrate the CometChat React Native SDK, you need to install one more dependency.** -1. Async-Storage: +### Async-Storage - -```bash -npm install @react-native-async-storage/async-storage -``` - - - + + ```bash + npm install @react-native-async-storage/async-storage + ``` + + + ```bash + yarn add @react-native-async-storage/async-storage + ``` + +v2.4+ onwards, Voice & Video Calling functionality has been moved to a separate library. In case you plan to use the calling feature, please install the Calling dependency (`@cometchat/calls-sdk-react-native`). -v2.4+ onwards, Voice & Video Calling functionality has been moved to a separate library. In case you plan to use the calling feature, please install the Calling dependency (@cometchat/calls-sdk-react-native).\ -\ -`npm install @cometchat/calls-sdk-react-native`\ -\ -The calling component requires some configuration. Please follow the steps mentioned [here](/sdk/react-native/overview#calling-component-configuration). +```bash +npm install @cometchat/calls-sdk-react-native +``` +The calling component requires some configuration. Please follow the steps mentioned in the [Calling Component Configuration](#calling-component-configuration) section below. ## Calling Component Configuration For `@cometchat/calls-sdk-react-native`, please make sure you add the following additional dependencies & permissions. - - +### Required Dependencies + ```json { - "@cometchat/chat-sdk-react-native": "^4.0.18", - "@react-native-async-storage/async-storage": "^2.2.0", - "@react-native-community/netinfo": "^11.4.1", - "react-native-background-timer": "^2.4.1", - "react-native-callstats": "^3.73.22", - "react-native-webrtc": "^124.0.6" + "@cometchat/chat-sdk-react-native": "^4.0.18", + "@react-native-async-storage/async-storage": "^2.2.0", + "@react-native-community/netinfo": "^11.4.1", + "react-native-background-timer": "^2.4.1", + "react-native-callstats": "^3.73.22", + "react-native-webrtc": "^124.0.6" } ``` - - - - -#### Permissions: - -**Android:** +### Permissions - -```xml - - - - - -``` - - - + + Add the following permissions to your `AndroidManifest.xml`: + + ```xml + + + + + + ``` + + + Add the following keys to your `Info.plist`: + + ```xml + NSCameraUsageDescription + This is for Camera permission + NSMicrophoneUsageDescription + This is for Mic permission + ``` + -**iOS:** - - - -```xml -NSCameraUsageDescription -This is for Camera permission -NSMicrophoneUsageDescription -This is for Mic permission -``` +### Platform-Specific Configuration - + + + Go to the `./android` folder and open the project level `build.gradle` file. Add all repository URLs in the repositories block under the `allprojects` section. Also in the same file in the `buildscript` section in the `ext` block, make sure you have set **minSdkVersion** to **24**. - - -#### Android: - -Goto ./android folder and open project level build.gradle file and add all repository URLs in the repositories block under the allprojects section. Also in the same file in buildscript section in the ext block make sure you have set **minSdkVersio**n to **24**. - - - -```gradle -allprojects { -repositories { - maven { - url "https://dl.cloudsmith.io/public/cometchat/cometchat-pro-android/maven/" - } -} -} -``` - - - - - -Also in the same file in buildscript section in the ext block make sure you have set minSdkVersion to 24. - - - -```gradle -buildscript { - ext { - buildToolsVersion = "29.0.2" - minSdkVersion = 24 - compileSdkVersion = 29 - targetSdkVersion = 29 - } -} -``` - - - - - -#### iOS: - -Please update the minimum target version in the Podfile. Goto ./ios folder and open the Podfile. In the Podfile update the platform version to `11.0` - - - -``` -platform :ios, '11.0' -``` + **Add Repository URL:** - + ```gradle + allprojects { + repositories { + maven { + url "https://dl.cloudsmith.io/public/cometchat/cometchat-pro-android/maven/" + } + } + } + ``` + + **Set Minimum SDK Version:** + + ```gradle + buildscript { + ext { + buildToolsVersion = "29.0.2" + minSdkVersion = 24 + compileSdkVersion = 29 + targetSdkVersion = 29 + } + } + ``` + + + Please update the minimum target version in the Podfile. Go to the `./ios` folder and open the Podfile. In the Podfile, update the platform version to `11.0`: - + ```ruby + platform :ios, '11.0' + ``` -Open the `ios/App` folder and run `pod install` this will create an `App.xcworkspace` open this and run the app. + Open the `ios/App` folder and run `pod install`. This will create an `App.xcworkspace` file. Open this and run the app. + + ## Initialize CometChat -The `init(`)`method initializes the settings required for CometChat. The`init()\` method takes the below parameters: +The `init()` method initializes the settings required for CometChat. The `init()` method takes the below parameters: -1. appID - You CometChat App ID -2. appSettings - An object of the AppSettings class can be created using the AppSettingsBuilder class. The region field is mandatory and can be set using the `setRegion()` method. +| Parameter | Description | +|-----------|-------------| +| `appID` | Your CometChat App ID | +| `appSettings` | An object of the `AppSettings` class created using the `AppSettingsBuilder` class | -The `AppSettings` class allows you to configure two settings: +The `AppSettings` class allows you to configure the following settings: -* **Region**: The region where your app was created. -* [Presence Subscription](/sdk/react-native/user-presence): Represents the subscription type for user presence (real-time online/offline status) -* **autoEstablishSocketConnection(boolean value)**: This property takes a boolean value which when set to true informs the SDK to manage the web-socket connection internally. If set to false, it informs the SDK that the web-socket connection will be managed manually. The default value for this parameter is true. For more information on this, please check the [Managing connections manually](/sdk/react-native/managing-web-sockets-connections-manually) section. The default value for this property is **true.** -* **overrideAdminHost(adminHost: string)**: This method takes the admin URL as input and uses this admin URL instead of the default admin URL. This can be used in case of dedicated deployment of CometChat. -* **overrideClientHost(clientHost: string)**: This method takes the client URL as input and uses this client URL instead of the default client URL. This can be used in case of dedicated deployment of CometChat. +| Setting | Description | +|---------|-------------| +| **Region** | The region where your app was created (mandatory) | +| **Presence Subscription** | Represents the subscription type for user presence (real-time online/offline status). See [Presence Subscription](/sdk/react-native/user-presence) | +| **autoEstablishSocketConnection(boolean)** | When set to `true`, the SDK manages the web-socket connection internally. When set to `false`, you manage the connection manually. Default: `true`. See [Managing connections manually](/sdk/react-native/managing-web-sockets-connections-manually) | +| **overrideAdminHost(adminHost: string)** | Uses a custom admin URL instead of the default. Used for dedicated CometChat deployments | +| **overrideClientHost(clientHost: string)** | Uses a custom client URL instead of the default. Used for dedicated CometChat deployments | -You need to call `init()` before calling any other method from CometChat. We suggest you call the `init()` method on app startup, preferably in the `index.js` file. +You need to call `init()` before calling any other method from CometChat. We suggest you call the `init()` method on app startup, preferably in the `App.tsx` file. - -```javascript -let appID = "APP_ID"; -let region = "REGION"; -let appSetting = new CometChat.AppSettingsBuilder() - .subscribePresenceForAllUsers() - .setRegion(region) - .autoEstablishSocketConnection(true) - .build(); -CometChat.init(appID, appSetting).then( - () => { - console.log("Initialization completed successfully"); - }, - (error) => { - console.log("Initialization failed with error:", error); - } -); -``` - - - - -```javascript -let appID: string = "APP_ID", - region: string = "APP_REGION", - appSetting: CometChat.AppSettings = new CometChat.AppSettingsBuilder() - .subscribePresenceForAllUsers() - .setRegion(region) - .autoEstablishSocketConnection(true) - .build(); -CometChat.init(appID, appSetting).then( - (initialized: boolean) => { - console.log("Initialization completed successfully", initialized); - }, - (error: CometChat.CometChatException) => { - console.log("Initialization failed with error:", error); - } -); -``` - - - + + ```javascript + let appID = "APP_ID"; + let region = "REGION"; + + // Build app settings with presence subscription and auto socket connection + let appSetting = new CometChat.AppSettingsBuilder() + .subscribePresenceForAllUsers() + .setRegion(region) + .autoEstablishSocketConnection(true) + .build(); + + // Initialize CometChat + CometChat.init(appID, appSetting).then( + () => { + console.log("Initialization completed successfully"); + }, + (error) => { + console.log("Initialization failed with error:", error); + } + ); + ``` + + + ```typescript + let appID: string = "APP_ID", + region: string = "APP_REGION", + + // Build app settings with presence subscription and auto socket connection + let appSetting: CometChat.AppSettings = new CometChat.AppSettingsBuilder() + .subscribePresenceForAllUsers() + .setRegion(region) + .autoEstablishSocketConnection(true) + .build(); + + // Initialize CometChat + CometChat.init(appID, appSetting).then( + (initialized: boolean) => { + console.log("Initialization completed successfully", initialized); + }, + (error: CometChat.CometChatException) => { + console.log("Initialization failed with error:", error); + } + ); + ``` + + Make sure you replace the `APP_ID` with your CometChat **App ID** and `REGION` with your **App Region** in the above code. + ## Register and Login your user Once initialization is successful, you will need to create a user. To create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `Auth Key` as input parameters and returns the created `User` object if the request is successful. - -```javascript -let authKey = "AUTH_KEY"; -let uid = "user1"; -let name = "Kevin"; - -let user = new CometChat.User(uid); - -user.setName(name); - -CometChat.createUser(user, authKey).then( - (user) => { - console.log("user created", user); - }, - (error) => { - console.log("error", error); - } -); -``` - - - - -```javascript -let authKey: string = "AUTH_KEY", - UID: string = "user1", - name: string = "Kevin"; - -var user = new CometChat.User(UID); -user.setName(name); - -CometChat.createUser(user, authKey).then( - (user: CometChat.User) => { - console.log("user created", user); - }, - (error: CometChat.CometChatException) => { - console.log("error", error); - } -); -``` - - - + + ```javascript + let authKey = "AUTH_KEY"; + let uid = "user1"; + let name = "Kevin"; + + // Create a new user object + let user = new CometChat.User(uid); + user.setName(name); + + // Register the user with CometChat + CometChat.createUser(user, authKey).then( + (user) => { + console.log("user created", user); + }, + (error) => { + console.log("error", error); + } + ); + ``` + + + ```typescript + let authKey: string = "AUTH_KEY", + UID: string = "user1", + name: string = "Kevin"; + + // Create a new user object + var user = new CometChat.User(UID); + user.setName(name); + + // Register the user with CometChat + CometChat.createUser(user, authKey).then( + (user: CometChat.User) => { + console.log("user created", user); + }, + (error: CometChat.CometChatException) => { + console.log("error", error); + } + ); + ``` + + Make sure that `UID` and `name` are specified as these are mandatory fields to create a user. + Once you have created the user successfully, you will need to log the user into CometChat using the `login()` method. We recommend you call the CometChat `login()` method once your user logs into your app. The `login()` method needs to be called only once. - - -This straightforward authentication method is ideal for proof-of-concept (POC) development or during the early stages of application development. For production environments, however, we strongly recommend using an [Auth Token](/sdk/react-native/authentication-overview#login-using-auth-token) instead of an Auth Key to ensure enhanced security. - - + +**Security Warning:** This straightforward authentication method using Auth Key is ideal for proof-of-concept (POC) development or during the early stages of application development. For production environments, however, we strongly recommend using an [Auth Token](/sdk/react-native/authentication-overview#login-using-auth-token) instead of an Auth Key to ensure enhanced security. + - -```javascript -let UID = "cometchat-uid-1"; -let authKey = "AUTH_KEY"; - -CometChat.getLoggedinUser().then( - (user) => { - if (!user) { - CometChat.login(UID, authKey).then( - (user) => { - console.log("Login Successful:", { user }); - }, - (error) => { - console.log("Login failed with exception:", { error }); + + ```javascript + let UID = "cometchat-uid-1"; + let authKey = "AUTH_KEY"; + + // Check if user is already logged in + CometChat.getLoggedinUser().then( + (user) => { + if (!user) { + // Login the user if not already logged in + CometChat.login(UID, authKey).then( + (user) => { + console.log("Login Successful:", { user }); + }, + (error) => { + console.log("Login failed with exception:", { error }); + } + ); } - ); - } - }, - (error) => { - console.log("Some Error Occured", { error }); - } -); -``` - - - - -```javascript -var UID: string = "cometchat-uid-1", - authKey: string = "AUTH_KEY"; - -CometChat.getLoggedinUser().then( - (user: CometChat.User) => { - if (!user) { - CometChat.login(UID, authKey).then( - (user: CometChat.User) => { - console.log("Login Successful:", { user }); - }, - (error: CometChat.CometChatException) => { - console.log("Login failed with exception:", { error }); + }, + (error) => { + console.log("Some Error Occured", { error }); + } + ); + ``` + + + ```typescript + var UID: string = "cometchat-uid-1", + authKey: string = "AUTH_KEY"; + + // Check if user is already logged in + CometChat.getLoggedinUser().then( + (user: CometChat.User) => { + if (!user) { + // Login the user if not already logged in + CometChat.login(UID, authKey).then( + (user: CometChat.User) => { + console.log("Login Successful:", { user }); + }, + (error: CometChat.CometChatException) => { + console.log("Login failed with exception:", { error }); + } + ); } - ); - } - }, - (error: CometChat.CometChatException) => { - console.log("Some Error Occured", { error }); - } -); -``` - - - + }, + (error: CometChat.CometChatException) => { + console.log("Some Error Occured", { error }); + } + ); + ``` + + Make sure you replace the `AUTH_KEY` with your CometChat **Auth Key** in the above code. + - - -We have set-up 5 users for testing having UIDs: `cometchat-uid-1`, `cometchat-uid-2`, `cometchat-uid-3`, `cometchat-uid-4` and `cometchat-uid-5`. - - + +**Test Users Available:** We have set up 5 users for testing with UIDs: `cometchat-uid-1`, `cometchat-uid-2`, `cometchat-uid-3`, `cometchat-uid-4` and `cometchat-uid-5`. + The `login()` method returns the `User` object containing all the information of the logged-in user. - -UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and other special characters are not allowed. - +**UID Format:** UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and other special characters are not allowed. ## Integrate our UI Kits -Please refer to the [React Native UI Kit](/ui-kit/react-native/overview)section to integrate React Native UI Kit inside your app. +Please refer to the [React Native UI Kit](/ui-kit/react-native/overview) section to integrate React Native UI Kit inside your app. + + + + - Always call `init()` before any other CometChat method + - Call `init()` on app startup (preferably in `App.tsx`) + - Use `getLoggedinUser()` to check login state before calling `login()` + - Store user credentials securely and never expose Auth Keys in client-side code for production + - Use Auth Token instead of Auth Key for production environments + + + - **Initialization fails:** Verify your App ID and Region are correct + - **Login fails:** Ensure the user exists or create them first using `createUser()` + - **Network errors:** Check internet connectivity and firewall settings + - **Calling not working:** Verify all calling dependencies are installed and permissions are granted + - **iOS build fails:** Run `pod install` in the `ios` directory after adding dependencies + + + +## Next Steps + + + + Understand the fundamental concepts of CometChat + + + Learn about secure authentication methods including Auth Tokens + + + Start sending text, media, and custom messages + + + Add pre-built UI components to your app + + diff --git a/sdk/react-native/presenter-mode.mdx b/sdk/react-native/presenter-mode.mdx index 802886268..fa865ccd9 100644 --- a/sdk/react-native/presenter-mode.mdx +++ b/sdk/react-native/presenter-mode.mdx @@ -1,8 +1,27 @@ --- title: "Presenter Mode" +description: "Implement presenter mode in your React Native app — allow up to 5 presenters to share video, audio, and screen with up to 100 viewers using CometChat Calls SDK." --- + +**Quick Reference** - Start a presentation session: +```javascript +// Configure presenter settings +let presenterSettings = new CometChatCalls.PresenterSettingsBuilder() + .setIsPresenter(true) // false for viewer + .enableDefaultLayout(true) + .setCallEventListener(callListener) + .build(); + +// Render presenter component +// +``` + + + +**Available via:** SDK | UI Kits + ## Overview @@ -25,9 +44,9 @@ Using this feature developers can create experiences such as: ### About this guide -This guide demonstrates how to start a presentation into an React Native application. Before you begin, we strongly recommend you read the calling setup guide. +This guide demonstrates how to start a presentation into an React Native application. Before you begin, we strongly recommend you read the [calling setup guide](/sdk/react-native/calling-setup). -Before starting a call session you have to generate a call token. You need to call this method for the call token. +Before starting a call session you have to [generate a call token](/sdk/react-native/direct-call#generate-call-token). ### Start Presentation Session @@ -59,7 +78,7 @@ render(){ -## **Listeners** +## Listeners Listeners can be added in two ways the first one is to use `.setCallEventListener(listeners : OngoingCallListener)` method in `CallSettingsBuilder` or `PresenterSettingsBuilder` class. The second way is to use `CometChatCalls.addCallEventListener(name: string, callListener: OngoingCallListener)` by this you can add multiple listeners and remove the specific listener by their name `CometChatCalls.removeCallEventListener(name: string)` @@ -101,6 +120,10 @@ useEffect(() => { + +Always remove call event listeners when the component unmounts using `CometChatCalls.removeCallEventListener(listenerId)`. Failing to remove listeners can cause memory leaks and duplicate event handling. + + The `CometChatCallsEventsListener` listener provides you with the below callback methods: | Callback Method | Description | @@ -146,3 +169,56 @@ The options available for customization of calls are: In case you wish to achieve a completely customised UI for the Calling experience, you can do so by embedding default android buttons to the screen as per your requirement and then use the below methods to achieve different functionalities for the embedded buttons. For the use case where you wish to align your own custom buttons and not use the default layout provided by CometChat you can embed the buttons in your layout and use the below methods to perform the corresponding operations: + +## Best Practices + + + + Always explicitly set `setIsPresenter(true)` for presenters and `setIsPresenter(false)` for viewers. Viewers cannot send audio, video, or screen streams — this is enforced by the SDK, not just the UI. + + + Presenter Mode supports a maximum of 5 concurrent presenters. If your app allows dynamic role switching, enforce this limit in your logic before calling `setIsPresenter(true)` for additional users. + + + Always remove call event listeners in your component's cleanup function (e.g., the return function of `useEffect`). Orphaned listeners can cause memory leaks and duplicate event handling. + + + Call tokens are session-specific and time-limited. Generate them right before starting the presentation session rather than caching them for extended periods. + + + +## Troubleshooting + + + + Verify that `setIsPresenter(false)` is set for viewer participants. If a viewer is incorrectly set as a presenter, they will have access to media controls. + + + Ensure the `CometChatCalls.PresenterComponent` is wrapped in a `View` with `flex: 1` or explicit dimensions. Also confirm that both `presenterSettings` and `callToken` props are provided and not `null`. + + + Check that the listener is registered before the presentation session starts. If using `addCallEventListener`, ensure the `listenerId` is unique and hasn't been overwritten. Also verify the Calls SDK has been initialized via `CometChatCalls.init()`. + + + Presenter Mode supports up to 100 total participants (presenters + viewers). If users can't join, check the current participant count in your session. + + + +--- + +## Next Steps + + + + Start and manage standard call sessions with full configuration options + + + Record presentation sessions for playback and compliance + + + Customize the main video container and participant tiles + + + Install dependencies, configure permissions, and initialize the Calls SDK + + \ No newline at end of file diff --git a/sdk/react-native/rate-limits.mdx b/sdk/react-native/rate-limits.mdx index 17581b144..7c7f6ecad 100644 --- a/sdk/react-native/rate-limits.mdx +++ b/sdk/react-native/rate-limits.mdx @@ -1,34 +1,70 @@ --- title: "Rate Limits" +description: "Understand CometChat REST API rate limits, how to monitor usage via response headers, and how to handle rate limit errors." --- + +**Quick Reference** - Key rate limits at a glance: +| Operation Type | Limit | +|----------------|--------------------------| +| Core | 10,000 requests/minute | +| Standard | 20,000 requests/minute | + -### CometChat REST API Rate Limits +## CometChat REST API Rate Limits - -The rate limits below are for general applications. Rate limits can be adjusted on a per need basis, depending on your use-case and plan. The rate limits are cumulative. For example: If the rate limit for core operations is 100 requests per minute, then you can either login a user, add user to a group, remove a user from a group, etc for total 100 requests per minute. - +The rate limits below are for general applications. Rate limits can be adjusted on a per-need basis, depending on your use case and plan. The rate limits are cumulative. For example: if the rate limit for core operations is 10,000 requests per minute, then you can login a user, add a user to a group, remove a user from a group, etc. for a combined total of 10,000 requests per minute. -1. **Core Operations:** Core operations are rate limited to `10,000` requests per minute. Core operations include user login, create/delete user, create/join group cumulatively. -2. **Standard Operations:** Standard operations are rate limited to `20,000` requests per minute. Standard operations include all other operations cumulatively. - -## What happens when rate limit is reached ? - -The request isn't processed and a response is sent containing a 429 response code. Along with the response code there will be couple of headers sent which specifies the time in seconds that you must wait before you can try request again. - -`Retry-After: 15` - -`X-Rate-Limit-Reset: 1625143246` - -## Is there any endpoint that returns rate limit of all resources ? - -No, we don't provide a rate-limit endpoint. - -However, we do provide the following response headers that you can use to confirm the app's current rate limit and monitor the number of requests remaining in the current minute: - -`X-Rate-Limit: 700` - -`X-Rate-Limit-Remaining: 699` +| Operation Type | Rate Limit | Examples | +|-------------------------|-----------------------------|-----------------------------------------------------------------| +| **Core Operations** | `10,000` requests per minute | User login, create/delete user, create/join group (cumulative) | +| **Standard Operations** | `20,000` requests per minute | All other operations (cumulative) | + +## What Happens When the Rate Limit is Reached? + +The request isn't processed and a response is sent containing a `429` response code. Along with the response code, there will be a couple of headers sent which specify the time in seconds that you must wait before you can try the request again. + +``` +Retry-After: 15 +X-Rate-Limit-Reset: 1625143246 +``` + +## Is There an Endpoint That Returns Rate Limits? + +No, CometChat does not provide a dedicated rate-limit endpoint. + +However, the following response headers are included with every API response, which you can use to confirm the app's current rate limit and monitor the number of requests remaining in the current minute: + +``` +X-Rate-Limit: 700 +X-Rate-Limit-Remaining: 699 +``` + + + + - Monitor `X-Rate-Limit-Remaining` headers to proactively manage your request volume + - Implement exponential backoff when you receive a `429` response + - Use the `Retry-After` header value to determine when to retry + - Batch operations where possible to reduce the total number of API calls + - Cache responses locally to avoid redundant requests + + + - **Receiving 429 errors frequently:** Review your request patterns and consider batching or caching + - **Rate limit seems too low:** Contact CometChat support to discuss adjustments based on your plan and use case + - **Inconsistent rate limit headers:** Ensure you're reading headers from the correct response object in your HTTP client + + + +## Next Steps + + + + Review the fundamental building blocks of CometChat + + + Initialize CometChat and authenticate users in your app + + diff --git a/sdk/react-native/reactions.mdx b/sdk/react-native/reactions.mdx index 706fbcecc..896e5f61a 100644 --- a/sdk/react-native/reactions.mdx +++ b/sdk/react-native/reactions.mdx @@ -1,8 +1,23 @@ --- title: "Reactions" +description: "Add, remove, and manage message reactions in real-time using the CometChat React Native SDK." --- + +**Quick Reference** - Add and remove reactions: +```javascript +// Add a reaction +await CometChat.addReaction("MESSAGE_ID", "😊"); + +// Remove a reaction +await CometChat.removeReaction("MESSAGE_ID", "😊"); +``` + + + +Available via: [SDK](/sdk/react-native/reactions) | [REST API](/rest-api/messages/add-reaction) | [UI Kits](/ui-kit/react-native/core-features#reactions) + Enhance user engagement in your chat application with message reactions. Users can express their emotions using reactions to messages. This feature allows users to add or remove reactions, and to fetch all reactions on a message. You can also listen to reaction events in real-time. Let's see how to work with reactions in CometChat's SDK. @@ -197,6 +212,7 @@ reactionRequest.fetchPrevious().then( + ## Real-time Reaction Events Keep the chat interactive with real-time updates for reactions. Register a listener for these events and make your UI responsive. @@ -261,6 +277,10 @@ CometChat.removeMessageReactionListener(listenerID); + +Always remove your reaction listeners when they are no longer needed — for example, when a component unmounts or a screen is navigated away from. Failing to do so can cause memory leaks and unexpected behavior from stale listeners. Use `CometChat.removeMessageListener("LISTENER_ID")` in your cleanup logic (e.g., `useEffect` return function or `componentWillUnmount`). + + ## Get Reactions List To retrieve the list of reactions reacted on particular message, you can use the `message.getReactions()` method. This method will return an array containing the reactions, or an empty array if no one reacted on the message. @@ -359,3 +379,63 @@ action + + +## Best Practices + + + + Always use unique, descriptive listener IDs (e.g., `"ChatScreen_ReactionListener"`) to avoid conflicts with other listeners in your app. This makes it easier to manage and remove specific listeners when needed. + + + Remove reaction listeners in your component's cleanup phase (`useEffect` return function or `componentWillUnmount`). Orphaned listeners can lead to memory leaks and unexpected UI updates on unmounted components. + + + When you receive a real-time reaction event, always call `updateMessageWithReactionInfo()` to keep your local message state in sync. This avoids stale reaction counts and ensures the UI reflects the latest state. + + + Wrap `addReaction` and `removeReaction` calls in proper error handling. Network issues or invalid message IDs can cause failures — show appropriate feedback to the user rather than silently failing. + + + When fetching reactions for messages with many reactions, use `fetchNext()` with a reasonable `setLimit()` value. Avoid fetching all reactions at once to keep performance smooth, especially on lower-end devices. + + + +## Troubleshooting + + + + Verify that the `messageId` is valid and the user is logged in. Check the error callback for details — common causes include invalid message IDs, network connectivity issues, or the user not being a participant in the conversation. + + + Ensure you have registered the message listener with `CometChat.addMessageListener()` before the reaction event occurs. Also confirm that the listener ID is unique and hasn't been accidentally removed or overwritten by another listener registration. + + + After receiving a real-time reaction event, you must call `CometChat.CometChatHelper.updateMessageWithReactionInfo()` to update the message object. Simply receiving the event does not automatically update the `BaseMessage` instance — you need to explicitly apply the update and re-render. + + + Make sure you are calling `getReactedByMe()` on the `ReactionCount` objects returned by `message.getReactions()`, not on the raw reaction event data. Also verify that the logged-in user is the same user who added the reaction. + + + Confirm that the `messageId` passed to `ReactionRequestBuilder.setMessageId()` is correct and that the message actually has reactions. If using `setReaction()` to filter by a specific emoji, ensure the emoji string matches exactly (including any variation selectors). + + + +## Next Steps + +Explore related features to build a richer messaging experience: + + + + Learn how to send text, media, and custom messages to users and groups. + + + Set up real-time message listeners and fetch message history. + + + Tag users in messages to notify and engage them directly. + + + Send rich, interactive messages with forms, cards, and custom elements. + + \ No newline at end of file diff --git a/sdk/react-native/receive-messages.mdx b/sdk/react-native/receive-messages.mdx index b6aff913f..5d8250925 100644 --- a/sdk/react-native/receive-messages.mdx +++ b/sdk/react-native/receive-messages.mdx @@ -1,98 +1,106 @@ --- title: "Receive A Message" +description: "Receive real-time messages, fetch missed and unread messages, retrieve message history, and get unread message counts using the CometChat React Native SDK." --- + +**Quick Reference** - Listen for incoming messages: +```javascript +CometChat.addMessageListener("listener-id", new CometChat.MessageListener({ + onTextMessageReceived: (msg) => console.log("Text:", msg), + onMediaMessageReceived: (msg) => console.log("Media:", msg), + onCustomMessageReceived: (msg) => console.log("Custom:", msg), +})); + +// Don't forget to remove the listener when done +CometChat.removeMessageListener("listener-id"); +``` + + + +Available via: [SDK](/sdk/react-native/receive-messages) | [REST API](/rest-api/messages/list-messages) | [UI Kits](/ui-kit/react-native/core-features#instant-messaging) + Receiving messages with CometChat has two parts: -1. Adding a listener to receive [real-time messages](/sdk/react-native/receive-messages#real-time-messages) when your app is running -2. Calling a method to retrieve [missed messages](/sdk/react-native/receive-messages#missed-messages) when your app was not running +1. Adding a listener to receive [real-time messages](#real-time-messages) when your app is running +2. Calling a method to retrieve [missed messages](#missed-messages) when your app was not running ## Real-Time Messages *In other words, as a recipient, how do I receive messages when my app is running?* -To receive real-time incoming messages, you need to register the MessageListener wherever you wish to receive the incoming messages. You can use the addMessageListener() method to do so. +To receive real-time incoming messages, you need to register the MessageListener wherever you wish to receive the incoming messages. You can use the `addMessageListener()` method to do so. - -```javascript -let listenerID = "UNIQUE_LISTENER_ID"; - -CometChat.addMessageListener( - listenerID, - new CometChat.MessageListener({ - onTextMessageReceived: (textMessage) => { - console.log("Text message received successfully", textMessage); - }, - onMediaMessageReceived: (mediaMessage) => { - console.log("Media message received successfully", mediaMessage); - }, - onCustomMessageReceived: (customMessage) => { - console.log("Custom message received successfully", customMessage); - }, - }) -); -``` - - - - -```typescript -let listenerID: string = "UNIQUE_LISTENER_ID"; - -CometChat.addMessageListener( - listenerID, - new CometChat.MessageListener({ - onTextMessageReceived: (textMessage: CometChat.TextMessage) => { - console.log("Text message received successfully", textMessage); - }, - onMediaMessageReceived: (mediaMessage: CometChat.MediaMessage) => { - console.log("Media message received successfully", mediaMessage); - }, - onCustomMessageReceived: (customMessage: CometChat.CustomMessage) => { - console.log("Custom message received successfully", customMessage); - }, - }) -); -``` - - - + + ```javascript + let listenerID = "UNIQUE_LISTENER_ID"; + + CometChat.addMessageListener( + listenerID, + new CometChat.MessageListener({ + onTextMessageReceived: (textMessage) => { + console.log("Text message received successfully", textMessage); + }, + onMediaMessageReceived: (mediaMessage) => { + console.log("Media message received successfully", mediaMessage); + }, + onCustomMessageReceived: (customMessage) => { + console.log("Custom message received successfully", customMessage); + }, + }) + ); + ``` + + + ```typescript + let listenerID: string = "UNIQUE_LISTENER_ID"; + + CometChat.addMessageListener( + listenerID, + new CometChat.MessageListener({ + onTextMessageReceived: (textMessage: CometChat.TextMessage) => { + console.log("Text message received successfully", textMessage); + }, + onMediaMessageReceived: (mediaMessage: CometChat.MediaMessage) => { + console.log("Media message received successfully", mediaMessage); + }, + onCustomMessageReceived: (customMessage: CometChat.CustomMessage) => { + console.log("Custom message received successfully", customMessage); + }, + }) + ); + ``` + -| Parameter | Description | | -| -------------- | --------------------------------------------- | - | -| **listenerId** | An ID that uniquely identifies that listener. | | +| Parameter | Description | +| -------------- | --------------------------------------------- | +| **listenerId** | An ID that uniquely identifies that listener. | -We recommend you remove the listener once you don't want to receive a message for particular listener. You can remove the listener in componentWillUnmount() method. + +**Listener Cleanup:** Always remove the listener once you don't need to receive messages for a particular listener. Remove the listener in `componentWillUnmount()` or the cleanup function of a `useEffect` to prevent memory leaks. + - -```javascript -var listenerID = "UNIQUE_LISTENER_ID"; - -CometChat.removeMessageListener(listenerID); -``` - - - - -```typescript -let listenerID: string = "UNIQUE_LISTENER_ID"; - -CometChat.removeMessageListener(listenerID); -``` - - - + + ```javascript + var listenerID = "UNIQUE_LISTENER_ID"; + CometChat.removeMessageListener(listenerID); + ``` + + + ```typescript + let listenerID: string = "UNIQUE_LISTENER_ID"; + CometChat.removeMessageListener(listenerID); + ``` + - As a sender, you will not receive your own message in a real-time message event. However, if a user is logged-in using multiple devices, they will receive an event for their own message in other devices. - ## Missed Messages @@ -101,229 +109,210 @@ As a sender, you will not receive your own message in a real-time message event. For most use cases, you will need to add functionality to load missed messages. If you're building an on-demand or live streaming app, you may choose to skip this and fetch message history instead. -Using the same `MessagesRequest` class and the filters provided by the `MessagesRequestBuilder` class, you can fetch the message that we sent to the logged-in user but were not delivered to him as he was offline. For this, you will require the Id of the last message received. You can either maintain it at your end or use the `getLastDeliveredMessageId()` method provided by the CometChat class. This Id needs to be passed to the `setMessageId()` method of the builder class. +Using the same `MessagesRequest` class and the filters provided by the `MessagesRequestBuilder` class, you can fetch the messages that were sent to the logged-in user but were not delivered to them as they were offline. For this, you will require the ID of the last message received. You can either maintain it at your end or use the `getLastDeliveredMessageId()` method provided by the CometChat class. This ID needs to be passed to the `setMessageId()` method of the builder class. -Now using the `fetchNext()` method, you can fetch all the messages that were sent to the user when he/she was offline. +Now using the `fetchNext()` method, you can fetch all the messages that were sent to the user when they were offline. -Calling the `fetchNext()` method on the same object repeatedly allows you to fetch all the offline messages for the logged in user. +Calling the `fetchNext()` method on the same object repeatedly allows you to fetch all the offline messages for the logged-in user. ### For a Particular One-on-one Conversation - -```javascript -let UID = "UID"; -let limit = 30; -let latestId = await CometChat.getLastDeliveredMessageId(); - -var messagesRequest = new CometChat.MessagesRequestBuilder() - .setUID(UID) - .setMessageId(latestId) - .setLimit(limit) - .build(); - -messagesRequest.fetchNext().then( - (messages) => { - console.log("Message list fetched:", messages); - }, - (error) => { - console.log("Message fetching failed with error:", error); - } -); -``` + + ```javascript + let UID = "UID"; + let limit = 30; + let latestId = await CometChat.getLastDeliveredMessageId(); - - - -```typescript -let UID: string = "UID", - limit: number = 30, - latestId: number = await CometChat.getLastDeliveredMessageId(), - messagesRequest: CometChat.MessagesRequest = - new CometChat.MessagesRequestBuilder() + var messagesRequest = new CometChat.MessagesRequestBuilder() .setUID(UID) .setMessageId(latestId) .setLimit(limit) .build(); -messagesRequest.fetchNext().then( - (messages: CometChat.BaseMessage[]) => { - console.log("Message list fetched:", messages); - }, - (error: CometChat.CometChatException) => { - console.log("Message fetching failed with error:", error); - } -); -``` - - - + messagesRequest.fetchNext().then( + (messages) => { + console.log("Message list fetched:", messages); + }, + (error) => { + console.log("Message fetching failed with error:", error); + } + ); + ``` + + + ```typescript + let UID: string = "UID", + limit: number = 30, + latestId: number = await CometChat.getLastDeliveredMessageId(), + messagesRequest: CometChat.MessagesRequest = + new CometChat.MessagesRequestBuilder() + .setUID(UID) + .setMessageId(latestId) + .setLimit(limit) + .build(); + + messagesRequest.fetchNext().then( + (messages: CometChat.BaseMessage[]) => { + console.log("Message list fetched:", messages); + }, + (error: CometChat.CometChatException) => { + console.log("Message fetching failed with error:", error); + } + ); + ``` + ### For a Particular Group - -```javascript -let GUID = "GUID"; -let limit = 30; -let latestId = await CometChat.getLastDeliveredMessageId(); - -var messagesRequest = new CometChat.MessagesRequestBuilder() - .setGUID(GUID) - .setMessageId(latestId) - .setLimit(limit) - .build(); - -messagesRequest.fetchNext().then( - (messages) => { - console.log("Message list fetched:", messages); - }, - (error) => { - console.log("Message fetching failed with error:", error); - } -); -``` + + ```javascript + let GUID = "GUID"; + let limit = 30; + let latestId = await CometChat.getLastDeliveredMessageId(); - - - -```typescript -let GUID: string = "GUID", - limit: number = 30, - latestId: number = await CometChat.getLastDeliveredMessageId(), - messagesRequest: CometChat.MessagesRequest = - new CometChat.MessagesRequestBuilder() + var messagesRequest = new CometChat.MessagesRequestBuilder() .setGUID(GUID) .setMessageId(latestId) .setLimit(limit) .build(); -messagesRequest.fetchNext().then( - (messages: CometChat.BaseMessage[]) => { - console.log("Message list fetched:", messages); - }, - (error: CometChat.CometChatException) => { - console.log("Message fetching failed with error:", error); - } -); -``` - - - + messagesRequest.fetchNext().then( + (messages) => { + console.log("Message list fetched:", messages); + }, + (error) => { + console.log("Message fetching failed with error:", error); + } + ); + ``` + + + ```typescript + let GUID: string = "GUID", + limit: number = 30, + latestId: number = await CometChat.getLastDeliveredMessageId(), + messagesRequest: CometChat.MessagesRequest = + new CometChat.MessagesRequestBuilder() + .setGUID(GUID) + .setMessageId(latestId) + .setLimit(limit) + .build(); + + messagesRequest.fetchNext().then( + (messages: CometChat.BaseMessage[]) => { + console.log("Message list fetched:", messages); + }, + (error: CometChat.CometChatException) => { + console.log("Message fetching failed with error:", error); + } + ); + ``` + ## Unread Messages *In other words, as a logged-in user, how do I fetch the messages I've not read?* -Using the `MessagesRequest` class described above, you can fetch the unread messages for the logged in user. In order to achieve this, you need to set the `unread` variable in the builder to true using the `setUnread()` method so that only the unread messages are fetched. +Using the `MessagesRequest` class described above, you can fetch the unread messages for the logged-in user. In order to achieve this, you need to set the `unread` variable in the builder to true using the `setUnread()` method so that only the unread messages are fetched. ### For a Particular One-on-one Conversation - -```javascript -let UID = "UID"; -let limit = 30; -let messagesRequest = new CometChat.MessagesRequestBuilder() - .setUID(UID) - .setUnread(true) - .setLimit(limit) - .build(); - -messagesRequest.fetchPrevious().then( - (messages) => { - console.log("Message list fetched:", messages); - }, - (error) => { - console.log("Message fetching failed with error:", error); - } -); -``` - - - - -```typescript -let UID: string = "UID", - limit: number = 30, - messagesRequest: CometChat.MessagesRequest = - new CometChat.MessagesRequestBuilder() + + ```javascript + let UID = "UID"; + let limit = 30; + let messagesRequest = new CometChat.MessagesRequestBuilder() .setUID(UID) .setUnread(true) .setLimit(limit) .build(); -messagesRequest.fetchPrevious().then( - (messages: CometChat.BaseMessage[]) => { - console.log("Message list fetched:", messages); - }, - (error: CometChat.CometChatException) => { - console.log("Message fetching failed with error:", error); - } -); -``` - - - + messagesRequest.fetchPrevious().then( + (messages) => { + console.log("Message list fetched:", messages); + }, + (error) => { + console.log("Message fetching failed with error:", error); + } + ); + ``` + + + ```typescript + let UID: string = "UID", + limit: number = 30, + messagesRequest: CometChat.MessagesRequest = + new CometChat.MessagesRequestBuilder() + .setUID(UID) + .setUnread(true) + .setLimit(limit) + .build(); + + messagesRequest.fetchPrevious().then( + (messages: CometChat.BaseMessage[]) => { + console.log("Message list fetched:", messages); + }, + (error: CometChat.CometChatException) => { + console.log("Message fetching failed with error:", error); + } + ); + ``` + ### For a Particular Group - -```javascript -let GUID = "GUID"; -let limit = 30; -let messagesRequest = new CometChat.MessagesRequestBuilder() - .setGUID(GUID) - .setUnread(true) - .setLimit(limit) - .build(); - -messagesRequest.fetchPrevious().then( - (messages) => { - console.log("Message list fetched:", messages); - }, - (error) => { - console.log("Message fetching failed with error:", error); - } -); -``` - - - - -```typescript -let GUID: string = "GUID", - limit: number = 30, - messagesRequest: CometChat.MessagesRequest = - new CometChat.MessagesRequestBuilder() + + ```javascript + let GUID = "GUID"; + let limit = 30; + let messagesRequest = new CometChat.MessagesRequestBuilder() .setGUID(GUID) .setUnread(true) .setLimit(limit) .build(); -messagesRequest.fetchPrevious().then( - (messages: CometChat.BaseMessage[]) => { - console.log("Message list fetched:", messages); - }, - (error: CometChat.CometChatException) => { - console.log("Message fetching failed with error:", error); - } -); -``` - - - + messagesRequest.fetchPrevious().then( + (messages) => { + console.log("Message list fetched:", messages); + }, + (error) => { + console.log("Message fetching failed with error:", error); + } + ); + ``` + + + ```typescript + let GUID: string = "GUID", + limit: number = 30, + messagesRequest: CometChat.MessagesRequest = + new CometChat.MessagesRequestBuilder() + .setGUID(GUID) + .setUnread(true) + .setLimit(limit) + .build(); + + messagesRequest.fetchPrevious().then( + (messages: CometChat.BaseMessage[]) => { + console.log("Message list fetched:", messages); + }, + (error: CometChat.CometChatException) => { + console.log("Message fetching failed with error:", error); + } + ); + ``` + -Base Message - -The list of messages received is in the form of objects of `BaseMessage` class. A BaseMessage can either be an object of the `TextMessage`, `MediaMessage`, `CustomMessage`, `Action` or `Call` class. You can use the `instanceOf` operator to check the type of object. - +**Base Message:** The list of messages received is in the form of objects of `BaseMessage` class. A BaseMessage can either be an object of the `TextMessage`, `MediaMessage`, `CustomMessage`, `Action` or `Call` class. You can use the `instanceOf` operator to check the type of object. ## Message History @@ -332,228 +321,210 @@ The list of messages received is in the form of objects of `BaseMessage` class. ### For a Particular One-on-one Conversation -Using the `MessagesRequest` class and the filters for the `MessagesRequestBuilder` class as shown in the below code snippet, you can fetch the entire conversation between the logged in user and any particular user. For this use case, it is mandatory to set the UID parameter using the `setUID()` method of the builder. This UID is the unique id of the user for which the conversation needs to be fetched. +Using the `MessagesRequest` class and the filters for the `MessagesRequestBuilder` class as shown in the below code snippet, you can fetch the entire conversation between the logged-in user and any particular user. For this use case, it is mandatory to set the UID parameter using the `setUID()` method of the builder. This UID is the unique ID of the user for which the conversation needs to be fetched. - -```javascript -let UID = "UID"; -let limit = 30; -let messagesRequest = new CometChat.MessagesRequestBuilder() - .setUID(UID) - .setLimit(limit) - .build(); - -messagesRequest.fetchPrevious().then( - (messages) => { - console.log("Message list fetched:", messages); - }, - (error) => { - console.log("Message fetching failed with error:", error); - } -); -``` - - - - -```typescript -let UID: string = "UID", - limit: number = 30, - messagesRequest: CometChat.MessagesRequest = - new CometChat.MessagesRequestBuilder().setUID(UID).setLimit(limit).build(); - -messagesRequest.fetchPrevious().then( - (messages: CometChat.BaseMessage[]) => { - console.log("Message list fetched:", messages); - }, - (error: CometChat.CometChatException) => { - console.log("Message fetching failed with error:", error); - } -); -``` - - + + ```javascript + let UID = "UID"; + let limit = 30; + let messagesRequest = new CometChat.MessagesRequestBuilder() + .setUID(UID) + .setLimit(limit) + .build(); + messagesRequest.fetchPrevious().then( + (messages) => { + console.log("Message list fetched:", messages); + }, + (error) => { + console.log("Message fetching failed with error:", error); + } + ); + ``` + + + ```typescript + let UID: string = "UID", + limit: number = 30, + messagesRequest: CometChat.MessagesRequest = + new CometChat.MessagesRequestBuilder().setUID(UID).setLimit(limit).build(); + + messagesRequest.fetchPrevious().then( + (messages: CometChat.BaseMessage[]) => { + console.log("Message list fetched:", messages); + }, + (error: CometChat.CometChatException) => { + console.log("Message fetching failed with error:", error); + } + ); + ``` + -Calling the `fetchPrevious()` method on the same object repeatedly allows you to fetch the entire conversation between the logged in user and the specified user. This can be implemented with upward scrolling to display the entire conversation. +Calling the `fetchPrevious()` method on the same object repeatedly allows you to fetch the entire conversation between the logged-in user and the specified user. This can be implemented with upward scrolling to display the entire conversation. ### For a Particular Group Using the `MessagesRequest` class and the filters for the `MessagesRequestBuilder` class as shown in the below code snippet, you can fetch the entire conversation for any group provided you have joined the group. For this use case, it is mandatory to set the GUID parameter using the `setGUID()` method of the builder. This GUID is the unique identifier of the Group for which the messages are to be fetched. - -```javascript -let GUID = "GUID"; -let limit = 30; -let messagesRequest = new CometChat.MessagesRequestBuilder() - .setGUID(GUID) - .setLimit(limit) - .build(); - -messagesRequest.fetchPrevious().then( - (messages) => { - console.log("Message list fetched:", messages); - }, - (error) => { - console.log("Message fetching failed with error:", error); - } -); -``` - - - - -```typescript -let GUID: string = "GUID", - limit: number = 30, - messagesRequest: CometChat.MessagesRequest = - new CometChat.MessagesRequestBuilder() + + ```javascript + let GUID = "GUID"; + let limit = 30; + let messagesRequest = new CometChat.MessagesRequestBuilder() .setGUID(GUID) .setLimit(limit) .build(); -messagesRequest.fetchPrevious().then( - (messages: CometChat.BaseMessage[]) => { - console.log("Message list fetched:", messages); - }, - (error: CometChat.CometChatException) => { - console.log("Message fetching failed with error:", error); - } -); -``` - - - + messagesRequest.fetchPrevious().then( + (messages) => { + console.log("Message list fetched:", messages); + }, + (error) => { + console.log("Message fetching failed with error:", error); + } + ); + ``` + + + ```typescript + let GUID: string = "GUID", + limit: number = 30, + messagesRequest: CometChat.MessagesRequest = + new CometChat.MessagesRequestBuilder() + .setGUID(GUID) + .setLimit(limit) + .build(); + + messagesRequest.fetchPrevious().then( + (messages: CometChat.BaseMessage[]) => { + console.log("Message list fetched:", messages); + }, + (error: CometChat.CometChatException) => { + console.log("Message fetching failed with error:", error); + } + ); + ``` + Calling the `fetchPrevious()` method on the same object repeatedly allows you to fetch the entire conversation for the group. This can be implemented with upward scrolling to display the entire conversation. ## Search Messages -In other words, as a logged-in user, how do I search a message? +*In other words, as a logged-in user, how do I search a message?* -In order to do this, you can use the `setSearchKeyword()` method. This method accepts string as input. When set, the SDK will fetch messages which match the `searchKeyword`. +In order to do this, you can use the `setSearchKeyword()` method. This method accepts a string as input. When set, the SDK will fetch messages which match the `searchKeyword`. - By default, the searchKey is searched only in message text. However, if you enable `Conversation & Advanced Search`, the searchKey will be searched in message text, file name, mentions & mime type of the file. -The `Conversation & Advanced Search` is only available in `Advanced` & `Custom` [plans](https://www.cometchat.com/pricing). If you're already on one of these plans, please enable the `Conversation & Advanced Search` from [CometChat Dashboard](https://app.cometchat.com) (Open your app, navigate to Chats -> Settings -> General Configuration) - +The `Conversation & Advanced Search` is only available in `Advanced` & `Custom` [plans](https://www.cometchat.com/pricing). If you're already on one of these plans, please enable the `Conversation & Advanced Search` from [CometChat Dashboard](https://app.cometchat.com) (Open your app, navigate to Chats -> Settings -> General Configuration). -| Feature | Basic Search | Advance Search | -| ---------------- | ------------ | -------------- | -| Text search | ✅ | ✅ | -| File name search | ❌ | ✅ | -| Mentions search | ❌ | ✅ | -| Mime type search | ❌ | ✅ | +| Feature | Basic Search | Advanced Search | +| ---------------- | ------------ | --------------- | +| Text search | ✅ | ✅ | +| File name search | ❌ | ✅ | +| Mentions search | ❌ | ✅ | +| Mime type search | ❌ | ✅ | ### For a Particular One-on-one Conversation - -```javascript -let UID = "UID"; -let limit = 30; -let searchKeyword = "Hello"; -let messagesRequest = new CometChat.MessagesRequestBuilder() - .setUID(UID) - .setLimit(limit) - .setSearchKeyword(searchKeyword) - .build(); - -messagesRequest.fetchPrevious().then( - (messages) => { - console.log("Message list fetched:", messages); - }, - (error) => { - console.log("Message fetching failed with error:", error); - } -); -``` - - - - -```typescript -let UID: string = "UID", - limit: number = 30, - searchKeyword: string = "Hello", - messagesRequest: CometChat.MessagesRequest = - new CometChat.MessagesRequestBuilder() + + ```javascript + let UID = "UID"; + let limit = 30; + let searchKeyword = "Hello"; + let messagesRequest = new CometChat.MessagesRequestBuilder() .setUID(UID) .setLimit(limit) .setSearchKeyword(searchKeyword) .build(); -messagesRequest.fetchPrevious().then( - (messages: CometChat.BaseMessage[]) => { - console.log("Message list fetched:", messages); - }, - (error: CometChat.CometChatException) => { - console.log("Message fetching failed with error:", error); - } -); -``` - - - + messagesRequest.fetchPrevious().then( + (messages) => { + console.log("Message list fetched:", messages); + }, + (error) => { + console.log("Message fetching failed with error:", error); + } + ); + ``` + + + ```typescript + let UID: string = "UID", + limit: number = 30, + searchKeyword: string = "Hello", + messagesRequest: CometChat.MessagesRequest = + new CometChat.MessagesRequestBuilder() + .setUID(UID) + .setLimit(limit) + .setSearchKeyword(searchKeyword) + .build(); + + messagesRequest.fetchPrevious().then( + (messages: CometChat.BaseMessage[]) => { + console.log("Message list fetched:", messages); + }, + (error: CometChat.CometChatException) => { + console.log("Message fetching failed with error:", error); + } + ); + ``` + ### For a Particular Group - -```javascript -let GUID = "GUID"; -let limit = 30; -let searchKeyword = "Hello"; -let messagesRequest = new CometChat.MessagesRequestBuilder() - .setGUID(GUID) - .setLimit(limit) - .setSearchKeyword(searchKeyword) - .build(); - -messagesRequest.fetchPrevious().then( - (messages) => { - console.log("Message list fetched:", messages); - }, - (error) => { - console.log("Message fetching failed with error:", error); - } -); -``` - - - - -```typescript -let GUID: string = "GUID", - limit: number = 30, - searchKeyword: string = "Hello", - messagesRequest: CometChat.MessagesRequest = - new CometChat.MessagesRequestBuilder() + + ```javascript + let GUID = "GUID"; + let limit = 30; + let searchKeyword = "Hello"; + let messagesRequest = new CometChat.MessagesRequestBuilder() .setGUID(GUID) .setLimit(limit) .setSearchKeyword(searchKeyword) .build(); -messagesRequest.fetchPrevious().then( - (messages: CometChat.BaseMessage[]) => { - console.log("Message list fetched:", messages); - }, - (error: CometChat.CometChatException) => { - console.log("Message fetching failed with error:", error); - } -); -``` - - - + messagesRequest.fetchPrevious().then( + (messages) => { + console.log("Message list fetched:", messages); + }, + (error) => { + console.log("Message fetching failed with error:", error); + } + ); + ``` + + + ```typescript + let GUID: string = "GUID", + limit: number = 30, + searchKeyword: string = "Hello", + messagesRequest: CometChat.MessagesRequest = + new CometChat.MessagesRequestBuilder() + .setGUID(GUID) + .setLimit(limit) + .setSearchKeyword(searchKeyword) + .build(); + + messagesRequest.fetchPrevious().then( + (messages: CometChat.BaseMessage[]) => { + console.log("Message list fetched:", messages); + }, + (error: CometChat.CometChatException) => { + console.log("Message fetching failed with error:", error); + } + ); + ``` + ## Unread Message Count @@ -562,325 +533,275 @@ messagesRequest.fetchPrevious().then( ### For a Particular One-on-one Conversation -*In other words, how do I find out the number of unread messages I have from a particular user?* +*How do I find out the number of unread messages I have from a particular user?* -In order to get the unread message count for a particular user, you can use the `getUnreadMessageCountForUser()`. +In order to get the unread message count for a particular user, you can use the `getUnreadMessageCountForUser()` method. This method has the below two variants: - -```javascript -CometChat.getUnreadMessageCountForUser(UID); -``` - - - - -```typescript -let UID: string = "UID"; -CometChat.getUnreadMessageCountForUser(UID); -``` - - - + + ```javascript + CometChat.getUnreadMessageCountForUser(UID); + ``` + + + ```typescript + let UID: string = "UID"; + CometChat.getUnreadMessageCountForUser(UID); + ``` + If you wish to ignore the messages from blocked users you can use the below syntax setting the boolean parameter to true: - -```javascript -CometChat.getUnreadMessageCountForUser(UID, hideMessagesFromBlockedUsers); -``` - - - - -```typescript -let UID: string = "UID", - hideMessagesFromBlockedUsers: boolean = true; -CometChat.getUnreadMessageCountForUser(UID, hideMessagesFromBlockedUsers); -``` - - - + + ```javascript + CometChat.getUnreadMessageCountForUser(UID, hideMessagesFromBlockedUsers); + ``` + + + ```typescript + let UID: string = "UID", + hideMessagesFromBlockedUsers: boolean = true; + CometChat.getUnreadMessageCountForUser(UID, hideMessagesFromBlockedUsers); + ``` + - -```javascript -let UID = "UID"; - -CometChat.getUnreadMessageCountForUser(UID).then( - (unreadMessageCountObject) => { - console.log("Unread message count fetched", unreadMessageCountObject); - }, - (error) => { - console.log("Error in getting unread message count", error); - } -); -``` - - - - -```typescript -let UID: string = "UID"; - -CometChat.getUnreadMessageCountForUser(UID).then( - (unreadMessageCount: Object) => { - console.log("Unread message count fetched", unreadMessageCount); - }, - (error: CometChat.CometChatException) => { - console.log("Error in getting unread message count", error); - } -); -``` - - - + + ```javascript + let UID = "UID"; + + CometChat.getUnreadMessageCountForUser(UID).then( + (unreadMessageCountObject) => { + console.log("Unread message count fetched", unreadMessageCountObject); + }, + (error) => { + console.log("Error in getting unread message count", error); + } + ); + ``` + + + ```typescript + let UID: string = "UID"; + + CometChat.getUnreadMessageCountForUser(UID).then( + (unreadMessageCount: Object) => { + console.log("Unread message count fetched", unreadMessageCount); + }, + (error: CometChat.CometChatException) => { + console.log("Error in getting unread message count", error); + } + ); + ``` + It will return an object which will contain the UID as the key and the unread message count as the value. ### For a Particular Group Conversation -*In other words, how do I find out the number of unread messages I have in a single group?* +*How do I find out the number of unread messages I have in a single group?* -In order to get the unread message count for a particular group, you can use the `getUnreadMessageCountForGroup()`. +In order to get the unread message count for a particular group, you can use the `getUnreadMessageCountForGroup()` method. This method has the below two variants: - -```javascript -CometChat.getUnreadMessageCountForGroup(GUID); -``` - - - - -```typescript -let GUID: string = "GUID"; -CometChat.getUnreadMessageCountForGroup(GUID); -``` - - - + + ```javascript + CometChat.getUnreadMessageCountForGroup(GUID); + ``` + + + ```typescript + let GUID: string = "GUID"; + CometChat.getUnreadMessageCountForGroup(GUID); + ``` + -\`\` - If you wish to ignore the messages from blocked users you can use the below syntax setting the boolean parameter to true: - -```javascript -CometChat.getUnreadMessageCountForGroup(GUID, hideMessagesFromBlockedUsers); -``` - - - - -```typescript -let GUID: string = "GUID", - hideMessagesFromBlockedUsers: boolean = true; -CometChat.getUnreadMessageCountForGroup(GUID, hideMessagesFromBlockedUsers); -``` - - - + + ```javascript + CometChat.getUnreadMessageCountForGroup(GUID, hideMessagesFromBlockedUsers); + ``` + + + ```typescript + let GUID: string = "GUID", + hideMessagesFromBlockedUsers: boolean = true; + CometChat.getUnreadMessageCountForGroup(GUID, hideMessagesFromBlockedUsers); + ``` + - -```javascript -let GUID = "GUID"; - -CometChat.getUnreadMessageCountForGroup(GUID).then( - (unreadMessageCountObject) => { - console.log("Unread message count fetched", unreadMessageCountObject); - }, - (error) => { - console.log("Error in getting unread message count", error); - } -); -``` - - - - -```typescript -let GUID: string = "GUID"; - -CometChat.getUnreadMessageCountForGroup(GUID).then( - (unreadMessageCount: Object) => { - console.log("Unread message count fetched", unreadMessageCount); - }, - (error: CometChat.CometChatException) => { - console.log("Error in getting unread message count", error); - } -); -``` - - - + + ```javascript + let GUID = "GUID"; + + CometChat.getUnreadMessageCountForGroup(GUID).then( + (unreadMessageCountObject) => { + console.log("Unread message count fetched", unreadMessageCountObject); + }, + (error) => { + console.log("Error in getting unread message count", error); + } + ); + ``` + + + ```typescript + let GUID: string = "GUID"; + + CometChat.getUnreadMessageCountForGroup(GUID).then( + (unreadMessageCount: Object) => { + console.log("Unread message count fetched", unreadMessageCount); + }, + (error: CometChat.CometChatException) => { + console.log("Error in getting unread message count", error); + } + ); + ``` + It will return an object which will contain the GUID as the key and the unread message count as the value. ### For All One-on-one & Group Conversations -*In other words, how do I find out the number of unread messages for every one-on-one and group conversation?* +*How do I find out the number of unread messages for every one-on-one and group conversation?* In order to get all the unread message count combined i.e unread message counts for all the users and groups, you can use the `getUnreadMessageCount()` method. This method has two variants: - -```javascript -CometChat.getUnreadMessageCount(); -``` - - - - -```typescript -CometChat.getUnreadMessageCount(); -``` - - - + + ```javascript + CometChat.getUnreadMessageCount(); + ``` + + + ```typescript + CometChat.getUnreadMessageCount(); + ``` + If you wish to ignore the messages from blocked users you can use the below syntax setting the boolean parameter to true: - -```javascript -CometChat.getUnreadMessageCount(hideMessagesFromBlockedUsers); -``` - - - - -```typescript -let hideMessagesFromBlockedUsers: boolean = true; -CometChat.getUnreadMessageCount(hideMessagesFromBlockedUsers); -``` - - - + + ```javascript + CometChat.getUnreadMessageCount(hideMessagesFromBlockedUsers); + ``` + + + ```typescript + let hideMessagesFromBlockedUsers: boolean = true; + CometChat.getUnreadMessageCount(hideMessagesFromBlockedUsers); + ``` + - -```javascript -CometChat.getUnreadMessageCount().then( - (unreadMessageCountObject) => { - console.log("Unread message count fetched", unreadMessageCountObject); - }, - (error) => { - console.log("Error in getting unread message count", error); - } -); -``` - - - - -```typescript -CometChat.getUnreadMessageCount().then( - (unreadMessageCount: Object) => { - console.log("Unread message count fetched", unreadMessageCount); - }, - (error: CometChat.CometChatException) => { - console.log("Error in getting unread message count", error); - } -); -``` - - - + + ```javascript + CometChat.getUnreadMessageCount().then( + (unreadMessageCountObject) => { + console.log("Unread message count fetched", unreadMessageCountObject); + }, + (error) => { + console.log("Error in getting unread message count", error); + } + ); + ``` + + + ```typescript + CometChat.getUnreadMessageCount().then( + (unreadMessageCount: Object) => { + console.log("Unread message count fetched", unreadMessageCount); + }, + (error: CometChat.CometChatException) => { + console.log("Error in getting unread message count", error); + } + ); + ``` + It returns an object having two keys: -1. users - The value for this key holds another object that holds the UID as key and their corresponding unread message count as value. -2. groups - The value for this key holds another object that holds the GUID as key and their corresponding unread message count as value. +1. `users` - The value for this key holds another object that holds the UID as key and their corresponding unread message count as value. +2. `groups` - The value for this key holds another object that holds the GUID as key and their corresponding unread message count as value. ### For All One-on-one Conversations In order to fetch the unread message counts for just the users, you can use the `getUnreadMessageCountForAllUsers()` method. This method just like others has two variants: - -```javascript -CometChat.getUnreadMessageCountForAllUsers(); -``` - - - - -```typescript -CometChat.getUnreadMessageCountForAllUsers(); -``` - - - + + ```javascript + CometChat.getUnreadMessageCountForAllUsers(); + ``` + + + ```typescript + CometChat.getUnreadMessageCountForAllUsers(); + ``` + If you wish to ignore the messages from blocked users you can use the below syntax setting the boolean parameter to true: - -```javascript -CometChat.getUnreadMessageCountForAllUsers(hideMessagesFromBlockedUsers); -``` - - - - -```typescript -let hideMessagesFromBlockedUsers: boolean = true; -CometChat.getUnreadMessageCountForAllUsers(hideMessagesFromBlockedUsers); -``` - - - + + ```javascript + CometChat.getUnreadMessageCountForAllUsers(hideMessagesFromBlockedUsers); + ``` + + + ```typescript + let hideMessagesFromBlockedUsers: boolean = true; + CometChat.getUnreadMessageCountForAllUsers(hideMessagesFromBlockedUsers); + ``` + - -```javascript -CometChat.getUnreadMessageCountForAllUsers().then( - (unreadMessageCountObject) => { - console.log("Unread message count fetched", unreadMessageCountObject); - }, - (error) => { - console.log("Error in getting unread message count", error); - } -); -``` - - - - -```typescript -CometChat.getUnreadMessageCountForAllUsers().then( - (unreadMessageCount: Object) => { - console.log("Unread message count fetched", unreadMessageCount); - }, - (error: CometChat.CometChatException) => { - console.log("Error in getting unread message count", error); - } -); -``` - - - + + ```javascript + CometChat.getUnreadMessageCountForAllUsers().then( + (unreadMessageCountObject) => { + console.log("Unread message count fetched", unreadMessageCountObject); + }, + (error) => { + console.log("Error in getting unread message count", error); + } + ); + ``` + + + ```typescript + CometChat.getUnreadMessageCountForAllUsers().then( + (unreadMessageCount: Object) => { + console.log("Unread message count fetched", unreadMessageCount); + }, + (error: CometChat.CometChatException) => { + console.log("Error in getting unread message count", error); + } + ); + ``` + It returns an object which will contain the UID as the key and the unread message count as the value. @@ -890,71 +811,92 @@ It returns an object which will contain the UID as the key and the unread messag In order to fetch the unread message counts for just the groups, you can use the `getUnreadMessageCountForAllGroups()` method. This method just like others has two variants: - -```javascript -CometChat.getUnreadMessageCountForAllGroups(); -``` - - - - -```typescript -CometChat.getUnreadMessageCountForAllGroups(); -``` - - - + + ```javascript + CometChat.getUnreadMessageCountForAllGroups(); + ``` + + + ```typescript + CometChat.getUnreadMessageCountForAllGroups(); + ``` + If you wish to ignore the messages from blocked users you can use the below syntax setting the boolean parameter to true: - -```javascript -CometChat.getUnreadMessageCountForAllGroups(hideMessagesFromBlockedUsers); -``` - - - - -```typescript -let hideMessagesFromBlockedUsers: boolean = true; -CometChat.getUnreadMessageCountForAllGroups(hideMessagesFromBlockedUsers); -``` - - - + + ```javascript + CometChat.getUnreadMessageCountForAllGroups(hideMessagesFromBlockedUsers); + ``` + + + ```typescript + let hideMessagesFromBlockedUsers: boolean = true; + CometChat.getUnreadMessageCountForAllGroups(hideMessagesFromBlockedUsers); + ``` + - -```javascript -CometChat.getUnreadMessageCountForAllGroups().then( - (unreadMessageCountObject) => { - console.log("Unread message count fetched", unreadMessageCountObject); - }, - (error) => { - console.log("Error in getting unread message count", error); - } -); -``` - - - - -```typescript -CometChat.getUnreadMessageCountForAllGroups().then( - (unreadMessageCount: Object) => { - console.log("Unread message count fetched", unreadMessageCount); - }, - (error: CometChat.CometChatException) => { - console.log("Error in getting unread message count", error); - } -); -``` - - - + + ```javascript + CometChat.getUnreadMessageCountForAllGroups().then( + (unreadMessageCountObject) => { + console.log("Unread message count fetched", unreadMessageCountObject); + }, + (error) => { + console.log("Error in getting unread message count", error); + } + ); + ``` + + + ```typescript + CometChat.getUnreadMessageCountForAllGroups().then( + (unreadMessageCount: Object) => { + console.log("Unread message count fetched", unreadMessageCount); + }, + (error: CometChat.CometChatException) => { + console.log("Error in getting unread message count", error); + } + ); + ``` + It returns an object which will contain the GUID as the key and the unread message count as the value. + + + + - Always remove message listeners when a component unmounts to prevent memory leaks + - Use unique, descriptive listener IDs (e.g., `"chat-screen-listener"`) to avoid conflicts + - Use `getLastDeliveredMessageId()` to efficiently fetch only missed messages + - Implement pagination with `fetchPrevious()` for message history to avoid loading too many messages at once + - Use `setUnread(true)` to fetch only unread messages when building notification badges + + + - **Not receiving messages:** Ensure the message listener is registered and the user is logged in + - **Duplicate messages:** Check that you're not adding the same listener ID multiple times + - **Missing messages after reconnect:** Use the missed messages pattern with `getLastDeliveredMessageId()` to catch up + - **Unread count not updating:** Ensure you're calling the unread count methods after marking messages as read + + + +## Next Steps + + + + Send text, media, and custom messages to users and groups + + + Track when messages are delivered and read + + + Show real-time typing status in conversations + + + Understand message categories, types, and hierarchy + + diff --git a/sdk/react-native/recording.mdx b/sdk/react-native/recording.mdx index ca7b2498d..d1f32b74f 100644 --- a/sdk/react-native/recording.mdx +++ b/sdk/react-native/recording.mdx @@ -1,18 +1,39 @@ --- title: "Recording (Beta)" +description: "Add call recording to your React Native app with start/stop controls, recording listeners, and automatic recording on call start." --- + +**Quick Reference** - Start and stop call recording: +```javascript +// Start recording +CometChatCalls.startRecording(); + +// Stop recording +CometChatCalls.stopRecording(); + +// Or enable auto-recording via CallSettings +new CometChatCalls.CallSettingsBuilder() + .startRecordingOnCallStart(true) + .showRecordingButton(true) + .build(); +``` + + + +**Available via:** SDK | UI Kits + -This section will guide you to implement call recording feature for the voice and video calls. +## Overview -## Implementation +This section guides you through implementing call recording for voice and video calls. -Once you have decided to implement [Default Calling](/sdk/react-native/default-call) or [Direct Calling](/sdk/react-native/direct-call) and followed the steps to implement them. Just few additional listeners and methods will help you quickly implement call recording in your app. +Once you have decided to implement [Ringing](/sdk/react-native/default-call) or [Call Session](/sdk/react-native/direct-call) and followed the steps to implement them, a few additional listeners and methods will help you quickly implement call recording in your app. -You need to make changes in the `CometChatCalls.OngoingCallListener` constructor and add the required listeners for recording. Please make sure your callSettings is configured accordingly for [Default Calling](/sdk/react-native/default-call) or [Direct Calling](/sdk/react-native/direct-call). +You need to make changes in the `CometChatCalls.OngoingCallListener` constructor and add the required listeners for recording. Please make sure your callSettings is configured accordingly for [Ringing](/sdk/react-native/default-call) or [Call Session](/sdk/react-native/direct-call). -A basic example of how to make changes to implement recording for a direct call/ a default call: +A basic example of how to make changes to implement recording: @@ -85,9 +106,9 @@ render(){ -## Settings for call recording +## Settings for Call Recording -The `CallSettings` class allows you to customise the overall calling experience. The properties for the call/conference can be set using the `CallSettingsBuilder` class. This will eventually give you and object of the `CallSettings` class which you can pass to the `startSession()` method to start the call. +The `CallSettings` class allows you to customise the overall calling experience. The properties for the call/conference can be set using the `CallSettingsBuilder` class. This will eventually give you an object of the `CallSettings` class which you can pass to the `CometChatCalls.Component` to start the call. The options available for recording of calls are: @@ -155,3 +176,50 @@ Currently, the call recordings are available on the [CometChat Dashboard](https: + +## Best Practices + + + + The ongoing call component automatically displays a recording badge when recording starts — you don't need to build or control this UI. Use the `onRecordingStarted` and `onRecordingStopped` listeners if you need to track recording state in your app logic (e.g., logging or analytics). + + + If your app requires all calls to be recorded (e.g., for compliance or audit purposes), enable `startRecordingOnCallStart(true)` in your `CallSettingsBuilder` to ensure no calls are missed. + + + If you're using a custom layout (`enableDefaultLayout(false)`), track the recording state using `onRecordingStarted` and `onRecordingStopped` listeners to toggle your custom recording button's appearance. + + + +## Troubleshooting + + + + Ensure `showRecordingButton(true)` is set in your `CallSettingsBuilder`. The recording button is hidden by default (`false`). Also verify that `enableDefaultLayout(true)` is set, as the button is part of the default layout. + + + These listeners require JS SDK v3.0.8 or later. Verify your SDK version. Also ensure the listeners are registered in the `OngoingCallListener` before the call session starts. + + + Recordings may take a few minutes to process after the call ends. Check the Calls section in the [CometChat Dashboard](https://app.cometchat.com). If still missing, verify that recording was actually started (check `onRecordingStarted` callback). + + + +--- + +## Next Steps + + + + Start and manage call sessions with full configuration options + + + Implement a complete calling experience with incoming and outgoing call UI + + + Customize the main video container and participant tiles + + + Retrieve and display call history including duration and participants + + \ No newline at end of file diff --git a/sdk/react-native/retrieve-conversations.mdx b/sdk/react-native/retrieve-conversations.mdx index 7b974c595..d94f74292 100644 --- a/sdk/react-native/retrieve-conversations.mdx +++ b/sdk/react-native/retrieve-conversations.mdx @@ -1,11 +1,38 @@ --- title: "Retrieve Conversations" +description: "Fetch recent one-on-one and group conversations for the logged-in user using the ConversationsRequestBuilder, with support for filtering, tagging, and pagination." --- +{/* TL;DR for Agents and Quick Reference */} + +**Quick Reference for AI Agents & Developers** +```javascript +// Build a conversations request +let conversationsRequest = new CometChat.ConversationsRequestBuilder() + .setLimit(30) + .build(); + +// Fetch conversations (paginated) +conversationsRequest.fetchNext().then( + conversationList => console.log("Conversations:", conversationList), + error => console.log("Error:", error) +); + +// Retrieve a single conversation +CometChat.getConversation("UID_OR_GUID", "user_or_group").then( + conversation => console.log("Conversation:", conversation), + error => console.log("Error:", error) +); +``` + Conversations provide the last messages for every one-on-one and group conversation the logged-in user is a part of. This makes it easy for you to build a **Recent Chat** list. + +**Available via:** [SDK](/sdk/react-native/retrieve-conversations) | [REST API](/rest-api/conversations/list-conversations) | [UI Kits](/ui-kit/react-native/core-features#conversation-and-advanced-search) + + ## Retrieve List of Conversations *In other words, as a logged-in user, how do I retrieve the latest conversations that I've been a part of?* @@ -19,14 +46,13 @@ The `ConversationsRequestBuilder` class allows you to set the below parameters: This method sets the limit i.e. the number of conversations that should be fetched in a single iteration. - + ```javascript let limit = 30; let conversationRequest = new CometChat.ConversationsRequestBuilder() .setLimit(limit) .build(); ``` - @@ -36,9 +62,7 @@ let limit: number = 30, .setLimit(limit) .build(); ``` - - ### Set Conversation Type @@ -51,7 +75,7 @@ This method can be used to fetch user or group conversations specifically. The ` If none is set, the list of conversations will include both user and group conversations. - + ```javascript let limit = 30; let conversationType = "group"; @@ -60,7 +84,6 @@ let conversationRequest = new CometChat.ConversationsRequestBuilder() .setConversationType(conversationType) .build(); ``` - @@ -72,9 +95,7 @@ let limit: number = 30, .setConversationType(conversationType) .build(); ``` - - ### With User and Group Tags @@ -90,7 +111,6 @@ let conversationRequest = new CometChat.ConversationsRequestBuilder() .withUserAndGroupTags(true) .build(); ``` - @@ -101,9 +121,7 @@ let limit: number = 30, .withUserAndGroupTags(true) .build(); ``` - - ### Set User Tags @@ -120,7 +138,6 @@ let conversationRequest = new CometChat.ConversationsRequestBuilder() .setUserTags(userTags) .build(); ``` - @@ -132,9 +149,7 @@ let limit: number = 30, .setUserTags(userTags) .build(); ``` - - ### Set Group Tags @@ -151,7 +166,6 @@ let conversationRequest = new CometChat.ConversationsRequestBuilder() .setGroupTags(groupTags) .build(); ``` - @@ -163,17 +177,15 @@ let limit: number = 30, .setGroupTags(groupTags) .build(); ``` - - ### With Tags -This method makes sure that the tags associated with the conversations are returned along with the other details of the conversations. The default value for this parameter is `false` +This method makes sure that the tags associated with the conversations are returned along with the other details of the conversations. The default value for this parameter is `false`. - + ```javascript let limit = 30; let conversationRequest = new CometChat.ConversationsRequestBuilder() @@ -181,7 +193,6 @@ let conversationRequest = new CometChat.ConversationsRequestBuilder() .withTags(true) .build(); ``` - @@ -192,9 +203,7 @@ let limit: number = 30, .withTags(true) .build(); ``` - - ### Set Tags @@ -202,7 +211,7 @@ let limit: number = 30, This method helps you fetch the conversations based on the specified tags. - + ```javascript let limit = 30; let tags = ["archivedChat"]; @@ -211,7 +220,6 @@ let conversationRequest = new CometChat.ConversationsRequestBuilder() .setTags(tags) .build(); ``` - @@ -223,9 +231,7 @@ let limit: number = 30, .setTags(tags) .build(); ``` - - ### Include Blocked Users @@ -241,7 +247,6 @@ let conversationRequest = new CometChat.ConversationsRequestBuilder() .setIncludeBlockedUsers(true) .build(); ``` - @@ -252,9 +257,7 @@ let limit: number = 30, .setIncludeBlockedUsers(true) .build(); ``` - - ### With Blocked Info @@ -270,7 +273,6 @@ let conversationRequest = new CometChat.ConversationsRequestBuilder() .setWithBlockedInfo(true) .build(); ``` - @@ -281,14 +283,12 @@ let limit: number = 30, .setWithBlockedInfo(true) .build(); ``` - - ### Search Conversations -This method helps you search a conversation based on User or Group name. +This method helps you search for a conversation based on a User or Group name. @@ -305,7 +305,6 @@ let conversationRequest = new CometChat.ConversationsRequestBuilder() .setSearchKeyword("Hiking") .build(); ``` - @@ -316,9 +315,7 @@ let limit: number = 30, .setSearchKeyword("Hiking") .build(); ``` - - ### Unread Conversations @@ -340,7 +337,6 @@ let conversationRequest = new CometChat.ConversationsRequestBuilder() .setUnread(true) .build(); ``` - @@ -351,9 +347,7 @@ let limit: number = 30, .setUnread(true) .build(); ``` - - Finally, once all the parameters are set to the builder class, you need to call the `build()` method to get the object of the `ConversationsRequest` class. @@ -363,7 +357,7 @@ Once you have the object of the `ConversationsRequest` class, you need to call t A Maximum of only 50 Conversations can be fetched at once. - + ```javascript let limit = 30; let conversationsRequest = new CometChat.ConversationsRequestBuilder() @@ -378,7 +372,6 @@ conversationsRequest.fetchNext().then( } ); ``` - @@ -396,9 +389,7 @@ conversationsRequest.fetchNext().then( } ); ``` - - The `Conversation` Object consists of the following fields: @@ -407,7 +398,7 @@ The `Conversation` Object consists of the following fields: | ------------------ | ----------------------------------------------------------------- | | conversationId | ID of the conversation. | | conversationType | Type of conversation. (user/group) | -| lastMessage | Last message the conversation. | +| lastMessage | Last message in the conversation. | | conversationWith | User or Group object containing the details of the user or group. | | unreadMessageCount | Unread message count for the conversation. | @@ -417,7 +408,7 @@ The `Conversation` Object consists of the following fields: To tag a specific conversation, you can use the `tagConversation()` method. The `tagConversation()` method accepts three parameters. -1. `conversationWith`: UID/GUID of the user/group whose conversation you want to fetch. +1. `conversationWith`: UID/GUID of the user/group whose conversation you want to tag. 2. `conversationType`: The `conversationType` variable can hold one of the below two values: @@ -427,7 +418,7 @@ To tag a specific conversation, you can use the `tagConversation()` method. The 3. `tags`: The `tags` variable will be a list of tags you want to add to a conversation. - + ```javascript let tags = ["archivedChat"]; CometChat.tagConversation('conversationWith', 'conversationType', tags).then( @@ -438,9 +429,7 @@ CometChat.tagConversation('conversationWith', 'conversationType', tags).then( } ); ``` - - @@ -462,7 +451,7 @@ To fetch a specific conversation, you can use the `getConversation` method. The * group - Only fetches group conversations. - + ```javascript CometChat.getConversation('conversationWith', 'conversationType').then( conversation => { @@ -472,17 +461,15 @@ CometChat.getConversation('conversationWith', 'conversationType').then( } ); ``` - - ## Convert Messages to Conversations -As per our [receive messages](/sdk/react-native/receive-messages) guide, for real-time messages, you will always receive `Message` objects and not `Conversation` objects. Thus, you will need a mechanism to convert the Message object to `Conversation` object. You can use the `getConversationFromMessage(BaseMessage message)` of the `CometChatHelper` class. +As per our [receive messages](/sdk/react-native/receive-messages) guide, for real-time messages, you will always receive `Message` objects and not `Conversation` objects. Thus, you will need a mechanism to convert the Message object to a `Conversation` object. You can use the `getConversationFromMessage(BaseMessage message)` method of the `CometChatHelper` class. - + ```javascript CometChat.CometChatHelper.getConversationFromMessage(message).then( conversation => { @@ -492,9 +479,7 @@ conversation => { } ); ``` - - @@ -502,3 +487,42 @@ conversation => { While converting the `Message` object to the `Conversation` object, the `unreadMessageCount` & `tags` will not be available in the `Conversation` object. The unread message count needs to be managed in your client-side code. + +## Best Practices & Troubleshooting + + + + Always use `fetchNext()` in a loop or on-scroll handler to paginate through conversations. Fetching all conversations at once is not supported — the maximum per request is 50. Store the `ConversationsRequest` object and call `fetchNext()` repeatedly until it returns an empty list. + + + Use [real-time message listeners](/sdk/react-native/receive-messages) to receive new messages, then call `CometChatHelper.getConversationFromMessage()` to convert incoming messages into `Conversation` objects and update your list. Note that `unreadMessageCount` and `tags` are not available when converting from a message — manage those on the client side. + + + Use `setTags()` to categorize conversations (e.g., `archivedChat`, `pinned`). Remember that conversation tags are one-way — tagging a conversation only applies for the logged-in user, not the other participant. + + + Ensure the logged-in user has actually exchanged messages with the expected users or groups. Conversations only appear once at least one message has been sent. Also verify that any filters (conversation type, tags, unread) are not excluding the results you expect. + + + The `setSearchKeyword()` and `setUnread()` methods require the `Conversation & Advanced Search` feature, which is only available on `Advanced` and `Custom` [plans](https://www.cometchat.com/pricing). Enable it from the [CometChat Dashboard](https://app.cometchat.com) under Chats → Settings → General Configuration. + + + +--- + +## Next Steps + + + + Remove a conversation from the logged-in user's conversation list. + + + Listen for real-time messages and update your conversation list. + + + Show real-time typing status within conversations. + + + Track when messages are delivered and read. + + diff --git a/sdk/react-native/send-message.mdx b/sdk/react-native/send-message.mdx index 9a7da6b27..26fd2275c 100644 --- a/sdk/react-native/send-message.mdx +++ b/sdk/react-native/send-message.mdx @@ -1,15 +1,34 @@ --- title: "Send A Message" +description: "Send text, media, and custom messages to users and groups using the CometChat React Native SDK." --- + +**Quick Reference** - Send a text message: +```javascript +// Send text to a user +const textMessage = new CometChat.TextMessage("UID", "Hello!", CometChat.RECEIVER_TYPE.USER); +const sent = await CometChat.sendMessage(textMessage); + +// Send media to a group +const mediaMessage = new CometChat.MediaMessage("GUID", file, CometChat.MESSAGE_TYPE.IMAGE, CometChat.RECEIVER_TYPE.GROUP); +const sentMedia = await CometChat.sendMediaMessage(mediaMessage); +``` + + + +**Available via:** [SDK](/sdk/react-native/send-message) | [REST API](/rest-api/messages/send-message) | [UI Kits](/ui-kit/react-native/core-features#instant-messaging) + Using CometChat, you can send three types of messages: -1. [Text Message](/sdk/react-native/send-message#text-message) is the most common and standard message type. -2. [Media Message](/sdk/react-native/send-message#media-message), for sending photos, videos and files. -3. [custom message](/sdk/react-native/send-message#custom-message), for sending completely custom data using JSON structures. -4. [Interactive Message](/sdk/react-native/interactive-messages) for sending end-user interactive messages of type form, card and custom Interactive You can also send metadata along with a text, media or custom message. Think, for example, if you want to share the user's location with every message, you can use the metadata field. +1. [Text Message](#text-message) is the most common and standard message type. +2. [Media Message](#media-message), for sending photos, videos and files. +3. [Custom Message](#custom-message), for sending completely custom data using JSON structures. +4. [Interactive Message](/sdk/react-native/interactive-messages) for sending end-user interactive messages of type form, card and custom interactive. + +You can also send metadata along with a text, media or custom message. Think, for example, if you want to share the user's location with every message, you can use the metadata field. ## Text Message @@ -22,30 +41,26 @@ To send a text message to a single user or group, you need to use the `sendMessa To send custom data along with a text message, you can use the `setMetadata` method and pass a `JSON Object` to it. - -```javascript -let metadata = { - latitude: "50.6192171633316", - longitude: "-72.68182268750002", -}; - -textMessage.setMetadata(metadata); -``` - - - - -```typescript -let metadata: Object = { - latitude: "50.6192171633316", - longitude: "-72.68182268750002", -}; - -textMessage.setMetadata(metadata); -``` - - - + + ```javascript + let metadata = { + latitude: "50.6192171633316", + longitude: "-72.68182268750002", + }; + + textMessage.setMetadata(metadata); + ``` + + + ```typescript + let metadata: Object = { + latitude: "50.6192171633316", + longitude: "-72.68182268750002", + }; + + textMessage.setMetadata(metadata); + ``` + ### Add Tags @@ -53,121 +68,109 @@ textMessage.setMetadata(metadata); To add a tag to a message you can use the `setTags()` method of the TextMessage Class. The `setTags()` method accepts a list of tags. - -```javascript -let tags = ["starredMessage"]; - -textMessage.setTags(tags); -``` - - - - -```typescript -let tags: Array = ["starredMessage"]; - -textMessage.setTags(tags); -``` - - - + + ```javascript + let tags = ["starredMessage"]; + + textMessage.setTags(tags); + ``` + + + ```typescript + let tags: Array = ["starredMessage"]; + + textMessage.setTags(tags); + ``` + Once the text message object is ready, you need to use the `sendMessage()` method to send the text message to the recipient. - -```javascript -let receiverID = "UID"; -let messageText = "Hello world!"; -let receiverType = CometChat.RECEIVER_TYPE.USER; -let textMessage = new CometChat.TextMessage( - receiverID, - messageText, - receiverType -); - -CometChat.sendMessage(textMessage).then( - (message) => { - console.log("Message sent successfully:", message); - }, - (error) => { - console.log("Message sending failed with error:", error); - } -); -``` - - - - -```javascript -let receiverID = "GUID"; -let messageText = "Hello world!"; -let receiverType = CometChat.RECEIVER_TYPE.GROUP; -let textMessage = new CometChat.TextMessage( - receiverID, - messageText, - receiverType -); - -CometChat.sendMessage(textMessage).then( - (message) => { - console.log("Message sent successfully:", message); - }, - (error) => { - console.log("Message sending failed with error:", error); - } -); -``` - - - - -```typescript -let receiverID: string = "UID", - messageText: string = "Hello world!", - receiverType: string = CometChat.RECEIVER_TYPE.USER, - textMessage: CometChat.TextMessage = new CometChat.TextMessage( - receiverID, - messageText, - receiverType - ); - -CometChat.sendMessage(textMessage).then( - (message: CometChat.TextMessage) => { - console.log("Message sent successfully:", message); - }, - (error: CometChat.CometChatException) => { - console.log("Message sending failed with error:", error); - } -); -``` - - - - -```typescript -let receiverID: string = "GUID", - messageText: string = "Hello world!", - receiverType: string = CometChat.RECEIVER_TYPE.GROUP, - textMessage: CometChat.TextMessage = new CometChat.TextMessage( - receiverID, - messageText, - receiverType - ); - -CometChat.sendMessage(textMessage).then( - (message: CometChat.TextMessage) => { - console.log("Message sent successfully:", message); - }, - (error: CometChat.CometChatException) => { - console.log("Message sending failed with error:", error); - } -); -``` + + ```javascript + let receiverID = "UID"; + let messageText = "Hello world!"; + let receiverType = CometChat.RECEIVER_TYPE.USER; + let textMessage = new CometChat.TextMessage( + receiverID, + messageText, + receiverType + ); + + CometChat.sendMessage(textMessage).then( + (message) => { + console.log("Message sent successfully:", message); + }, + (error) => { + console.log("Message sending failed with error:", error); + } + ); + ``` + + + ```javascript + let receiverID = "GUID"; + let messageText = "Hello world!"; + let receiverType = CometChat.RECEIVER_TYPE.GROUP; + let textMessage = new CometChat.TextMessage( + receiverID, + messageText, + receiverType + ); + + CometChat.sendMessage(textMessage).then( + (message) => { + console.log("Message sent successfully:", message); + }, + (error) => { + console.log("Message sending failed with error:", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "UID", + messageText: string = "Hello world!", + receiverType: string = CometChat.RECEIVER_TYPE.USER, + textMessage: CometChat.TextMessage = new CometChat.TextMessage( + receiverID, + messageText, + receiverType + ); - + CometChat.sendMessage(textMessage).then( + (message: CometChat.TextMessage) => { + console.log("Message sent successfully:", message); + }, + (error: CometChat.CometChatException) => { + console.log("Message sending failed with error:", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "GUID", + messageText: string = "Hello world!", + receiverType: string = CometChat.RECEIVER_TYPE.GROUP, + textMessage: CometChat.TextMessage = new CometChat.TextMessage( + receiverID, + messageText, + receiverType + ); + CometChat.sendMessage(textMessage).then( + (message: CometChat.TextMessage) => { + console.log("Message sent successfully:", message); + }, + (error: CometChat.CometChatException) => { + console.log("Message sending failed with error:", error); + } + ); + ``` + The `TextMessage` class constructor takes the following parameters: @@ -185,122 +188,110 @@ When a text message is sent successfully, the response will include a `TextMessa To set a quoted message ID for a message, use the `setQuotedMessageId()` method of the TextMessage class. This method accepts the ID of the message to be quoted. - -```javascript -textMessage.setQuotedMessageId(10); -``` - - - - -```typescript -textMessage.setQuotedMessageId(10); -``` - - - + + ```javascript + textMessage.setQuotedMessageId(10); + ``` + + + ```typescript + textMessage.setQuotedMessageId(10); + ``` + Once the text message object is ready, you need to use the `sendMessage()` method to send the text message to the recipient. - -```javascript -let receiverID = "UID"; -let messageText = "Hello world!"; -let receiverType = CometChat.RECEIVER_TYPE.USER; -let textMessage = new CometChat.TextMessage( - receiverID, - messageText, - receiverType -); - -CometChat.sendMessage(textMessage).then( - (message) => { - console.log("Message sent successfully:", message); - }, - (error) => { - console.log("Message sending failed with error:", error); - } -); -``` - - - - -```javascript -let receiverID = "GUID"; -let messageText = "Hello world!"; -let receiverType = CometChat.RECEIVER_TYPE.GROUP; -let textMessage = new CometChat.TextMessage( - receiverID, - messageText, - receiverType -); - -CometChat.sendMessage(textMessage).then( - (message) => { - console.log("Message sent successfully:", message); - }, - (error) => { - console.log("Message sending failed with error:", error); - } -); -``` - - - - -```typescript -let receiverID: string = "UID", - messageText: string = "Hello world!", - receiverType: string = CometChat.RECEIVER_TYPE.USER, - textMessage: CometChat.TextMessage = new CometChat.TextMessage( - receiverID, - messageText, - receiverType - ); - -CometChat.sendMessage(textMessage).then( - (message: CometChat.TextMessage) => { - console.log("Message sent successfully:", message); - }, - (error: CometChat.CometChatException) => { - console.log("Message sending failed with error:", error); - } -); -``` - - - - -```typescript -let receiverID: string = "GUID", - messageText: string = "Hello world!", - receiverType: string = CometChat.RECEIVER_TYPE.GROUP, - textMessage: CometChat.TextMessage = new CometChat.TextMessage( - receiverID, - messageText, - receiverType - ); - -CometChat.sendMessage(textMessage).then( - (message: CometChat.TextMessage) => { - console.log("Message sent successfully:", message); - }, - (error: CometChat.CometChatException) => { - console.log("Message sending failed with error:", error); - } -); -``` + + ```javascript + let receiverID = "UID"; + let messageText = "Hello world!"; + let receiverType = CometChat.RECEIVER_TYPE.USER; + let textMessage = new CometChat.TextMessage( + receiverID, + messageText, + receiverType + ); + + CometChat.sendMessage(textMessage).then( + (message) => { + console.log("Message sent successfully:", message); + }, + (error) => { + console.log("Message sending failed with error:", error); + } + ); + ``` + + + ```javascript + let receiverID = "GUID"; + let messageText = "Hello world!"; + let receiverType = CometChat.RECEIVER_TYPE.GROUP; + let textMessage = new CometChat.TextMessage( + receiverID, + messageText, + receiverType + ); + + CometChat.sendMessage(textMessage).then( + (message) => { + console.log("Message sent successfully:", message); + }, + (error) => { + console.log("Message sending failed with error:", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "UID", + messageText: string = "Hello world!", + receiverType: string = CometChat.RECEIVER_TYPE.USER, + textMessage: CometChat.TextMessage = new CometChat.TextMessage( + receiverID, + messageText, + receiverType + ); - + CometChat.sendMessage(textMessage).then( + (message: CometChat.TextMessage) => { + console.log("Message sent successfully:", message); + }, + (error: CometChat.CometChatException) => { + console.log("Message sending failed with error:", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "GUID", + messageText: string = "Hello world!", + receiverType: string = CometChat.RECEIVER_TYPE.GROUP, + textMessage: CometChat.TextMessage = new CometChat.TextMessage( + receiverID, + messageText, + receiverType + ); + CometChat.sendMessage(textMessage).then( + (message: CometChat.TextMessage) => { + console.log("Message sent successfully:", message); + }, + (error: CometChat.CometChatException) => { + console.log("Message sending failed with error:", error); + } + ); + ``` + The `TextMessage` class constructor takes the following parameters: -| Parameter | Description | | +| Parameter | Description | Required | | ---------------- | -------------------------------------------------------------------------------------------- | -------- | | **receiverID** | `UID` of the user or `GUID` of the group receiving the message | Required | | **messageText** | The text message | Required | @@ -308,7 +299,6 @@ The `TextMessage` class constructor takes the following parameters: When a text message is sent successfully, the response will include a `TextMessage` object which includes all information related to the sent message. - ## Media Message *In other words, as a sender, how do I send a media message like photos, videos & files?* @@ -320,55 +310,47 @@ To send a media message to any user or group, you need to use the `sendMediaMess To send custom data along with a media message, you can use the `setMetadata` method and pass a `JSON Object` to it. - -```javascript -let metadata = { - latitude: "50.6192171633316", - longitude: "-72.68182268750002", -}; - -mediaMessage.setMetadata(metadata); -``` - - - - -```typescript -let metadata: Object = { - latitude: "50.6192171633316", - longitude: "-72.68182268750002", -}; - -mediaMessage.setMetadata(metadata); -``` - - - + + ```javascript + let metadata = { + latitude: "50.6192171633316", + longitude: "-72.68182268750002", + }; + + mediaMessage.setMetadata(metadata); + ``` + + + ```typescript + let metadata: Object = { + latitude: "50.6192171633316", + longitude: "-72.68182268750002", + }; + + mediaMessage.setMetadata(metadata); + ``` + -### Add Caption(Text along with Media Message) +### Add Caption (Text along with Media Message) To send a caption with a media message, you can use the `setCaption` method and pass text to it. - -```javascript -let tags = ["starredMessage"]; - -mediaMessage.setTags(tags); -``` - - - - -```typescript -let caption: string = "Random Caption"; - -mediaMessage.setCaption(caption); -``` - - - + + ```javascript + let caption = "Random Caption"; + + mediaMessage.setCaption(caption); + ``` + + + ```typescript + let caption: string = "Random Caption"; + + mediaMessage.setCaption(caption); + ``` + ### Add Tags @@ -376,34 +358,30 @@ mediaMessage.setCaption(caption); To add a tag to a message you can use the `setTags()` method of the MediaMessage Class. The `setTags()` method accepts a list of tags. - -```javascript -let tags = ["starredMessage"]; - -mediaMessage.setTags(tags); -``` - - - - -```typescript -let tags: Array = ["starredMessage"]; - -mediaMessage.setTags(tags); -``` - - - + + ```javascript + let tags = ["starredMessage"]; + + mediaMessage.setTags(tags); + ``` + + + ```typescript + let tags: Array = ["starredMessage"]; + + mediaMessage.setTags(tags); + ``` + There are 2 ways you can send Media Messages using the CometChat SDK: -1. **By providing the File:** You can directly share the file object while creating an object of the MediaMessage class. When the media message is sent using the `sendMediaMessage()` method, this file is then uploaded to CometChat servers and the URL of the file is sent in the success response of the `sendMediaMessage()` function. +### 1. By Providing the File -Getting file Object: You can use different React native packages for sending media messages. We demonstrate how to send images using CometChat. +You can directly share the file object while creating an object of the MediaMessage class. When the media message is sent using the `sendMediaMessage()` method, this file is then uploaded to CometChat servers and the URL of the file is sent in the success response of the `sendMediaMessage()` function. + +**Getting the file Object:** You can use different React Native packages for sending media messages. We demonstrate how to send images using CometChat. - - ```javascript ImagePicker.showImagePicker(options, (response) => { if (response.didCancel) { @@ -434,107 +412,95 @@ if (response.didCancel) { } ``` - - - - - -```javascript -let receiverID = "UID"; -let messageType = CometChat.MESSAGE_TYPE.FILE; -let receiverType = CometChat.RECEIVER_TYPE.USER; -let mediaMessage = new CometChat.MediaMessage( - receiverID, - this.state.mediaMsg, - messageType, - receiverType -); - -CometChat.sendMediaMessage(mediaMessage).then( - (message) => { - console.log("Media message sent successfully", message); - }, - (error) => { - console.log("Media message sending failed with error", error); - } -); -``` - - - - -```javascript -let receiverID = "GUID"; -let messageType = CometChat.MESSAGE_TYPE.FILE; -let receiverType = CometChat.RECEIVER_TYPE.GROUP; -let mediaMessage = new CometChat.MediaMessage( - receiverID, - this.state.mediaMsg, - messageType, - receiverType -); - -CometChat.sendMediaMessage(mediaMessage).then( - (message) => { - console.log("Media message sent successfully", message); - }, - (error) => { - console.log("Media message sending failed with error", error); - } -); -``` - - - - -```typescript -let receiverID: string = "UID", - messageType: string = CometChat.MESSAGE_TYPE.FILE, - receiverType: string = CometChat.RECEIVER_TYPE.USER, - mediaMessage: CometChat.MediaMessage = new CometChat.MediaMessage( - receiverID, - this.state.mediaMsg, - messageType, - receiverType - ); - -CometChat.sendMediaMessage(mediaMessage).then( - (message: CometChat.MediaMessage) => { - console.log("Media message sent successfully", message); - }, - (error: CometChat.CometChatException) => { - console.log("Media message sending failed with error", error); - } -); -``` - - - - -```typescript -let receiverID: string = "GUID", - messageType: string = CometChat.MESSAGE_TYPE.FILE, - receiverType: string = CometChat.RECEIVER_TYPE.GROUP, - mediaMessage: CometChat.MediaMessage = new CometChat.MediaMessage( - receiverID, - this.state.mediaMsg, - messageType, - receiverType - ); - -CometChat.sendMediaMessage(mediaMessage).then( - (message: CometChat.MediaMessage) => { - console.log("Media message sent successfully", message); - }, - (error: CometChat.CometChatException) => { - console.log("Media message sending failed with error", error); - } -); -``` + + ```javascript + let receiverID = "UID"; + let messageType = CometChat.MESSAGE_TYPE.FILE; + let receiverType = CometChat.RECEIVER_TYPE.USER; + let mediaMessage = new CometChat.MediaMessage( + receiverID, + this.state.mediaMsg, + messageType, + receiverType + ); + + CometChat.sendMediaMessage(mediaMessage).then( + (message) => { + console.log("Media message sent successfully", message); + }, + (error) => { + console.log("Media message sending failed with error", error); + } + ); + ``` + + + ```javascript + let receiverID = "GUID"; + let messageType = CometChat.MESSAGE_TYPE.FILE; + let receiverType = CometChat.RECEIVER_TYPE.GROUP; + let mediaMessage = new CometChat.MediaMessage( + receiverID, + this.state.mediaMsg, + messageType, + receiverType + ); + + CometChat.sendMediaMessage(mediaMessage).then( + (message) => { + console.log("Media message sent successfully", message); + }, + (error) => { + console.log("Media message sending failed with error", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "UID", + messageType: string = CometChat.MESSAGE_TYPE.FILE, + receiverType: string = CometChat.RECEIVER_TYPE.USER, + mediaMessage: CometChat.MediaMessage = new CometChat.MediaMessage( + receiverID, + this.state.mediaMsg, + messageType, + receiverType + ); - + CometChat.sendMediaMessage(mediaMessage).then( + (message: CometChat.MediaMessage) => { + console.log("Media message sent successfully", message); + }, + (error: CometChat.CometChatException) => { + console.log("Media message sending failed with error", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "GUID", + messageType: string = CometChat.MESSAGE_TYPE.FILE, + receiverType: string = CometChat.RECEIVER_TYPE.GROUP, + mediaMessage: CometChat.MediaMessage = new CometChat.MediaMessage( + receiverID, + this.state.mediaMsg, + messageType, + receiverType + ); + CometChat.sendMediaMessage(mediaMessage).then( + (message: CometChat.MediaMessage) => { + console.log("Media message sent successfully", message); + }, + (error: CometChat.CometChatException) => { + console.log("Media message sending failed with error", error); + } + ); + ``` + The `MediaMessage` class constructor takes the following parameters: @@ -546,149 +512,139 @@ The `MediaMessage` class constructor takes the following parameters: | **messageType** | The type of the message that needs to be sent which in this case can be:
1.`CometChat.MESSAGE_TYPE.IMAGE`
2.`CometChat.MESSAGE_TYPE.VIDEO`
3.`CometChat.MESSAGE_TYPE.AUDIO`
4.`CometChat.MESSAGE_TYPE.FILE` | YES | | **receiverType** | The type of the receiver to whom the message is to be sent.
`1. CometChat.RECEIVER_TYPE.USER`
`2. CometChat.RECEIVER_TYPE.GROUP` | YES | -2. **By providing the URL of the File:** The second way to send media messages using the CometChat SDK is to provide the SDK with the URL of any file that is hosted on your servers or any cloud storage. To achieve this you will have to make use of the Attachment class. For more information, you can refer to the below code snippet: - - - -```javascript -let receiverID = "cometchat-uid-2"; -let messageType = CometChat.MESSAGE_TYPE.IMAGE; -let receiverType = CometChat.RECEIVER_TYPE.USER; -let mediaMessage = new CometChat.MediaMessage( - receiverID, - "", - messageType, - receiverType -); - -let file = { - name: "mario", - extension: "png", - mimeType: "image/png", - url: "https://pngimg.com/uploads/mario/mario_PNG125.png", -}; - -let attachment = new CometChat.Attachment(file); - -mediaMessage.setAttachment(attachment); - -CometChat.sendMediaMessage(mediaMessage).then( - (mediaMessage) => { - console.log("message", mediaMessage); - }, - (error) => { - console.log("error in sending message", error); - } -); -``` - - - - -```javascript -let receiverID = "cometchat-guid-1"; -let messageType = CometChat.MESSAGE_TYPE.IMAGE; -let receiverType = CometChat.RECEIVER_TYPE.GROUP; -let mediaMessage = new CometChat.MediaMessage( - receiverID, - "", - messageType, - receiverType -); - -let file = { - name: "mario", - extension: "png", - mimeType: "image/png", - url: "https://pngimg.com/uploads/mario/mario_PNG125.png", -}; - -let attachment = new CometChat.Attachment(file); - -mediaMessage.setAttachment(attachment); - -CometChat.sendMediaMessage(mediaMessage).then( - (mediaMessage) => { - console.log("message", mediaMessage); - }, - (error) => { - console.log("error in sending message", error); - } -); -``` - - - - -```typescript -let receiverID: string = "cometchat-uid-2", - messageType: string = CometChat.MESSAGE_TYPE.IMAGE, - receiverType: string = CometChat.RECEIVER_TYPE.USER, - mediaMessage: CometChat.MediaMessage = new CometChat.MediaMessage( - receiverID, - "", - messageType, - receiverType - ); - -let file: Object = { - name: "mario", - extension: "png", - mimeType: "image/png", - url: "https://pngimg.com/uploads/mario/mario_PNG125.png", -}; - -let attachment: CometChat.Attachment = new CometChat.Attachment(file); - -mediaMessage.setAttachment(attachment); - -CometChat.sendMediaMessage(mediaMessage).then( - (mediaMessage: CometChat.MediaMessage) => { - console.log("message", mediaMessage); - }, - (error: CometChat.CometChatException) => { - console.log("error in sending message", error); - } -); -``` - - - - -```typescript -let receiverID: string = "cometchat-guid-1", - messageType: string = CometChat.MESSAGE_TYPE.IMAGE, - receiverType: string = CometChat.RECEIVER_TYPE.GROUP, - mediaMessage: CometChat.MediaMessage = new CometChat.MediaMessage( - receiverID, - "", - messageType, - receiverType - ); - -let file: Object = { - name: "mario", - extension: "png", - mimeType: "image/png", - url: "https://pngimg.com/uploads/mario/mario_PNG125.png", -}; +### 2. By Providing the URL of the File -let attachment: CometChat.Attachment = new CometChat.Attachment(file); +The second way to send media messages using the CometChat SDK is to provide the SDK with the URL of any file that is hosted on your servers or any cloud storage. To achieve this you will have to make use of the Attachment class. For more information, you can refer to the below code snippet: -mediaMessage.setAttachment(attachment); - -CometChat.sendMediaMessage(mediaMessage).then( - (mediaMessage: CometChat.MediaMessage) => { - console.log("message", mediaMessage); - }, - (error: CometChat.CometChatException) => { - console.log("error in sending message", error); - } -); -``` + + + ```javascript + let receiverID = "cometchat-uid-2"; + let messageType = CometChat.MESSAGE_TYPE.IMAGE; + let receiverType = CometChat.RECEIVER_TYPE.USER; + let mediaMessage = new CometChat.MediaMessage( + receiverID, + "", + messageType, + receiverType + ); + + let file = { + name: "mario", + extension: "png", + mimeType: "image/png", + url: "https://pngimg.com/uploads/mario/mario_PNG125.png", + }; + + let attachment = new CometChat.Attachment(file); + mediaMessage.setAttachment(attachment); + + CometChat.sendMediaMessage(mediaMessage).then( + (mediaMessage) => { + console.log("message", mediaMessage); + }, + (error) => { + console.log("error in sending message", error); + } + ); + ``` + + + ```javascript + let receiverID = "cometchat-guid-1"; + let messageType = CometChat.MESSAGE_TYPE.IMAGE; + let receiverType = CometChat.RECEIVER_TYPE.GROUP; + let mediaMessage = new CometChat.MediaMessage( + receiverID, + "", + messageType, + receiverType + ); + + let file = { + name: "mario", + extension: "png", + mimeType: "image/png", + url: "https://pngimg.com/uploads/mario/mario_PNG125.png", + }; + + let attachment = new CometChat.Attachment(file); + mediaMessage.setAttachment(attachment); + + CometChat.sendMediaMessage(mediaMessage).then( + (mediaMessage) => { + console.log("message", mediaMessage); + }, + (error) => { + console.log("error in sending message", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "cometchat-uid-2", + messageType: string = CometChat.MESSAGE_TYPE.IMAGE, + receiverType: string = CometChat.RECEIVER_TYPE.USER, + mediaMessage: CometChat.MediaMessage = new CometChat.MediaMessage( + receiverID, + "", + messageType, + receiverType + ); - + let file: Object = { + name: "mario", + extension: "png", + mimeType: "image/png", + url: "https://pngimg.com/uploads/mario/mario_PNG125.png", + }; + + let attachment: CometChat.Attachment = new CometChat.Attachment(file); + mediaMessage.setAttachment(attachment); + + CometChat.sendMediaMessage(mediaMessage).then( + (mediaMessage: CometChat.MediaMessage) => { + console.log("message", mediaMessage); + }, + (error: CometChat.CometChatException) => { + console.log("error in sending message", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "cometchat-guid-1", + messageType: string = CometChat.MESSAGE_TYPE.IMAGE, + receiverType: string = CometChat.RECEIVER_TYPE.GROUP, + mediaMessage: CometChat.MediaMessage = new CometChat.MediaMessage( + receiverID, + "", + messageType, + receiverType + ); + let file: Object = { + name: "mario", + extension: "png", + mimeType: "image/png", + url: "https://pngimg.com/uploads/mario/mario_PNG125.png", + }; + + let attachment: CometChat.Attachment = new CometChat.Attachment(file); + mediaMessage.setAttachment(attachment); + + CometChat.sendMediaMessage(mediaMessage).then( + (mediaMessage: CometChat.MediaMessage) => { + console.log("message", mediaMessage); + }, + (error: CometChat.CometChatException) => { + console.log("error in sending message", error); + } + ); + ``` + When a media message is sent successfully, the response will include a `MediaMessage` object which includes all information related to the sent message. @@ -697,15 +653,15 @@ When a media message is sent successfully, the response will include a `MediaMes Starting version 3.0.9 & above the SDK supports sending multiple attachments in a single media message. As in the case of a single attachment in a media message, there are two ways you can send Media Messages using the CometChat SDK: -1. **By providing an array of files:** You can now share an array of files while creating an object of the MediaMessage class. When the media message is sent using the `sendMediaMessage()` method, the files are uploaded to the CometChat servers & the URL of the files is sent in the success response of the `sendMediaMessage()` method. +### 1. By Providing an Array of Files -Getting the file Object: You can use different React native packages for sending media messages. We demonstrate how to send images using CometChat. +You can now share an array of files while creating an object of the MediaMessage class. When the media message is sent using the `sendMediaMessage()` method, the files are uploaded to the CometChat servers & the URL of the files is sent in the success response of the `sendMediaMessage()` method. + +**Getting the file Object:** You can use different React Native packages for sending media messages. We demonstrate how to send images using CometChat. - - ```javascript let options = { - selectionLimit: 0 + selectionLimit: 0 }; ImagePicker.showImagePicker(options, (response) => { if (response.didCancel) { @@ -758,297 +714,279 @@ if (response.didCancel) { } ``` - - - - - -```javascript -let receiverID = "UID"; -let messageType = CometChat.MESSAGE_TYPE.FILE; -let receiverType = CometChat.RECEIVER_TYPE.USER; -let mediaMessage = new CometChat.MediaMessage( - receiverID, - files, - messageType, - receiverType -); - -CometChat.sendMediaMessage(mediaMessage).then( - (message) => { - console.log("Media message sent successfully", message); - }, - (error) => { - console.log("Media message sending failed with error", error); - } -); -``` - - - - -```javascript -let receiverID = "GUID"; -let messageType = CometChat.MESSAGE_TYPE.FILE; -let receiverType = CometChat.RECEIVER_TYPE.GROUP; -let mediaMessage = new CometChat.MediaMessage( - receiverID, - this.state.mediaMsg, - messageType, - receiverType -); - -CometChat.sendMediaMessage(mediaMessage).then( - (message) => { - console.log("Media message sent successfully", message); - }, - (error) => { - console.log("Media message sending failed with error", error); - } -); -``` - - - - -```typescript -let receiverID: string = "UID", - messageType: string = CometChat.MESSAGE_TYPE.FILE, - receiverType: string = CometChat.RECEIVER_TYPE.USER, - mediaMessage: CometChat.MediaMessage = new CometChat.MediaMessage( - receiverID, - this.state.mediaMsg, - messageType, - receiverType - ); - -CometChat.sendMediaMessage(mediaMessage).then( - (message: CometChat.MediaMessage) => { - console.log("Media message sent successfully", message); - }, - (error: CometChat.CometChatException) => { - console.log("Media message sending failed with error", error); - } -); -``` - - - - -```typescript -let receiverID: string = "GUID", - messageType: string = CometChat.MESSAGE_TYPE.FILE, - receiverType: string = CometChat.RECEIVER_TYPE.GROUP, - mediaMessage: CometChat.MediaMessage = new CometChat.MediaMessage( - receiverID, - this.state.mediaMsg, - messageType, - receiverType - ); - -CometChat.sendMediaMessage(mediaMessage).then( - (message: CometChat.MediaMessage) => { - console.log("Media message sent successfully", message); - }, - (error: CometChat.CometChatException) => { - console.log("Media message sending failed with error", error); - } -); -``` + + ```javascript + let receiverID = "UID"; + let messageType = CometChat.MESSAGE_TYPE.FILE; + let receiverType = CometChat.RECEIVER_TYPE.USER; + let mediaMessage = new CometChat.MediaMessage( + receiverID, + files, + messageType, + receiverType + ); + + CometChat.sendMediaMessage(mediaMessage).then( + (message) => { + console.log("Media message sent successfully", message); + }, + (error) => { + console.log("Media message sending failed with error", error); + } + ); + ``` + + + ```javascript + let receiverID = "GUID"; + let messageType = CometChat.MESSAGE_TYPE.FILE; + let receiverType = CometChat.RECEIVER_TYPE.GROUP; + let mediaMessage = new CometChat.MediaMessage( + receiverID, + this.state.mediaMsg, + messageType, + receiverType + ); + + CometChat.sendMediaMessage(mediaMessage).then( + (message) => { + console.log("Media message sent successfully", message); + }, + (error) => { + console.log("Media message sending failed with error", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "UID", + messageType: string = CometChat.MESSAGE_TYPE.FILE, + receiverType: string = CometChat.RECEIVER_TYPE.USER, + mediaMessage: CometChat.MediaMessage = new CometChat.MediaMessage( + receiverID, + this.state.mediaMsg, + messageType, + receiverType + ); - + CometChat.sendMediaMessage(mediaMessage).then( + (message: CometChat.MediaMessage) => { + console.log("Media message sent successfully", message); + }, + (error: CometChat.CometChatException) => { + console.log("Media message sending failed with error", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "GUID", + messageType: string = CometChat.MESSAGE_TYPE.FILE, + receiverType: string = CometChat.RECEIVER_TYPE.GROUP, + mediaMessage: CometChat.MediaMessage = new CometChat.MediaMessage( + receiverID, + this.state.mediaMsg, + messageType, + receiverType + ); + CometChat.sendMediaMessage(mediaMessage).then( + (message: CometChat.MediaMessage) => { + console.log("Media message sent successfully", message); + }, + (error: CometChat.CometChatException) => { + console.log("Media message sending failed with error", error); + } + ); + ``` + The `MediaMessage` class constructor takes the following parameters: -| | | +| Parameter | Description | | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **receiverId** | The `UID` or `GUID` of the recipient. | | **files** | An array of files. | | **messageType** | The type of the message that needs to be sent which in this case can be:
1.`CometChat.MESSAGE_TYPE.IMAGE`
2.`CometChat.MESSAGE_TYPE.VIDEO`
3.`CometChat.MESSAGE_TYPE.AUDIO`
4.`CometChat.MESSAGE_TYPE.FILE` | | **receiverType** | The type of the receiver to whom the message is to be sent.
`1. CometChat.RECEIVER_TYPE.USER`
`2. CometChat.RECEIVER_TYPE.GROUP` | -2. **By providing the URL of the multiple files:** The second way to send multiple attachments in a single media message using the CometChat SDK is to provide the SDK with the URL of multiple files that are hosted on your servers or any cloud storage. To achieve this you will have to make use of the Attachment class. For more information, you can refer to the below code snippet: - - - -```javascript -let receiverID = "cometchat-uid-2"; -let messageType = CometChat.MESSAGE_TYPE.IMAGE; -let receiverType = CometChat.RECEIVER_TYPE.USER; -let mediaMessage = new CometChat.MediaMessage( - receiverID, - "", - messageType, - receiverType -); - -let attachment1 = { - name: "mario", - extension: "png", - mimeType: "image/png", - url: "https://pngimg.com/uploads/mario/mario_PNG125.png", -}; - -let attachment2 = { - name: "jaguar", - extension: "png", - mimeType: "image/png", - url: "https://pngimg.com/uploads/jaguar/jaguar_PNG20759.png", -}; - -let attachments = []; -attachments.push(new CometChat.Attachment(attachment1)); -attachments.push(new CometChat.Attachment(attachment2)); - -mediaMessage.setAttachments(attachments); - -CometChat.sendMediaMessage(mediaMessage).then( - (mediaMessage) => { - console.log("message", mediaMessage); - }, - (error) => { - console.log("error in sending message", error); - } -); -``` - - - - -```javascript -let receiverID = "cometchat-guid-1"; -let messageType = CometChat.MESSAGE_TYPE.IMAGE; -let receiverType = CometChat.RECEIVER_TYPE.GROUP; -let mediaMessage = new CometChat.MediaMessage( - receiverID, - "", - messageType, - receiverType -); - -let attachment1 = { - name: "mario", - extension: "png", - mimeType: "image/png", - url: "https://pngimg.com/uploads/mario/mario_PNG125.png", -}; - -let attachment2 = { - name: "jaguar", - extension: "png", - mimeType: "image/png", - url: "https://pngimg.com/uploads/jaguar/jaguar_PNG20759.png", -}; - -let attachments = []; -attachments.push(new CometChat.Attachment(attachment1)); -attachments.push(new CometChat.Attachment(attachment2)); - -mediaMessage.setAttachments(attachments); - -CometChat.sendMediaMessage(mediaMessage).then( - (mediaMessage) => { - console.log("message", mediaMessage); - }, - (error) => { - console.log("error in sending message", error); - } -); -``` - - - - -```typescript -let receiverID: string = "cometchat-uid-2", - messageType: string = CometChat.MESSAGE_TYPE.IMAGE, - receiverType: string = CometChat.RECEIVER_TYPE.USER, - mediaMessage: CometChat.MediaMessage = new CometChat.MediaMessage( - receiverID, - "", - messageType, - receiverType - ); - -let attachment1: Object = { - name: "mario", - extension: "png", - mimeType: "image/png", - url: "https://pngimg.com/uploads/mario/mario_PNG125.png", -}; - -let attachment2: Object = { - name: "jaguar", - extension: "png", - mimeType: "image/png", - url: "https://pngimg.com/uploads/jaguar/jaguar_PNG20759.png", -}; - -let attachments: Array = []; -attachments.push(new CometChat.Attachment(attachment1)); -attachments.push(new CometChat.Attachment(attachment2)); +### 2. By Providing the URL of Multiple Files -mediaMessage.setAttachments(attachments); +The second way to send multiple attachments in a single media message using the CometChat SDK is to provide the SDK with the URL of multiple files that are hosted on your servers or any cloud storage. To achieve this you will have to make use of the Attachment class. For more information, you can refer to the below code snippet: -CometChat.sendMediaMessage(mediaMessage).then( - (mediaMessage: CometChat.MediaMessage) => { - console.log("message", mediaMessage); - }, - (error: CometChat.CometChatException) => { - console.log("error in sending message", error); - } -); -``` - - - - -```typescript -let receiverID: string = "cometchat-guid-1", - messageType: string = CometChat.MESSAGE_TYPE.IMAGE, - receiverType: string = CometChat.RECEIVER_TYPE.GROUP, - mediaMessage: CometChat.MediaMessage = new CometChat.MediaMessage( - receiverID, - "", - messageType, - receiverType - ); - -let attachment1: Object = { - name: "mario", - extension: "png", - mimeType: "image/png", - url: "https://pngimg.com/uploads/mario/mario_PNG125.png", -}; - -let attachment2: Object = { - name: "jaguar", - extension: "png", - mimeType: "image/png", - url: "https://pngimg.com/uploads/jaguar/jaguar_PNG20759.png", -}; - -let attachments: Array = []; -attachments.push(new CometChat.Attachment(attachment1)); -attachments.push(new CometChat.Attachment(attachment2)); - -mediaMessage.setAttachments(attachments); - -CometChat.sendMediaMessage(mediaMessage).then( - (mediaMessage: CometChat.MediaMessage) => { - console.log("message", mediaMessage); - }, - (error: CometChat.CometChatException) => { - console.log("error in sending message", error); - } -); -``` + + + ```javascript + let receiverID = "cometchat-uid-2"; + let messageType = CometChat.MESSAGE_TYPE.IMAGE; + let receiverType = CometChat.RECEIVER_TYPE.USER; + let mediaMessage = new CometChat.MediaMessage( + receiverID, + "", + messageType, + receiverType + ); + + let attachment1 = { + name: "mario", + extension: "png", + mimeType: "image/png", + url: "https://pngimg.com/uploads/mario/mario_PNG125.png", + }; + + let attachment2 = { + name: "jaguar", + extension: "png", + mimeType: "image/png", + url: "https://pngimg.com/uploads/jaguar/jaguar_PNG20759.png", + }; + + let attachments = []; + attachments.push(new CometChat.Attachment(attachment1)); + attachments.push(new CometChat.Attachment(attachment2)); + + mediaMessage.setAttachments(attachments); + + CometChat.sendMediaMessage(mediaMessage).then( + (mediaMessage) => { + console.log("message", mediaMessage); + }, + (error) => { + console.log("error in sending message", error); + } + ); + ``` + + + ```javascript + let receiverID = "cometchat-guid-1"; + let messageType = CometChat.MESSAGE_TYPE.IMAGE; + let receiverType = CometChat.RECEIVER_TYPE.GROUP; + let mediaMessage = new CometChat.MediaMessage( + receiverID, + "", + messageType, + receiverType + ); + + let attachment1 = { + name: "mario", + extension: "png", + mimeType: "image/png", + url: "https://pngimg.com/uploads/mario/mario_PNG125.png", + }; + + let attachment2 = { + name: "jaguar", + extension: "png", + mimeType: "image/png", + url: "https://pngimg.com/uploads/jaguar/jaguar_PNG20759.png", + }; + + let attachments = []; + attachments.push(new CometChat.Attachment(attachment1)); + attachments.push(new CometChat.Attachment(attachment2)); + + mediaMessage.setAttachments(attachments); + + CometChat.sendMediaMessage(mediaMessage).then( + (mediaMessage) => { + console.log("message", mediaMessage); + }, + (error) => { + console.log("error in sending message", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "cometchat-uid-2", + messageType: string = CometChat.MESSAGE_TYPE.IMAGE, + receiverType: string = CometChat.RECEIVER_TYPE.USER, + mediaMessage: CometChat.MediaMessage = new CometChat.MediaMessage( + receiverID, + "", + messageType, + receiverType + ); - + let attachment1: Object = { + name: "mario", + extension: "png", + mimeType: "image/png", + url: "https://pngimg.com/uploads/mario/mario_PNG125.png", + }; + + let attachment2: Object = { + name: "jaguar", + extension: "png", + mimeType: "image/png", + url: "https://pngimg.com/uploads/jaguar/jaguar_PNG20759.png", + }; + + let attachments: Array = []; + attachments.push(new CometChat.Attachment(attachment1)); + attachments.push(new CometChat.Attachment(attachment2)); + + mediaMessage.setAttachments(attachments); + + CometChat.sendMediaMessage(mediaMessage).then( + (mediaMessage: CometChat.MediaMessage) => { + console.log("message", mediaMessage); + }, + (error: CometChat.CometChatException) => { + console.log("error in sending message", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "cometchat-guid-1", + messageType: string = CometChat.MESSAGE_TYPE.IMAGE, + receiverType: string = CometChat.RECEIVER_TYPE.GROUP, + mediaMessage: CometChat.MediaMessage = new CometChat.MediaMessage( + receiverID, + "", + messageType, + receiverType + ); + let attachment1: Object = { + name: "mario", + extension: "png", + mimeType: "image/png", + url: "https://pngimg.com/uploads/mario/mario_PNG125.png", + }; + + let attachment2: Object = { + name: "jaguar", + extension: "png", + mimeType: "image/png", + url: "https://pngimg.com/uploads/jaguar/jaguar_PNG20759.png", + }; + + let attachments: Array = []; + attachments.push(new CometChat.Attachment(attachment1)); + attachments.push(new CometChat.Attachment(attachment2)); + + mediaMessage.setAttachments(attachments); + + CometChat.sendMediaMessage(mediaMessage).then( + (mediaMessage: CometChat.MediaMessage) => { + console.log("message", mediaMessage); + }, + (error: CometChat.CometChatException) => { + console.log("error in sending message", error); + } + ); + ``` + When a media message is sent successfully, the response will include a `MediaMessage` object which includes all information related to the sent message. @@ -1061,45 +999,41 @@ You can use the `setMetadata()`, `setCaption()` & `setTags()` methods to add met CometChat allows you to send custom messages which are neither text nor media messages. -In order to send a custom message, you need to use the `sendCustomMessage()` method. - -The `sendCustomMessage()` method takes an object of the `CustomMessage` which can be obtained using the below constructor. +In order to send a custom message, you need to use the `sendCustomMessage()` method. The `sendCustomMessage()` method takes an object of the `CustomMessage` which can be obtained using the below constructor. - -```javascript -let customMessage = new CometChat.CustomMessage( - receiverID, - receiverType, - customType, - customData -); -``` - - - - -```javascript -let customMessage: CometChat.CustomMessage = new CometChat.CustomMessage( - receiverID, - receiverType, - customType, - customData -); -``` - - - + + ```javascript + let customMessage = new CometChat.CustomMessage( + receiverID, + receiverType, + customType, + customData + ); + ``` + + + ```typescript + let customMessage: CometChat.CustomMessage = new CometChat.CustomMessage( + receiverID, + receiverType, + customType, + customData + ); + ``` + -The above constructor, helps you create a custom message with the message type set to whatever is passed to the constructor and the category set to `custom`. +The above constructor helps you create a custom message with the message type set to whatever is passed to the constructor and the category set to `custom`. The parameters involved are: -1. `receiverId` - The unique ID of the user or group to which the message is to be sent. -2. `receiverType` - Type of the receiver i.e user or group -3. `customType` - custom message type that you need to set -4. `customData` - The data to be passed as the message in the form of a JSON Object. +| Parameter | Description | +| -------------- | ------------------------------------------------------------------------------ | +| `receiverId` | The unique ID of the user or group to which the message is to be sent | +| `receiverType` | Type of the receiver i.e user or group | +| `customType` | Custom message type that you need to set | +| `customData` | The data to be passed as the message in the form of a JSON Object | You can also use the subType field of the `CustomMessage` class to set a specific type for the custom message. This can be achieved using the `setSubtype()` method. @@ -1108,141 +1042,129 @@ You can also use the subType field of the `CustomMessage` class to set a specifi To add a tag to a message you can use the `setTags()` method of the CustomMessage Class. The `setTags()` method accepts a list of tags. - -```javascript -let tags = ["starredMessage"]; - -customMessage.setTags(tags); -``` - - - - -```typescript -let tags: Array = ["starredMessage"]; - -customMessage.setTags(tags); -``` - - - + + ```javascript + let tags = ["starredMessage"]; + + customMessage.setTags(tags); + ``` + + + ```typescript + let tags: Array = ["starredMessage"]; + + customMessage.setTags(tags); + ``` + Once the object of `CustomMessage` class is ready you can send the custom message using the `sendCustomMessage()` method. - -```javascript -let receiverID = "UID"; -let customData = { - latitude: "50.6192171633316", - longitude: "-72.68182268750002", -}; -let customType = "location"; -let receiverType = CometChat.RECEIVER_TYPE.USER; -let customMessage = new CometChat.CustomMessage( - receiverID, - receiverType, - customType, - customData -); - -CometChat.sendCustomMessage(customMessage).then( - (message) => { - console.log("custom message sent successfully", message); - }, - (error) => { - console.log("custom message sending failed with error", error); - } -); -``` - - - - -```javascript -let receiverID = "GUID"; -let customData = { - latitude: "50.6192171633316", - longitude: "-72.68182268750002", -}; -let customType = "location"; -let receiverType = CometChat.RECEIVER_TYPE.GROUP; -let customMessage = new CometChat.CustomMessage( - receiverID, - receiverType, - customType, - customData -); - -CometChat.sendCustomMessage(customMessage).then( - (message) => { - console.log("custom message sent successfully", message); - }, - (error) => { - console.log("custom message sending failed with error", error); - } -); -``` - - - - -```typescript -let receiverID: string = "UID", - customData: Object = { - latitude: "50.6192171633316", - longitude: "-72.68182268750002", - }, - customType: string = "location", - receiverType: string = CometChat.RECEIVER_TYPE.USER, - customMessage: CometChat.CustomMessage = new CometChat.CustomMessage( - receiverID, - receiverType, - customType, - customData - ); - -CometChat.sendCustomMessage(customMessage).then( - (message: CometChat.CustomMessage) => { - console.log("custom message sent successfully", message); - }, - (error: CometChat.CometChatException) => { - console.log("custom message sending failed with error", error); - } -); -``` - - - - -```typescript -let receiverID: string = "GUID", - customData: Object = { - latitude: "50.6192171633316", - longitude: "-72.68182268750002", - }, - customType: string = "location", - receiverType: string = CometChat.RECEIVER_TYPE.GROUP, - customMessage: CometChat.CustomMessage = new CometChat.CustomMessage( - receiverID, - receiverType, - customType, - customData - ); - -CometChat.sendCustomMessage(customMessage).then( - (message: CometChat.CustomMessage) => { - console.log("custom message sent successfully", message); - }, - (error: CometChat.CometChatException) => { - console.log("custom message sending failed with error", error); - } -); -``` + + ```javascript + let receiverID = "UID"; + let customData = { + latitude: "50.6192171633316", + longitude: "-72.68182268750002", + }; + let customType = "location"; + let receiverType = CometChat.RECEIVER_TYPE.USER; + let customMessage = new CometChat.CustomMessage( + receiverID, + receiverType, + customType, + customData + ); + + CometChat.sendCustomMessage(customMessage).then( + (message) => { + console.log("custom message sent successfully", message); + }, + (error) => { + console.log("custom message sending failed with error", error); + } + ); + ``` + + + ```javascript + let receiverID = "GUID"; + let customData = { + latitude: "50.6192171633316", + longitude: "-72.68182268750002", + }; + let customType = "location"; + let receiverType = CometChat.RECEIVER_TYPE.GROUP; + let customMessage = new CometChat.CustomMessage( + receiverID, + receiverType, + customType, + customData + ); + + CometChat.sendCustomMessage(customMessage).then( + (message) => { + console.log("custom message sent successfully", message); + }, + (error) => { + console.log("custom message sending failed with error", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "UID", + customData: Object = { + latitude: "50.6192171633316", + longitude: "-72.68182268750002", + }, + customType: string = "location", + receiverType: string = CometChat.RECEIVER_TYPE.USER, + customMessage: CometChat.CustomMessage = new CometChat.CustomMessage( + receiverID, + receiverType, + customType, + customData + ); - + CometChat.sendCustomMessage(customMessage).then( + (message: CometChat.CustomMessage) => { + console.log("custom message sent successfully", message); + }, + (error: CometChat.CometChatException) => { + console.log("custom message sending failed with error", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "GUID", + customData: Object = { + latitude: "50.6192171633316", + longitude: "-72.68182268750002", + }, + customType: string = "location", + receiverType: string = CometChat.RECEIVER_TYPE.GROUP, + customMessage: CometChat.CustomMessage = new CometChat.CustomMessage( + receiverID, + receiverType, + customType, + customData + ); + CometChat.sendCustomMessage(customMessage).then( + (message: CometChat.CustomMessage) => { + console.log("custom message sent successfully", message); + }, + (error: CometChat.CometChatException) => { + console.log("custom message sending failed with error", error); + } + ); + ``` + The above sample explains how custom messages can be used to share the location with a user. The same can be achieved for groups. @@ -1256,251 +1178,266 @@ On success, you will receive an object of the `CustomMessage` class. By default, a custom message will update the last message of a conversation. If you wish to not update the last message of the conversation when a custom message is sent, please use `shouldUpdateConversation(value: boolean)` method of the Custom Message. - -```javascript -let receiverID = "UID"; -let customData = { - latitude: "50.6192171633316", - longitude: "-72.68182268750002", -}; -let customType = "location"; -let receiverType = CometChat.RECEIVER_TYPE.USER; -let customMessage = new CometChat.CustomMessage( - receiverID, - receiverType, - customType, - customData -); - -customMessage.shouldUpdateConversation(false); -CometChat.sendCustomMessage(customMessage).then( - (message) => { - console.log("custom message sent successfully", message); - }, - (error) => { - console.log("custom message sending failed with error", error); - } -); -``` - - - - -```javascript -let receiverID = "GUID"; -let customData = { - latitude: "50.6192171633316", - longitude: "-72.68182268750002", -}; -let customType = "location"; -let receiverType = CometChat.RECEIVER_TYPE.GROUP; -let customMessage = new CometChat.CustomMessage( - receiverID, - receiverType, - customType, - customData -); - -customMessage.shouldUpdateConversation(false); -CometChat.sendCustomMessage(customMessage).then( - (message) => { - console.log("custom message sent successfully", message); - }, - (error) => { - console.log("custom message sending failed with error", error); - } -); -``` - - - - -```typescript -let receiverID: string = "UID", - customData: Object = { - latitude: "50.6192171633316", - longitude: "-72.68182268750002", - }, - customType: string = "location", - receiverType: string = CometChat.RECEIVER_TYPE.USER, - customMessage: CometChat.CustomMessage = new CometChat.CustomMessage( - receiverID, - receiverType, - customType, - customData - ); - -customMessage.shouldUpdateConversation(false); -CometChat.sendCustomMessage(customMessage).then( - (message: CometChat.CustomMessage) => { - console.log("custom message sent successfully", message); - }, - (error: CometChat.CometChatException) => { - console.log("custom message sending failed with error", error); - } -); -``` - - - - -```typescript -let receiverID: string = "GUID", - customData: Object = { - latitude: "50.6192171633316", - longitude: "-72.68182268750002", - }, - customType: string = "location", - receiverType: string = CometChat.RECEIVER_TYPE.GROUP, - customMessage: CometChat.CustomMessage = new CometChat.CustomMessage( - receiverID, - receiverType, - customType, - customData - ); - -customMessage.shouldUpdateConversation(false); -CometChat.sendCustomMessage(customMessage).then( - (message: CometChat.CustomMessage) => { - console.log("custom message sent successfully", message); - }, - (error: CometChat.CometChatException) => { - console.log("custom message sending failed with error", error); - } -); -``` + + ```javascript + let receiverID = "UID"; + let customData = { + latitude: "50.6192171633316", + longitude: "-72.68182268750002", + }; + let customType = "location"; + let receiverType = CometChat.RECEIVER_TYPE.USER; + let customMessage = new CometChat.CustomMessage( + receiverID, + receiverType, + customType, + customData + ); + + customMessage.shouldUpdateConversation(false); + CometChat.sendCustomMessage(customMessage).then( + (message) => { + console.log("custom message sent successfully", message); + }, + (error) => { + console.log("custom message sending failed with error", error); + } + ); + ``` + + + ```javascript + let receiverID = "GUID"; + let customData = { + latitude: "50.6192171633316", + longitude: "-72.68182268750002", + }; + let customType = "location"; + let receiverType = CometChat.RECEIVER_TYPE.GROUP; + let customMessage = new CometChat.CustomMessage( + receiverID, + receiverType, + customType, + customData + ); + + customMessage.shouldUpdateConversation(false); + CometChat.sendCustomMessage(customMessage).then( + (message) => { + console.log("custom message sent successfully", message); + }, + (error) => { + console.log("custom message sending failed with error", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "UID", + customData: Object = { + latitude: "50.6192171633316", + longitude: "-72.68182268750002", + }, + customType: string = "location", + receiverType: string = CometChat.RECEIVER_TYPE.USER, + customMessage: CometChat.CustomMessage = new CometChat.CustomMessage( + receiverID, + receiverType, + customType, + customData + ); - + customMessage.shouldUpdateConversation(false); + CometChat.sendCustomMessage(customMessage).then( + (message: CometChat.CustomMessage) => { + console.log("custom message sent successfully", message); + }, + (error: CometChat.CometChatException) => { + console.log("custom message sending failed with error", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "GUID", + customData: Object = { + latitude: "50.6192171633316", + longitude: "-72.68182268750002", + }, + customType: string = "location", + receiverType: string = CometChat.RECEIVER_TYPE.GROUP, + customMessage: CometChat.CustomMessage = new CometChat.CustomMessage( + receiverID, + receiverType, + customType, + customData + ); + customMessage.shouldUpdateConversation(false); + CometChat.sendCustomMessage(customMessage).then( + (message: CometChat.CustomMessage) => { + console.log("custom message sent successfully", message); + }, + (error: CometChat.CometChatException) => { + console.log("custom message sending failed with error", error); + } + ); + ``` + ### Custom Notification Body -*How can i customise the notification body of custom message?* +*How can I customize the notification body of a custom message?* -To add a custom notification body for `Push, Email & SMS` notification of a custom message you can use the `setConversationText(text: string)` method of Custom Message class. +To add a custom notification body for `Push, Email & SMS` notification of a custom message you can use the `setConversationText(text: string)` method of the CustomMessage class. - -```javascript -let receiverID = "UID"; -let customData = { - latitude: "50.6192171633316", - longitude: "-72.68182268750002", -}; -let customType = "location"; -let receiverType = CometChat.RECEIVER_TYPE.USER; -let customMessage = new CometChat.CustomMessage( - receiverID, - receiverType, - customType, - customData -); - -customMessage.setConversationText("Custom notification body"); -CometChat.sendCustomMessage(customMessage).then( - (message) => { - console.log("custom message sent successfully", message); - }, - (error) => { - console.log("custom message sending failed with error", error); - } -); -``` - - - - -```javascript -let receiverID = "GUID"; -let customData = { - latitude: "50.6192171633316", - longitude: "-72.68182268750002", -}; -let customType = "location"; -let receiverType = CometChat.RECEIVER_TYPE.GROUP; -let customMessage = new CometChat.CustomMessage( - receiverID, - receiverType, - customType, - customData -); - -customMessage.setConversationText("Custom notificatoin body"); -CometChat.sendCustomMessage(customMessage).then( - (message) => { - console.log("custom message sent successfully", message); - }, - (error) => { - console.log("custom message sending failed with error", error); - } -); -``` - - - - -```typescript -let receiverID: string = "UID", - customData: Object = { - latitude: "50.6192171633316", - longitude: "-72.68182268750002", - }, - customType: string = "location", - receiverType: string = CometChat.RECEIVER_TYPE.USER, - customMessage: CometChat.CustomMessage = new CometChat.CustomMessage( - receiverID, - receiverType, - customType, - customData - ); - -customMessage.setConversationText("Custom notification body"); -CometChat.sendCustomMessage(customMessage).then( - (message: CometChat.CustomMessage) => { - console.log("custom message sent successfully", message); - }, - (error: CometChat.CometChatException) => { - console.log("custom message sending failed with error", error); - } -); -``` - - - - -```typescript -let receiverID: string = "GUID", - customData: Object = { - latitude: "50.6192171633316", - longitude: "-72.68182268750002", - }, - customType: string = "location", - receiverType: string = CometChat.RECEIVER_TYPE.GROUP, - customMessage: CometChat.CustomMessage = new CometChat.CustomMessage( - receiverID, - receiverType, - customType, - customData - ); - -customMessage.setConversationText("Custom notification body"); -CometChat.sendCustomMessage(customMessage).then( - (message: CometChat.CustomMessage) => { - console.log("custom message sent successfully", message); - }, - (error: CometChat.CometChatException) => { - console.log("custom message sending failed with error", error); - } -); -``` + + ```javascript + let receiverID = "UID"; + let customData = { + latitude: "50.6192171633316", + longitude: "-72.68182268750002", + }; + let customType = "location"; + let receiverType = CometChat.RECEIVER_TYPE.USER; + let customMessage = new CometChat.CustomMessage( + receiverID, + receiverType, + customType, + customData + ); + + customMessage.setConversationText("Custom notification body"); + CometChat.sendCustomMessage(customMessage).then( + (message) => { + console.log("custom message sent successfully", message); + }, + (error) => { + console.log("custom message sending failed with error", error); + } + ); + ``` + + + ```javascript + let receiverID = "GUID"; + let customData = { + latitude: "50.6192171633316", + longitude: "-72.68182268750002", + }; + let customType = "location"; + let receiverType = CometChat.RECEIVER_TYPE.GROUP; + let customMessage = new CometChat.CustomMessage( + receiverID, + receiverType, + customType, + customData + ); + + customMessage.setConversationText("Custom notification body"); + CometChat.sendCustomMessage(customMessage).then( + (message) => { + console.log("custom message sent successfully", message); + }, + (error) => { + console.log("custom message sending failed with error", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "UID", + customData: Object = { + latitude: "50.6192171633316", + longitude: "-72.68182268750002", + }, + customType: string = "location", + receiverType: string = CometChat.RECEIVER_TYPE.USER, + customMessage: CometChat.CustomMessage = new CometChat.CustomMessage( + receiverID, + receiverType, + customType, + customData + ); - + customMessage.setConversationText("Custom notification body"); + CometChat.sendCustomMessage(customMessage).then( + (message: CometChat.CustomMessage) => { + console.log("custom message sent successfully", message); + }, + (error: CometChat.CometChatException) => { + console.log("custom message sending failed with error", error); + } + ); + ``` + + + ```typescript + let receiverID: string = "GUID", + customData: Object = { + latitude: "50.6192171633316", + longitude: "-72.68182268750002", + }, + customType: string = "location", + receiverType: string = CometChat.RECEIVER_TYPE.GROUP, + customMessage: CometChat.CustomMessage = new CometChat.CustomMessage( + receiverID, + receiverType, + customType, + customData + ); + customMessage.setConversationText("Custom notification body"); + CometChat.sendCustomMessage(customMessage).then( + (message: CometChat.CustomMessage) => { + console.log("custom message sent successfully", message); + }, + (error: CometChat.CometChatException) => { + console.log("custom message sending failed with error", error); + } + ); + ``` + - -It is also possible to send interactive messages from CometChat, to know more [click here](/sdk/react-native/interactive-messages) - +It is also possible to send interactive messages from CometChat. To learn more, see [Interactive Messages](/sdk/react-native/interactive-messages). + + + + - Use appropriate message types (`TEXT`, `IMAGE`, `VIDEO`, `AUDIO`, `FILE`) for media messages + - Add metadata to messages when you need to pass additional context (e.g., location, user preferences) + - Use tags to categorize messages for easier filtering and retrieval + - Set `shouldUpdateConversation(false)` for background or system-level custom messages that shouldn't appear in conversation lists + - Use `setConversationText()` to provide meaningful notification text for custom messages + + + - **Message not sending:** Ensure the user is logged in and CometChat is initialized + - **Media upload fails:** Check file size limits and ensure the file object has correct `name`, `type`, and `uri` properties + - **Custom message not appearing:** Verify the receiver UID/GUID is correct and the receiver type matches + - **Notifications not showing custom text:** Make sure `setConversationText()` is called before sending the message + + + +## Next Steps + + + + Listen for real-time messages and fetch missed messages + + + Edit previously sent messages + + + Send forms, cards, and custom interactive messages + + + Show real-time typing status in conversations + + diff --git a/sdk/react-native/session-timeout.mdx b/sdk/react-native/session-timeout.mdx index 5a6f3e420..5de98331f 100644 --- a/sdk/react-native/session-timeout.mdx +++ b/sdk/react-native/session-timeout.mdx @@ -1,9 +1,8 @@ --- title: "Session Timeout Flow" +description: "Understand how CometChat Calls SDK handles idle session timeouts — automatic call termination, user prompts, and the onSessionTimeout event (v4.2.0+)." --- - - Available since v4.2.0 ## Overview @@ -21,6 +20,10 @@ CometChat Calls SDK provides a mechanism to handle session timeouts for idle par This feature helps manage inactive call sessions and prevents unnecessary resource usage. The idle timeout period ensures that participants don't accidentally remain in abandoned call sessions. + +You can customize the idle timeout period using `setIdleTimeoutPeriod(seconds)` in the `CallSettingsBuilder`. See the [Call Session settings](/sdk/react-native/direct-call#call-settings) for details. + + ### Session Timeout Flow @@ -32,3 +35,16 @@ This feature helps manage inactive call sessions and prevents unnecessary resour The `onSessionTimeout` event is triggered when the call automatically terminates due to session timeout, as illustrated in the diagram above. + +--- + +## Next Steps + + + + Start and manage call sessions with full configuration options + + + Implement a complete calling experience with incoming and outgoing call UI + + \ No newline at end of file diff --git a/sdk/react-native/setup-sdk.mdx b/sdk/react-native/setup-sdk.mdx index b33a05c52..f4863b5f3 100644 --- a/sdk/react-native/setup-sdk.mdx +++ b/sdk/react-native/setup-sdk.mdx @@ -1,16 +1,31 @@ --- title: "Setup" +description: "Install the CometChat React Native SDK, configure dependencies and permissions, and initialize CometChat in your application." --- + +**Quick Reference** - Install and initialize in three steps: +```javascript +// 1. Install dependencies +// npm i @cometchat/chat-sdk-react-native @react-native-async-storage/async-storage + +// 2. Initialize CometChat (call once on app startup) +const appSetting = new CometChat.AppSettingsBuilder() + .subscribePresenceForAllUsers() + .setRegion("REGION") + .autoEstablishSocketConnection(true) + .build(); +await CometChat.init("APP_ID", appSetting); +``` + -Migrating app version from v3 to v4 ? +**Migrating from v3 to v4?** Skip the create new app step. Your existing v3 app can be migrated to v4. -Follow steps mentioned in **Add the CometChat dependency** section below to upgrade to latest version of v4 - +Follow the steps mentioned in the [Add the CometChat Dependency](#add-the-cometchat-dependency) section below to upgrade to the latest version of v4. ## Get your Application Keys @@ -22,207 +37,225 @@ Follow steps mentioned in **Add the CometChat dependency** section below to upgr ## Add the CometChat Dependency -Install the package as NPM module: +Install the package as an NPM module: - -```bash -npm i @cometchat/chat-sdk-react-native -``` - - - + + ```bash + npm i @cometchat/chat-sdk-react-native + ``` + + + ```bash + yarn add @cometchat/chat-sdk-react-native + ``` + -**In order to integrate the CometChat React Native SDK, you need to install one more dependencies** +In order to integrate the CometChat React Native SDK, you need to install one more dependency. -1. Async-Storage: +### Async-Storage - -```javascript -npm install @react-native-async-storage/async-storage -``` - - - + + ```bash + npm install @react-native-async-storage/async-storage + ``` + + + ```bash + yarn add @react-native-async-storage/async-storage + ``` + ## Calling Component Configuration For `@cometchat/calls-sdk-react-native`, please make sure you add the following additional dependencies & permissions. - - +### Required Dependencies + ```json { -"@cometchat/chat-sdk-react-native": "^4.0.18", -"@react-native-async-storage/async-storage": "^1.23.1", -"@react-native-community/netinfo": "^11.3.1", // for react-native 0.63 & above. -"@react-native-community/netinfo": "6.1.0", // for react-native below 0.63 -"react-native-background-timer": "^2.4.1", -"react-native-callstats": "^3.73.7", -"react-native-webrtc": "^1.106.1" + "@cometchat/chat-sdk-react-native": "^4.0.18", + "@react-native-async-storage/async-storage": "^1.23.1", + "@react-native-community/netinfo": "^11.3.1", // for react-native 0.63 & above + "@react-native-community/netinfo": "6.1.0", // for react-native below 0.63 + "react-native-background-timer": "^2.4.1", + "react-native-callstats": "^3.73.7", + "react-native-webrtc": "^1.106.1" } ``` - - - - -#### Permissions: - -**Android:** +### Permissions - -```xml - - - - - -``` - - - + + Add the following permissions to your `AndroidManifest.xml`: + + ```xml + + + + + + ``` + + + Add the following keys to your `Info.plist`: + + ```xml + NSCameraUsageDescription + This is for Camera permission + NSMicrophoneUsageDescription + This is for Mic permission + ``` + -**iOS:** - - - -```xml -NSCameraUsageDescription -This is for Camera permission -NSMicrophoneUsageDescription -This is for Mic permission -``` - - - - - -#### Android: - -Goto `./android` folder and open **project level** `build.gradle` file and add all repository URLs in the `repositories` block under the `allprojects` section. - - - -```java -allprojects { -repositories { - maven { - url "https://dl.cloudsmith.io/public/cometchat/cometchat-pro-android/maven/" - } -} -} -``` - - - - - -Also in the same file in `buildscript` section in `ext` block make sure you have set **minSdkVersion** to **24.** - - - -```gradle -buildscript { - ext { - buildToolsVersion = "29.0.2" - minSdkVersion = 24 - compileSdkVersion = 29 - targetSdkVersion = 29 - } -} -``` - - - - - -#### iOS: - -Please update the minimum target version in the Podfile. Goto ./ios folder and open the Podfile. In the Podfile update the platform version to `11.0.` - - - -``` -platform :ios, '11.0' -``` - - - - - -Open the `ios/App` folder and run `pod install` this will create an `App.xcworkspace` open this and run the app. +### Platform-Specific Configuration + + + + Go to the `./android` folder and open the **project level** `build.gradle` file. Add all repository URLs in the `repositories` block under the `allprojects` section. + + ```gradle + allprojects { + repositories { + maven { + url "https://dl.cloudsmith.io/public/cometchat/cometchat-pro-android/maven/" + } + } + } + ``` + + Also in the same file, in the `buildscript` section in the `ext` block, make sure you have set **minSdkVersion** to **24**. + + ```gradle + buildscript { + ext { + buildToolsVersion = "29.0.2" + minSdkVersion = 24 + compileSdkVersion = 29 + targetSdkVersion = 29 + } + } + ``` + + + Please update the minimum target version in the Podfile. Go to the `./ios` folder and open the Podfile. In the Podfile, update the platform version to `11.0`: + + ```ruby + platform :ios, '11.0' + ``` + + Open the `ios/App` folder and run `pod install`. This will create an `App.xcworkspace` file. Open this and run the app. + + ## Initialize CometChat -The `init()` method initialises the settings required for CometChat. The `init()` method takes the below parameters: +The `init()` method initializes the settings required for CometChat. The `init()` method takes the below parameters: -1. appID - You CometChat App ID -2. appSettings - An object of the AppSettings class can be created using the AppSettingsBuilder class. The region field is mandatory and can be set using the `setRegion()` method. +| Parameter | Description | +| ------------ | ---------------------------------------------------------------------------------------------------------- | +| `appID` | Your CometChat App ID | +| `appSettings`| An object of the `AppSettings` class created using the `AppSettingsBuilder` class. The region is mandatory. | -The `AppSettings` class allows you to configure two settings: +The `AppSettings` class allows you to configure the following settings: -* **Region**: The region where your app was created. -* [Presence Subscription](/sdk/react-native/user-presence): Represents the subscription type for user presence (real-time online/offline status) -* **autoEstablishSocketConnection(boolean value)**: This property takes a boolean value which when set to true informs the SDK to manage the web-socket connection internally. If set to false, it informs the SDK that the web-socket connection will be managed manually. The default value for this parameter is true. For more information on this, please check the [Managing Web-Socket connections manually](/sdk/react-native/managing-web-sockets-connections-manually) section. The default value for this property is **true.** -* **overrideAdminHost(adminHost: string)**: This method takes the admin URL as input and uses this admin URL instead of the default admin URL. This can be used in case of dedicated deployment of CometChat. -* **overrideClientHost(clientHost: string)**: This method takes the client URL as input and uses this client URL instead of the default client URL. This can be used in case of dedicated deployment of CometChat. +| Setting | Description | +|---------|-------------| +| **Region** | The region where your app was created (mandatory). Set using `setRegion()` | +| **Presence Subscription** | Represents the subscription type for user presence (real-time online/offline status). See [User Presence](/sdk/react-native/user-presence) | +| **autoEstablishSocketConnection(boolean)** | When set to `true`, the SDK manages the web-socket connection internally. When set to `false`, you manage the connection manually. Default: `true`. See [Managing Web-Socket connections manually](/sdk/react-native/managing-web-sockets-connections-manually) | +| **overrideAdminHost(adminHost: string)** | Uses a custom admin URL instead of the default. Used for dedicated CometChat deployments | +| **overrideClientHost(clientHost: string)** | Uses a custom client URL instead of the default. Used for dedicated CometChat deployments | You need to call `init()` before calling any other method from CometChat. We suggest you call the `init()` method on app startup, preferably in the `index.js` file. - -```javascript -let appID = "APP_ID"; -let region = "REGION"; -let appSetting = new CometChat.AppSettingsBuilder() - .subscribePresenceForAllUsers() - .setRegion(region) - .autoEstablishSocketConnection(true) - .build(); -CometChat.init(appID, appSetting).then( - () => { - console.log("Initialization completed successfully"); - }, - (error) => { - console.log("Initialization failed with error:", error); - } -); -``` - - - - -```javascript -let appID: string = "APP_ID", - region: string = "APP_REGION", - appSetting: CometChat.AppSettings = new CometChat.AppSettingsBuilder() - .subscribePresenceForAllUsers() - .setRegion(region) - .autoEstablishSocketConnection(true) - .build(); -CometChat.init(appID, appSetting).then( - (initialized: boolean) => { - console.log("Initialization completed successfully", initialized); - }, - (error: CometChat.CometChatException) => { - console.log("Initialization failed with error:", error); - } -); -``` - - - + + ```javascript + let appID = "APP_ID"; + let region = "REGION"; + + // Build app settings with presence subscription and auto socket connection + let appSetting = new CometChat.AppSettingsBuilder() + .subscribePresenceForAllUsers() + .setRegion(region) + .autoEstablishSocketConnection(true) + .build(); + + // Initialize CometChat — call once on app startup + CometChat.init(appID, appSetting).then( + () => { + console.log("Initialization completed successfully"); + }, + (error) => { + console.log("Initialization failed with error:", error); + } + ); + ``` + + + ```typescript + let appID: string = "APP_ID", + region: string = "APP_REGION", + + // Build app settings with presence subscription and auto socket connection + let appSetting: CometChat.AppSettings = new CometChat.AppSettingsBuilder() + .subscribePresenceForAllUsers() + .setRegion(region) + .autoEstablishSocketConnection(true) + .build(); + + // Initialize CometChat — call once on app startup + CometChat.init(appID, appSetting).then( + (initialized: boolean) => { + console.log("Initialization completed successfully", initialized); + }, + (error: CometChat.CometChatException) => { + console.log("Initialization failed with error:", error); + } + ); + ``` + + Make sure you replace the `APP_ID` with your CometChat **App ID** and `REGION` with your **App Region** in the above code. - -| Parameter | Description | -| ---------- | ----------------------------------- | -| appID | CometChat App ID | -| appSetting | An object of the AppSettings class. | + + + + + - Always call `init()` before any other CometChat method + - Call `init()` on app startup, preferably in `App.tsx` + - Use `autoEstablishSocketConnection(true)` unless you have a specific need to manage connections manually + - For dedicated deployments, use `overrideAdminHost` and `overrideClientHost` to point to your custom URLs + + + - **Initialization fails:** Verify your App ID and Region are correct + - **Network errors:** Check internet connectivity and firewall settings + - **Calling not working:** Verify all calling dependencies are installed and permissions are granted + - **iOS build fails:** Run `pod install` in the `ios` directory after adding dependencies + - **Android build fails:** Ensure `minSdkVersion` is set to 24 and the CometChat Maven repository is added + + + +## Next Steps + + + + Register and log in users with Auth Key or Auth Token + + + Understand the fundamental building blocks of CometChat + + + Start sending text, media, and custom messages + + + Add pre-built UI components to your app + + diff --git a/sdk/react-native/standalone-calling.mdx b/sdk/react-native/standalone-calling.mdx index 5010c4e98..4837548b9 100644 --- a/sdk/react-native/standalone-calling.mdx +++ b/sdk/react-native/standalone-calling.mdx @@ -1,7 +1,29 @@ --- title: "Standalone Calling" +description: "Implement audio and video calling using only the CometChat Calls SDK, without the Chat SDK — ideal for apps that need calling without full chat infrastructure." --- + +**Quick Reference** - Generate token and start a standalone call session: + +```javascript +// Generate call token (auth token from REST API, not Chat SDK) +const callToken = await CometChatCalls.generateToken(sessionId, userAuthToken); + +// Configure and render +const callSettings = new CometChatCalls.CallSettingsBuilder() + .enableDefaultLayout(true) + .setIsAudioOnlyCall(false) + .build(); + +// +``` + + + +**Available via:** SDK | UI Kits + + ## Overview This section demonstrates how to implement calling functionality using only the CometChat Calls SDK, without requiring the Chat SDK. This is ideal for applications that need video/audio calling capabilities without the full chat infrastructure. @@ -23,6 +45,10 @@ You can obtain the auth token using one of these REST API endpoints: - [Create Auth Token](/rest-api/auth-tokens/create) — Creates a new auth token for a user - [Get Auth Token](/rest-api/auth-tokens/get) — Retrieves an existing auth token + +Auth tokens grant access to call sessions on behalf of a user. Never expose auth tokens in client-side code in production. Use a secure backend to generate and deliver tokens to your app. + + For testing or POC purposes, you can create an auth token directly from the [CometChat Dashboard](https://app.cometchat.com). Navigate to **Users & Groups → Users**, select a user, and click **+ Create Auth Token**. @@ -343,6 +369,10 @@ useEffect(() => {
+ +Always remove call event listeners when the component unmounts using `CometChatCalls.removeCallEventListener(listenerId)`. Failing to remove listeners can cause memory leaks and duplicate event handling. + + ### Events | Event | Description | @@ -569,3 +599,62 @@ CometChatCalls.endSession();
+ +## Best Practices + + + + Call tokens are session-specific and time-limited. Generate them right before starting the call session rather than caching them for extended periods. This ensures the token is fresh and reduces the chance of token expiry errors. + + + All participants who need to join the same call must use the same `sessionId` when generating their call tokens. Share this ID through your backend or signaling mechanism so both parties can join the same session. + + + Since standalone calling uses REST API auth tokens instead of the Chat SDK login flow, ensure tokens are generated server-side and delivered securely to the client. Never hardcode auth tokens in your app bundle. + + + Always remove call event listeners in your component's cleanup function (e.g., the return function of `useEffect`). Orphaned listeners can cause memory leaks, duplicate event handling, and unexpected behavior when navigating between screens. + + + The `CometChatCalls.Component` should be rendered inside a `View` with `height: '100%'`, `width: '100%'`, and `position: 'relative'`. This ensures the call UI fills the screen correctly and overlays render in the right position. + + + +## Troubleshooting + + + + Verify the auth token is valid and hasn't expired. Auth tokens obtained from the REST API or Dashboard have an expiry — generate a fresh one if needed. Also confirm the `sessionId` is a non-empty string. + + + Ensure the `CometChatCalls.Component` is wrapped in a `View` with explicit dimensions (`height: '100%'`, `width: '100%'`). Also confirm that both `callSettings` and `callToken` props are provided and not `null` or `undefined`. + + + Both participants must use the exact same `sessionId` when generating their call tokens. Double-check that the session ID is being shared correctly between devices. + + + Check that the listener is registered before the call session starts. If using `addCallEventListener`, ensure the `listenerId` is unique and hasn't been overwritten by another registration. Also verify that the Calls SDK has been initialized via `CometChatCalls.init()`. + + + Check device permissions for camera and microphone. On React Native, request `CAMERA` and `RECORD_AUDIO` permissions on Android, and add `NSCameraUsageDescription` and `NSMicrophoneUsageDescription` to `Info.plist` on iOS. + + + +--- + +## Next Steps + + + + Install dependencies, configure permissions, and initialize the Calls SDK + + + Record call sessions for playback and compliance + + + Customize the main video container and participant tiles + + + Full call session management with the Chat SDK integration + + \ No newline at end of file diff --git a/sdk/react-native/threaded-messages.mdx b/sdk/react-native/threaded-messages.mdx index 02b405a14..76f0bc3a4 100644 --- a/sdk/react-native/threaded-messages.mdx +++ b/sdk/react-native/threaded-messages.mdx @@ -1,27 +1,55 @@ --- title: "Threaded Messages" +description: "Send, receive, and fetch threaded messages (replies) in user and group conversations using the CometChat React Native SDK." --- +{/* TL;DR for Agents and Quick Reference */} + +**Quick Reference** - Send a threaded message and fetch thread replies: +```javascript +// Send a text message in a thread +let textMessage = new CometChat.TextMessage("UID", "Hello", CometChat.RECEIVER_TYPE.USER); +textMessage.setParentMessageId(100); +CometChat.sendMessage(textMessage).then( + message => console.log("Sent:", message), + err => console.log("Error:", err) +); -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. +// Fetch messages for a thread +let messagesRequest = new CometChat.MessagesRequestBuilder() + .setLimit(30) + .setParentMessageId(100) + .build(); +messagesRequest.fetchPrevious().then( + messages => console.log("Thread messages:", messages), + error => console.log("Error:", error) +); +``` + + + +**Available via:** [SDK](/sdk/react-native/threaded-messages) | [REST API](/rest-api/messages/list-threaded-messages) | [UI Kits](/ui-kit/react-native/core-features#threaded-conversations) + + +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 -As mentioned in the [Send a Message](/sdk/react-native/send-message) section. You can either send a message to a User or a Group based on the `receiverType` and the UID/GUID specified for the message. A message can belong to either of the below types: +As mentioned in the [Send a Message](/sdk/react-native/send-message) section, you can either send a message to a user or a group based on the `receiverType` and the UID/GUID specified for the message. A message can belong to any of the following types: 1. Text Message 2. Media Message -3. Custom Message. +3. Custom Message -Any of the above messages can be sent in a thread. As mentioned, a thread is identified based on the Parent message. So while sending a message the `parentMessageId` must be set for the message to indicate that the message to be sent needs to be a part of the thread with the specified `parentMessageId`. +Any of the above messages can be sent in a thread. A thread is identified based on the parent message, so while sending a message the `parentMessageId` must be set to indicate that the message belongs to the thread with the specified `parentMessageId`. -This can be achieved using the `setParentMessageId()` method provided by the object of the `TextMessage`, `MediaMessage` and `CustomMessage` class. The id specified in the `setParentMessageId()` method maps the message sent to the particular thread. +This can be achieved using the `setParentMessageId()` method provided by the object of the `TextMessage`, `MediaMessage`, and `CustomMessage` class. The id specified in the `setParentMessageId()` method maps the message sent to the particular thread. -**Example to Send a Text Message in a thread in a user conversation.** +**Example to send a text message in a thread in a user conversation:** - + ```javascript let textMessage = new CometChat.TextMessage(UID, "Hello", CometChat.RECEIVER_TYPE.USER); textMessage.setParentMessageId(100); @@ -61,16 +89,16 @@ CometChat.sendMessage(textMessage).then( The above snippet shows how a message with the text "Hello" can be sent in the thread with `parentMessageId` 100. -Similarly, using the `setparentMessageId()` method, Media and Custom Messages can be sent in threads too. +Similarly, using the `setParentMessageId()` method, Media and Custom Messages can be sent in threads too. ### Receiving Real-Time Messages -The procedure to receive real-time messages is exactly the same as mentioned in the [Receive Messages](/sdk/react-native/receive-messages). This can be achieved using the `MessageListener` class provided by the SDK. +The procedure to receive real-time messages is exactly the same as mentioned in the [Receive Messages](/sdk/react-native/receive-messages) section. This can be achieved using the `MessageListener` class provided by the SDK. To add a MessageListener, you can use the `addMessageListener()` method of the SDK. The only thing that needs to be checked is if the received message belongs to the active thread. This can be done using the `parentMessageId` field of the message object. - + ```javascript var listenerID = "UNIQUE_LISTENER_ID"; var activeThreadId = 100; @@ -130,14 +158,18 @@ CometChat.addMessageListener( -### Fetch all the messages for any particular thread. + +**Remember to remove your listener on unmount.** Always call `CometChat.removeMessageListener("UNIQUE_LISTENER_ID")` when the component unmounts (e.g., in a `useEffect` cleanup or `componentWillUnmount`) to avoid memory leaks and duplicate event handling. + + +### Fetch All Messages for a Thread -You can fetch all the messages belonging to a particular thread by using the `MessagesRequest` class. In order to get an object of the `MessagesRequest` class, you need to use the `MessagesRequestBuilder` class. and use the `setParentMessageId()` method of the `MessagesRequestBuilder` to inform the SDK that you only need the messages belonging to the thread with the specified parentMessageId. +You can fetch all the messages belonging to a particular thread by using the `MessagesRequest` class. To get an object of the `MessagesRequest` class, use the `MessagesRequestBuilder` class and call the `setParentMessageId()` method to inform the SDK that you only need the messages belonging to the thread with the specified `parentMessageId`. -Once you have the object of the `MessagesRequest` class, you need to call the `fetchPrevious()` method to get the latest messages in the thread. In one integration, a maximum of 100 messages can be fetched. If you wish to fetch the next set of messages, you need to call the `fetchPrevious()` method again on the same object. +Once you have the object of the `MessagesRequest` class, call the `fetchPrevious()` method to get the latest messages in the thread. In one call, a maximum of 100 messages can be fetched. To fetch the next set of messages, call the `fetchPrevious()` method again on the same object. - + ```javascript let limit = 30; let parentMessageId = 1; @@ -181,10 +213,10 @@ messagesRequest.fetchPrevious().then( ## Avoid Threaded Messages in User/Group Conversations -While fetching messages for normal user/group conversations using the `MessagesRequest`, the threaded messages by default will be a part of the list of messages received. In order to exclude the threaded messages from the list of user/group messages, you need to use the `hideReplies()` method of the `MessagesRequestBuilder` class. This method takes a boolean argument which when set to true excludes the messages belonging to threads from the list of messages. +While fetching messages for normal user/group conversations using the `MessagesRequest`, threaded messages will be included in the list by default. To exclude threaded messages from the list of user/group messages, use the `hideReplies()` method of the `MessagesRequestBuilder` class. This method takes a boolean argument which, when set to `true`, excludes messages belonging to threads from the list of messages. - + ```javascript let UID = "UID"; let limit = 30; @@ -205,7 +237,7 @@ messagesRequest.fetchPrevious().then( - + ```javascript let GUID = "GUID"; let limit = 30; @@ -226,7 +258,7 @@ messagesRequest.fetchPrevious().then( - + ```typescript let UID: string = "UID", limit: number = 30, @@ -247,7 +279,7 @@ messagesRequest.fetchPrevious().then( - + ```typescript let GUID: string = "GUID", limit: number = 30, @@ -270,4 +302,41 @@ messagesRequest.fetchPrevious().then( -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. +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. + +## Best Practices and Troubleshooting + + + + Every message object has a `parentMessageId` field. If this field is set (non-zero), the message is part of a thread. Use `message.getParentMessageId()` to retrieve the parent message ID and match it against the active thread. + + + + By default, `MessagesRequest` includes threaded messages. Use the `hideReplies(true)` method on `MessagesRequestBuilder` when fetching messages for the main conversation to exclude thread replies. + + + + You can fetch a maximum of 100 messages per `fetchPrevious()` call. Use the `setLimit()` method on `MessagesRequestBuilder` to control the number of messages returned. To load more messages, call `fetchPrevious()` again on the same `MessagesRequest` object. + + + + Yes. The `setParentMessageId()` method is available on `TextMessage`, `MediaMessage`, and `CustomMessage` objects. Set the parent message ID before calling `CometChat.sendMessage()` to send any message type within a thread. + + + +## Next Steps + + + + Learn how to send text, media, and custom messages to users and groups. + + + Set up real-time message listeners and fetch message history. + + + Filter messages by type, category, tags, timestamps, and more. + + + Understand message categories, types, and the message hierarchy. + + \ No newline at end of file diff --git a/sdk/react-native/transient-messages.mdx b/sdk/react-native/transient-messages.mdx index 1fea8e192..9c22a238e 100644 --- a/sdk/react-native/transient-messages.mdx +++ b/sdk/react-native/transient-messages.mdx @@ -1,7 +1,22 @@ --- title: "Transient Messages" +description: "Send and receive real-time transient messages that are not stored or tracked using the CometChat React Native SDK." --- + +**Quick Reference** — Send a transient message: + +```javascript +let data = { "LIVE_REACTION": "heart" }; +let transientMessage = new CometChat.TransientMessage("RECEIVER_ID", CometChat.RECEIVER_TYPE.USER, data); +CometChat.sendTransientMessage(transientMessage); +``` + + + + +**Available via:** [SDK](/sdk/react-native/transient-messages) | [REST API](/rest-api/messages/list-messages) | [UI Kits](/ui-kits/react-native/overview) + Transient messages are messages that are sent in real-time only and are not saved or tracked anywhere. The receiver of the message will only receive the message if he is online and these messages cannot be retrieved later. @@ -11,7 +26,7 @@ Transient messages are messages that are sent in real-time only and are not save You can use the `sendTransientMessage()` method to send a transient message to a user or in a group. The receiver will receive this information in the `onTransientMessageReceived()` method of the `MessageListener` class. In order to send the transient message, you need to use the `TransientMessage` class. - + ```javascript let receiverId = "UID"; let receiverType = CometChat.RECEIVER_TYPE.USER; @@ -23,7 +38,7 @@ CometChat.sendTransientMessage(transientMessage); - + ```javascript let receiverId = "GUID"; let receiverType = CometChat.RECEIVER_TYPE.GROUP; @@ -35,7 +50,7 @@ CometChat.sendTransientMessage(transientMessage); - + ```typescript let receiverId: string = "UID"; let receiverType: string = CometChat.RECEIVER_TYPE.USER; @@ -47,7 +62,7 @@ CometChat.sendTransientMessage(transientMessage); - + ```typescript let receiverId: string = "GUID"; let receiverType: string = CometChat.RECEIVER_TYPE.GROUP; @@ -68,7 +83,7 @@ CometChat.sendTransientMessage(transientMessage); You will receive the transient message in the `onTransientMessageReceived()` method of the registered `MessageListener` class. - + ```javascript let listenerId = "UNIQUE_LITENER_ID"; @@ -102,6 +117,10 @@ CometChat.addMessageListener( + +**Listener Cleanup** — Always remove your message listeners when the component unmounts to prevent memory leaks and unexpected behavior. Use `CometChat.removeMessageListener("UNIQUE_LITENER_ID")` in your cleanup logic (e.g., inside a `useEffect` return function or `componentWillUnmount`). + + The `TransientMessage` class consists of the below parameters: | Parameter | Information | @@ -110,3 +129,37 @@ The `TransientMessage` class consists of the below parameters: | **receiverId** | Unique Id of the receiver. This can be the Id of the group or the user the transient message is sent to. | | **receiverType** | The type of the receiver - `CometChat.RECEIVER_TYPE.USER` or `CometChat.RECEIVER_TYPE.GROUP` | | **data** | A JSONObject to provide data. | + + + +- **Use transient messages for ephemeral interactions only** — Since transient messages are not stored, they are ideal for features like live reactions, presence pings, or real-time indicators that don't need to persist. +- **Keep the data payload small** — Transient messages are designed for lightweight, real-time signals. Avoid sending large JSON objects in the `data` field. +- **Use unique listener IDs** — Each screen or component that registers a `MessageListener` should use a distinct `listenerId` to avoid conflicts with other listeners. +- **Confirm the receiver is online** — Transient messages are only delivered to online users. If guaranteed delivery is required, use a regular [message](/sdk/react-native/send-message) instead. +- **Pair with typing indicators for richer UX** — Combine transient messages with [typing indicators](/sdk/react-native/typing-indicators) to build expressive, real-time chat experiences. + + +- **Recipient not receiving transient messages** — Verify that the recipient is online and has registered a `MessageListener` with the `onTransientMessageReceived` callback before the sender dispatches the message. +- **Listener not firing** — Confirm that the `listenerId` used in `addMessageListener` is unique and that the listener has not been removed prematurely. +- **Messages not arriving in groups** — Make sure you are using `CometChat.RECEIVER_TYPE.GROUP` with the correct group ID (`GUID`), not a user ID. +- **Cannot retrieve transient messages later** — This is expected behavior. Transient messages are never stored. If you need message persistence, use [send a message](/sdk/react-native/send-message) instead. +- **Data field appears empty on the receiver side** — Ensure you are passing a valid JSON object to the `data` parameter when constructing the `TransientMessage` instance. + + + +## Next Steps + + + + Send and receive real-time typing indicators in conversations. + + + Send text, media, and custom messages to users and groups. + + + Set up real-time and fetch-based message receiving. + + + Explore the full messaging feature set available in the SDK. + + diff --git a/sdk/react-native/typing-indicators.mdx b/sdk/react-native/typing-indicators.mdx index 4a025a9da..07acdcb95 100644 --- a/sdk/react-native/typing-indicators.mdx +++ b/sdk/react-native/typing-indicators.mdx @@ -1,8 +1,29 @@ --- title: "Typing Indicators" +description: "Learn how to send and receive real-time typing indicators in one-on-one and group conversations using the CometChat React Native SDK." --- + +**Quick Reference** — Send and listen for typing indicators: +```javascript +// Start typing +let typing = new CometChat.TypingIndicator("RECEIVER_ID", CometChat.RECEIVER_TYPE.USER); +CometChat.startTyping(typing); + +// Stop typing +CometChat.endTyping(typing); + +// Listen for typing events +CometChat.addMessageListener("listenerId", new CometChat.MessageListener({ + onTypingStarted: (indicator) => { /* sender is typing */ }, + onTypingEnded: (indicator) => { /* sender stopped typing */ }, +})); +``` + + +**Available via:** [SDK](/sdk/react-native/typing-indicators) | [UI Kits](/ui-kit/react-native/core-features#typing-indicator) + ## Send a Typing Indicator @@ -10,10 +31,10 @@ title: "Typing Indicators" ### Start Typing -You can use the `startTyping()` method to inform the receiver that the logged in user has started typing. The receiver will receive this information in the `onTypingStarted()` method of the `MessageListener` class. In order to send the typing indicator, you need to use the `TypingIndicator` class. +You can use the `startTyping()` method to inform the receiver that the logged-in user has started typing. The receiver will receive this information in the `onTypingStarted()` method of the `MessageListener` class. To send the typing indicator, you need to use the `TypingIndicator` class. - + ```javascript let receiverId = "UID"; let receiverType = CometChat.RECEIVER_TYPE.USER; @@ -24,7 +45,7 @@ CometChat.startTyping(typingNotification); - + ```javascript let receiverId = "GUID"; let receiverType = CometChat.RECEIVER_TYPE.GROUP; @@ -35,7 +56,7 @@ CometChat.startTyping(typingNotification); - + ```typescript let receiverId: string = "UID"; let receiverType: string = CometChat.RECEIVER_TYPE.USER; @@ -46,7 +67,7 @@ CometChat.startTyping(typingNotification); - + ```typescript let receiverId: string = "GUID"; let receiverType: string = CometChat.RECEIVER_TYPE.GROUP; @@ -61,10 +82,10 @@ CometChat.startTyping(typingNotification); ### Stop Typing -You can use the `endTyping()` method to inform the receiver that the logged in user has stopped typing. The receiver will receive this information in the `onTypingEnded()` method of the `MessageListener` class. In order to send the typing indicator, you need to use the `TypingIndicator` class. +You can use the `endTyping()` method to inform the receiver that the logged-in user has stopped typing. The receiver will receive this information in the `onTypingEnded()` method of the `MessageListener` class. To send the typing indicator, you need to use the `TypingIndicator` class. - + ```javascript let receiverId = "UID"; let receiverType = CometChat.RECEIVER_TYPE.USER; @@ -75,7 +96,7 @@ CometChat.endTyping(typingNotification); - + ```javascript let receiverId = "GUID"; let receiverType = CometChat.RECEIVER_TYPE.GROUP; @@ -86,7 +107,7 @@ CometChat.endTyping(typingNotification); - + ```typescript let receiverId: string = "UID"; let receiverType: string = CometChat.RECEIVER_TYPE.USER; @@ -97,7 +118,7 @@ CometChat.endTyping(typingNotification); - + ```typescript let receiverId: string = "GUID"; let receiverType: string = CometChat.RECEIVER_TYPE.GROUP; @@ -124,7 +145,7 @@ You can use the `metadata` field of the `TypingIndicator` class to pass addition You will receive the typing indicators in the `onTypingStarted()` and the `onTypingEnded()` method of the registered `MessageListener` class. - + ```javascript let listenerId = "UNIQUE_LITENER_ID"; @@ -164,11 +185,47 @@ CometChat.addMessageListener( + +**Listener Cleanup** — Always remove your message listeners when the component unmounts to prevent memory leaks and unexpected behavior. Use `CometChat.removeMessageListener("UNIQUE_LITENER_ID")` in your cleanup logic (e.g., inside a `useEffect` return function or `componentWillUnmount`). + + The `TypingIndicator` class consists of the below parameters: | Parameter | Information | | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **sender** | An object of the `User` class holding all the information. related to the sender of the typing indicator. | +| **sender** | An object of the `User` class holding all the information related to the sender of the typing indicator. | | **receiverId** | Unique Id of the receiver. This can be the Id of the group or the user the typing indicator is sent to. | | **receiverType** | This parameter indicates if the typing indicator is to be sent to a user or a group. The possible values are: 1. `CometChat.RECEIVER_TYPE.USER` 2. `CometChat.RECEIVER_TYPE.GROUP` | -| **metadata** | A JSONObject to provider additional data. | +| **metadata** | A JSONObject to provide additional data. | + + + +- **Debounce start typing calls** — Avoid calling `startTyping()` on every keystroke. Instead, debounce the call so it fires once when the user begins typing and doesn't repeat until after a short pause. +- **Call endTyping() explicitly** — Always call `endTyping()` when the user clears the input field, sends a message, or navigates away from the chat screen. +- **Use unique listener IDs** — Each screen or component that registers a `MessageListener` should use a distinct `listenerId` to avoid conflicts. +- **Handle metadata sparingly** — Only attach `metadata` to typing indicators when you have a concrete use case (e.g., indicating which thread the user is typing in). + + +- **Typing indicator not appearing for the recipient** — Verify that the recipient has registered a `MessageListener` with `onTypingStarted` and `onTypingEnded` callbacks before the sender starts typing. +- **Typing indicator stuck in "typing" state** — Ensure `endTyping()` is called when the user stops typing or sends a message. CometChat automatically times out typing indicators after a short period, but explicitly ending them provides a better user experience. +- **Listener not firing** — Confirm that the `listenerId` used in `addMessageListener` is unique and that the listener has not been removed prematurely. +- **Indicators not working in groups** — Make sure you are using `CometChat.RECEIVER_TYPE.GROUP` with the correct group ID (`GUID`), not a user ID. + + + +## Next Steps + + + + Confirm when messages are delivered and read by recipients. + + + Learn how to send text, media, and custom messages. + + + Set up real-time and fetch-based message receiving. + + + Explore the full messaging feature set available in the SDK. + + diff --git a/sdk/react-native/video-view-customisation.mdx b/sdk/react-native/video-view-customisation.mdx index b8e9cb2c0..b38e36d98 100644 --- a/sdk/react-native/video-view-customisation.mdx +++ b/sdk/react-native/video-view-customisation.mdx @@ -1,20 +1,35 @@ --- title: "Video View Customisation" +description: "Customize the main video container in CometChat React Native calls, including aspect ratio, full-screen button, name labels, zoom, and user list button positioning." --- + +**Quick Reference** - Customize the main video container: +```javascript +let videoSettings = new CometChat.MainVideoContainerSetting(); +videoSettings.setMainVideoAspectRatio(CometChatCalls.CallSettings.ASPECT_RATIO_CONTAIN); +videoSettings.setFullScreenButtonParams(CometChatCalls.CallSettings.POSITION_BOTTOM_RIGHT, true); +videoSettings.setNameLabelParams(CometChatCalls.CallSettings.POSITION_BOTTOM_LEFT, true, "#333333"); -This section will guide you to customise the main video container. +// Pass to CallSettingsBuilder +new CometChatCalls.CallSettingsBuilder() + .setMainVideoContainerSetting(videoSettings) + .build(); +``` + -## Implementation +## Overview -Once you have decided to implement [Default Calling](/sdk/react-native/default-call) or [Direct Calling](/sdk/react-native/direct-call) calling and followed the steps to implement them. Just few additional methods will help you quickly customize the main video container. +This section guides you through customizing the main video container in your call UI. -Please make sure your callSettings is configured accordingly for [Default Calling](/sdk/react-native/default-call) or [Direct Calling](/sdk/react-native/direct-call). +Once you have decided to implement [Ringing](/sdk/react-native/default-call) or [Call Session](/sdk/react-native/direct-call) calling and followed the steps to implement them, a few additional methods will help you quickly customize the main video container. + +Please make sure your callSettings is configured accordingly for [Ringing](/sdk/react-native/default-call) or [Call Session](/sdk/react-native/direct-call). ## Main Video Container Setting -The `MainVideoContainerSetting` Class is the required in case you want to customise the main video view. You need to pass the Object of the `MainVideoContainerSetting` Class in the `setMainVideoContainerSetting()` method of the `CallSettingsBuilder`. +The `MainVideoContainerSetting` class is required when you want to customise the main video view. You need to pass the object of the `MainVideoContainerSetting` class in the `setMainVideoContainerSetting()` method of the `CallSettingsBuilder`. | Setting | Description | | ------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -40,3 +55,47 @@ videoSettings.setUserListButtonParams(CometChatCalls.CallSettings.POSITION_BOTTO + +## Best Practices + + + + Avoid placing multiple buttons in the same corner position. Overlapping controls can make the UI confusing and hard to interact with. Spread controls across different corners for a clean layout. + + + The `ASPECT_RATIO_CONTAIN` mode ensures the full video frame is visible without cropping. Use `ASPECT_RATIO_COVER` only when you want the video to fill the container and are okay with some edges being clipped. + + + Video container customizations can look different across devices. Test your button positions and label visibility on both small phones and larger tablets to ensure a consistent experience. + + + +## Troubleshooting + + + + Ensure you pass the `MainVideoContainerSetting` object to `setMainVideoContainerSetting()` on the `CallSettingsBuilder` before calling `.build()`. Settings applied after building won't take effect. + + + Check that the `visibility` parameter is set to `true` for the button you want to show. Also verify that `enableDefaultLayout(true)` is set in your `CallSettingsBuilder`, as custom video settings work alongside the default layout. + + + +--- + +## Next Steps + + + + Start and manage call sessions with full configuration options + + + Record call sessions for playback and compliance + + + Enable screen sharing and presenter layouts in calls + + + Implement a complete calling experience with incoming and outgoing call UI + + \ No newline at end of file From 5e8beeefba573ea85fe1321a91819ad0316ed2ee Mon Sep 17 00:00:00 2001 From: Farhan-CometChat Date: Tue, 17 Feb 2026 10:28:18 +0530 Subject: [PATCH 2/8] docs(react-native): Add descriptions, quick references, and guides to SDK docs - Add meta descriptions to all React Native SDK documentation pages - Include quick reference code blocks with common usage patterns - Add "Available via" notes linking to REST API and UI Kit alternatives - Update tab titles from generic names to "JavaScript" for consistency - Add Best Practices sections with accordion-style guidance - Add Troubleshooting sections addressing common issues - Add Next Steps sections with related documentation cards - Improve documentation structure and discoverability across 17 pages - Enhance user experience with clearer navigation and practical examples --- sdk/react-native/block-users.mdx | 72 +++++++++++++-- sdk/react-native/create-group.mdx | 68 +++++++++++++- sdk/react-native/delete-group.mdx | 54 ++++++++++- sdk/react-native/group-add-members.mdx | 66 ++++++++++++- .../group-change-member-scope.mdx | 60 +++++++++++- sdk/react-native/group-kick-ban-members.mdx | 78 ++++++++++++++-- sdk/react-native/groups-overview.mdx | 22 ++++- sdk/react-native/join-group.mdx | 67 +++++++++++++- sdk/react-native/leave-group.mdx | 60 +++++++++++- sdk/react-native/retrieve-group-members.mdx | 66 ++++++++++++- sdk/react-native/retrieve-groups.mdx | 82 +++++++++++++++-- sdk/react-native/retrieve-users.mdx | 92 ++++++++++++++++--- sdk/react-native/transfer-group-ownership.mdx | 46 +++++++++- sdk/react-native/update-group.mdx | 55 ++++++++++- sdk/react-native/user-management.mdx | 78 +++++++++++++++- sdk/react-native/user-presence.mdx | 76 ++++++++++++++- sdk/react-native/users-overview.mdx | 22 ++++- 17 files changed, 1003 insertions(+), 61 deletions(-) diff --git a/sdk/react-native/block-users.mdx b/sdk/react-native/block-users.mdx index a56000e99..bb4d210e5 100644 --- a/sdk/react-native/block-users.mdx +++ b/sdk/react-native/block-users.mdx @@ -1,8 +1,27 @@ --- title: "Block Users" +description: "Block and unblock users, and retrieve blocked user lists using the CometChat React Native SDK." --- + +**Quick Reference** - Block and unblock users: +```javascript +// Block users +await CometChat.blockUsers(["UID1", "UID2"]); + +// Unblock users +await CometChat.unblockUsers(["UID1", "UID2"]); + +// Fetch blocked users +const request = new CometChat.BlockedUsersRequestBuilder().setLimit(30).build(); +const blockedUsers = await request.fetchNext(); +``` + + + +**Available via:** [SDK](/sdk/react-native/block-users) | [REST API](/rest-api/blocked-users/block-user) + ## Block Users @@ -11,7 +30,7 @@ title: "Block Users" You can block users using the `blockUsers()` method. Once any user is blocked, all the communication to and from the respective user will be completely blocked. You can block multiple users in a single operation. The `blockUsers()` method takes a `Array` as a parameter which holds the list of `UID's` to be blocked. - + ```javascript var usersList = ["UID1", "UID2", "UID3"]; CometChat.blockUsers(usersList).then( @@ -51,7 +70,7 @@ It returns a Array which contains `UID's` as the keys and "success" or "fail" as You can unblock the already blocked users using the `unblockUsers()` method. You can unblock multiple users in a single operation. The `unblockUsers()` method takes a `Array` as a parameter which holds the list of `UID's` to be unblocked. - + ```javascript var usersList = ["UID1", "UID2", "UID3"]; @@ -98,7 +117,7 @@ The `BlockedUsersRequestBuilder` class allows you to set the below parameters: This method sets the limit i.e. the number of blocked users that should be fetched in a single iteration. - + ```javascript let limit = 30; let blockedUsersRequest = new BlockedUsersRequest.BlockedUsersRequestBuilder() @@ -125,7 +144,7 @@ let blockedUsersRequest: CometChat.BlockedUsersRequest = new CometChat.BlockedUs This method allows you to set the search string based on which the blocked users are to be fetched. - + ```javascript let limit = 30; let searchKeyword = "super"; @@ -158,7 +177,7 @@ let blockedUsersRequest: CometChat.BlockedUsersRequest = new CometChat.BlockedUs * CometChat.BlockedUsersRequest.directions.BOTH - This will make sure the list of users includes both the above cases. This is the default value for the direction variable if it is not set. - + ```javascript let limit = 30; let blockedUsersRequest = new BlockedUsersRequest.BlockedUsersRequestBuilder() @@ -187,7 +206,7 @@ Finally, once all the parameters are set to the builder class, you need to call Once you have the object of the `BlockedUsersRequest` class, you need to call the `fetchNext()` method. Calling this method will return a list of `User` objects containing n number of blocked users where N is the limit set in the builder class. - + ```javascript var limit = 30; var blockedUsersRequest = new CometChat.BlockedUsersRequestBuilder() @@ -223,3 +242,44 @@ blockedUsersRequest.fetchNext().then( + +## Best Practices + + + + When displaying user lists in your app, use `hideBlockedUsers(true)` in the `UsersRequestBuilder` to automatically exclude blocked users from the results. + + + The `blockUsers()` and `unblockUsers()` methods return a map with each UID's result ("success" or "fail"). Check individual results rather than assuming all operations succeeded. + + + +## Troubleshooting + + + + Blocking is enforced server-side. If a blocked user's messages still appear, verify the block operation returned "success" for that UID. Also ensure you're not using a cached conversation list — refresh after blocking. + + + Check the `setDirection` filter. If set to `BLOCKED_BY_ME`, only users you blocked are returned. If set to `HAS_BLOCKED_ME`, only users who blocked you are returned. Use `BOTH` to see all. + + + +--- + +## Next Steps + + + + Fetch user lists with filtering and pagination + + + Create, update, and delete users in CometChat + + + Track online/offline status of users in real time + + + Send text, media, and custom messages to users and groups + + \ No newline at end of file diff --git a/sdk/react-native/create-group.mdx b/sdk/react-native/create-group.mdx index 025dd887e..b6090b5bc 100644 --- a/sdk/react-native/create-group.mdx +++ b/sdk/react-native/create-group.mdx @@ -1,8 +1,25 @@ --- title: "Create A Group" +description: "Create public, private, or password-protected groups in CometChat React Native SDK, with optional member and ban lists at creation time." --- + +**Quick Reference** - Create a group: +```javascript +// Create a public group +const group = new CometChat.Group("GUID", "Hello Group!", CometChat.GROUP_TYPE.PUBLIC, ""); +await CometChat.createGroup(group); + +// Create with members +const members = [new CometChat.GroupMember("UID", CometChat.GROUP_MEMBER_SCOPE.PARTICIPANT)]; +await CometChat.createGroupWithMembers(group, members, []); +``` + + + +**Available via:** [SDK](/sdk/react-native/create-group) | [REST API](/rest-api/groups/create) | [UI Kits](/ui-kit/react-native/groups) + ## Create a Group @@ -24,7 +41,7 @@ The `groupType` needs to be either of the below 3 values: 3.`CometChat.GROUP_TYPE.PRIVATE` - + ```javascript var GUID = "GUID"; var groupName = "Hello Group!"; @@ -76,7 +93,7 @@ After successful creation of the group, you will receive an instance of `Group` -GUID can be alphanumeric with underscore and hyphen. Spaces, punctuation and other special characters are not allowed. +GUID can be alphanumeric with underscore and hyphen. Spaces, punctuation and other special characters are not allowed. CometChat automatically converts any uppercase characters in the GUID to lowercase. @@ -171,3 +188,50 @@ This method returns an Object which has two keys: `group` & `members` . The grou | scope | Yes | Scope of the logged in user. Can be: 1. Admin 2. Moderator 3. Participant | | membersCount | No | The number of members in the groups | | tags | Yes | A list of tags to identify specific groups. | + +## Best Practices + + + + If you know the initial members at creation time, use `createGroupWithMembers()` instead of creating the group first and then adding members separately. This reduces API calls and ensures atomic group setup. + + + Use the same group identifier from your backend as the CometChat GUID. This simplifies mapping between your system and CometChat. + + + The `createGroupWithMembers()` response includes per-UID results ("success" or error). Check each result rather than assuming all members were added successfully. + + + +## Troubleshooting + + + + Each GUID must be unique across your CometChat app. If the group already exists, use a different GUID or retrieve the existing group with `getGroup()`. + + + GUIDs can only contain alphanumeric characters, underscores, and hyphens. Spaces, punctuation, and other special characters are not allowed. Uppercase characters are automatically converted to lowercase. + + + Check the `members` key in the response object for per-UID error messages. Common causes include invalid UIDs or users that don't exist in your CometChat app. + + + +--- + +## Next Steps + + + + Fetch group lists, search groups, and get group details + + + Join public or password-protected groups + + + Manage members, roles, and permissions within groups + + + Send text, media, and custom messages to groups + + \ No newline at end of file diff --git a/sdk/react-native/delete-group.mdx b/sdk/react-native/delete-group.mdx index 8ed2c7cf3..f877d325f 100644 --- a/sdk/react-native/delete-group.mdx +++ b/sdk/react-native/delete-group.mdx @@ -1,15 +1,26 @@ --- title: "Delete A Group" +description: "Delete groups using the CometChat React Native SDK — requires Admin scope on the group." --- + +**Quick Reference** - Delete a group: +```javascript +await CometChat.deleteGroup("GUID"); +``` + + + +**Available via:** [SDK](/sdk/react-native/delete-group) | [REST API](/rest-api/delete-group) + ## Delete a Group To delete a group you need to use the `deleteGroup()` method. The user must be an `Admin` of the group they are trying to delete. - + ```javascript var GUID = "GUID"; @@ -46,3 +57,44 @@ The `deleteGroup()` method takes the following parameters: | Parameter | Description | | --------- | ---------------------------------------------- | | `GUID` | The GUID of the group you would like to delete | + +## Best Practices + + + + Deleting a group is irreversible — all messages, members, and metadata are permanently removed. Always prompt the user for confirmation before calling `deleteGroup()`. + + + The logged-in user must have Admin scope on the group. Verify the user's scope using `getGroup()` before attempting deletion to provide a better UX. + + + +## Troubleshooting + + + + Verify the logged-in user is an Admin of the group. Owners and Moderators may not have delete permissions depending on your app configuration. + + + Ensure the `deleteGroup()` promise resolved successfully. If using cached data, refresh your group list after deletion to remove stale entries. + + + +--- + +## Next Steps + + + + Create public, private, or password-protected groups + + + Fetch group lists, search groups, and get group details + + + Leave groups and stop receiving updates + + + Transfer group ownership before leaving + + \ No newline at end of file diff --git a/sdk/react-native/group-add-members.mdx b/sdk/react-native/group-add-members.mdx index 98170bf0b..cc23c0984 100644 --- a/sdk/react-native/group-add-members.mdx +++ b/sdk/react-native/group-add-members.mdx @@ -1,8 +1,22 @@ --- title: "Add Members To A Group" +description: "Add members to a group, listen for real-time member added events, and handle missed events using the CometChat React Native SDK." --- + +**Quick Reference** - Add members to a group: +```javascript +const members = [ + new CometChat.GroupMember("UID", CometChat.GROUP_MEMBER_SCOPE.PARTICIPANT), +]; +await CometChat.addMembersToGroup("GUID", members, []); +``` + + + +**Available via:** [SDK](/sdk/react-native/group-add-members) | [REST API](/rest-api/group-members/add-members) + ## Add Members to Group @@ -13,7 +27,7 @@ You can add members to the group using the `addMembersToGroup()` method. This me 3. `bannedMembers` - This is the list of `UID's` that need to be banned from the Group. This can be set to `null` if there are no members to be banned. - + ```javascript let GUID = "GUID"; let UID = "UID"; @@ -72,7 +86,7 @@ To receive real-time events whenever a new member is added to a group, you need `onMemberAddedToGroup()` - This method is triggered when any user is added to the group so that the logged in user is informed of the other members added to the group. - + ```javascript var listenerID = "UNIQUE_LISTENER_ID"; @@ -121,6 +135,10 @@ CometChat.addGroupListener( + +Always remove group listeners when the component unmounts using `CometChat.removeGroupListener(listenerId)`. Failing to remove listeners can cause memory leaks and duplicate event handling. + + ## Member Added to Group event in Message History *In other words, as a member of a group, how do I know when someone is added to the group when my app is not running?* @@ -133,3 +151,47 @@ For the group member added event, in the `Action` object received, the following 2. `actionOn` - User object containing the details of the user who was added to the group 3. `actionBy` - User object containing the details of the user who added the member to the group 4. `actionFor` - Group object containing the details of the group to which the member was added + +## Best Practices + + + + The `addMembersToGroup()` response includes per-UID results ("success" or error). Check each result rather than assuming all members were added successfully. + + + The logged-in user must have Admin or Moderator scope to add members. Verify scope before attempting the operation. + + + +## Troubleshooting + + + + Verify the logged-in user has Admin or Moderator scope in the group. Participants cannot add members. + + + Check the per-UID results in the response object. Common causes include invalid UIDs or users that don't exist in your CometChat app. + + + Ensure the group listener is registered before the add event occurs. Also verify the `listenerId` is unique. + + + +--- + +## Next Steps + + + + Fetch group member lists with filtering and pagination + + + Kick, ban, and unban group members + + + Update member roles within a group + + + Join public or password-protected groups + + \ No newline at end of file diff --git a/sdk/react-native/group-change-member-scope.mdx b/sdk/react-native/group-change-member-scope.mdx index 318c0c24c..c0c681a2c 100644 --- a/sdk/react-native/group-change-member-scope.mdx +++ b/sdk/react-native/group-change-member-scope.mdx @@ -1,15 +1,31 @@ --- title: "Change Member Scope" +description: "Learn how to change the scope (role) of a group member using the CometChat React Native SDK, including real-time and missed scope change events." --- + +**Quick Reference** +```javascript +// Change member scope +CometChat.updateGroupMemberScope("GUID", "UID", CometChat.GROUP_MEMBER_SCOPE.ADMIN); + +// Listen for scope changes +CometChat.addGroupListener("listenerId", new CometChat.GroupListener({ + onGroupMemberScopeChanged: (message, changedUser, newScope, oldScope, changedGroup) => {} +})); +``` + + +Available via: [SDK](/sdk/react-native/group-change-member-scope) | [REST API](/rest-api/group-members/change-scope) + ## Change Scope of a Group Member In order to change the scope of a group member, you can use the `changeGroupMemberScope()`. - + ```javascript var GUID = "GUID"; var UID = "UID"; @@ -67,7 +83,7 @@ The default scope of any member is `participant`. Only the **Admin** of the grou In order to receive real-time events for the change member scope event, you will need to override the `onGroupMemberScopeChanged()` method of the `GroupListener` class - + ```javascript var listenerID = "UNIQUE_LISTENER_ID"; @@ -125,6 +141,13 @@ CometChat.addGroupListener( + +Always remove group listeners when the component unmounts to prevent memory leaks. +```javascript +CometChat.removeGroupListener("UNIQUE_LISTENER_ID"); +``` + + ## Missed Group Member Scope Changed Events *In other words, as a member of a group, how do I know when someone's scope is changed when my app is not running?* @@ -139,3 +162,36 @@ For the group member scope changed event, in the `Action` object received, the f 4. `actionFor` - Group object containing the details of the group in which the member scope was changed 5. `oldScope` - The original scope of the member 6. `newScope` - The updated scope of the member + + + +- Only admins can change member scope — validate roles before calling `updateGroupMemberScope()` +- Update your local group member list after a successful scope change to keep the UI in sync +- Handle the `onGroupMemberScopeChanged` listener to reflect scope changes made by other admins in real time +- Consider showing a confirmation dialog before promoting a member to admin, as this grants full group control + + + +- **ERR_NOT_A_MEMBER**: The logged-in user is not a member of the group. Ensure the user has joined the group first. +- **ERR_INSUFFICIENT_PERMISSIONS**: Only group admins can change member scope. Verify the logged-in user's role. +- **Scope change not reflecting**: Make sure you've registered a `GroupListener` and are handling `onGroupMemberScopeChanged`. +- **Missed events not appearing**: Fetch previous messages using `MessagesRequest` — scope change actions appear as `Action` messages in the message history. + + + +## Next Steps + + + +Remove or restrict members from a group + + +Transfer group ownership to another member + + +Fetch the list of members in a group + + +Add new members to a group + + diff --git a/sdk/react-native/group-kick-ban-members.mdx b/sdk/react-native/group-kick-ban-members.mdx index dc2df5d4f..2f56458a6 100644 --- a/sdk/react-native/group-kick-ban-members.mdx +++ b/sdk/react-native/group-kick-ban-members.mdx @@ -1,8 +1,29 @@ --- title: "Kick Member From A Group" +description: "Learn how to kick, ban, and unban group members using the CometChat React Native SDK, including fetching banned member lists and handling real-time events." --- + +**Quick Reference** +```javascript +// Kick a member +CometChat.kickGroupMember("GUID", "UID"); + +// Ban a member +CometChat.banGroupMember("GUID", "UID"); + +// Unban a member +CometChat.unbanGroupMember("GUID", "UID"); + +// Fetch banned members +let request = new CometChat.BannedMembersRequestBuilder("GUID").setLimit(30).build(); +request.fetchNext(); +``` + + +Available via: [SDK](/sdk/react-native/group-kick-ban-members) | REST API: [Kick](/rest-api/group-members/kick), [Ban](/rest-api/banned-users/ban) + There are certain actions that can be performed on the group members: @@ -18,7 +39,7 @@ All the above actions can only be performed by the **Admin** or the **Moderator* The Admin or Moderator of a group can kick a member out of the group using the `kickGroupMember()` method. - + ```javascript var GUID = "GUID"; var UID = "UID"; @@ -68,7 +89,7 @@ The kicked user will be no longer part of the group and can not perform any acti The Admin or Moderator of the group can ban a member from the group using the `banGroupMember()` method. - + ```javascript var GUID = "GUID"; var UID = "UID"; @@ -118,7 +139,7 @@ The banned user will be no longer part of the group and can not perform any acti Only Admin or Moderators of the group can unban a previously banned member from the group using the `unbanGroupMember()` method. - + ```javascript var GUID = "GUID"; var UID = "UID"; @@ -176,7 +197,7 @@ The `GUID` of the group for which the banned members are to be fetched must be s This method sets the limit i.e. the number of banned members that should be fetched in a single iteration. - + ```javascript let GUID = "GUID"; let limit = 30; @@ -204,7 +225,7 @@ let bannedGroupMembersRequest: CometChat.BannedMembersRequest = This method allows you to set the search string based on which the banned group members are to be fetched. - + ```javascript let GUID = "GUID"; let limit = 30; @@ -238,7 +259,7 @@ Finally, once all the parameters are set to the builder class, you need to call Once you have the object of the `BannedGroupMembersRequest` class, you need to call the `fetchNext()` method. Calling this method will return a list of `GroupMember` objects containing n number of banned members where n is the limit set in the builder class. - + ```javascript let GUID = "GUID"; let limit = 30; @@ -302,7 +323,7 @@ In order to get real-time events for the kick/ban/unban group members you need t 3. `onGroupMemberUnbanned()` - triggered when any group member has been unbanned. - + ```javascript let listenerID = "UNIQUE_LISTENER_ID"; @@ -378,6 +399,13 @@ CometChat.addGroupListener( + +Always remove group listeners when the component unmounts to prevent memory leaks. +```javascript +CometChat.removeGroupListener("UNIQUE_LISTENER_ID"); +``` + + ## Missed Group Member Kicked/Banned Events *In other words, as a member of a group, how do I know when someone is banned/kicked when my app is not running?* @@ -404,3 +432,39 @@ For group member unbanned event, the details can be obtained using the below fie 2. `actionBy` - User object containing the details of the user who has unbanned the member 3. `actionOn` - User object containing the details of the member that has been unbanned 4. `actionFor` - Group object containing the details of the Group from which the member was unbanned + + + + +- Always confirm with the user before kicking or banning — these are disruptive actions +- Use ban for persistent rule violations and kick for temporary removals (kicked users can rejoin) +- Keep your local member list in sync by handling `onGroupMemberKicked`, `onGroupMemberBanned`, and `onGroupMemberUnbanned` listeners +- When fetching banned members, use pagination (`fetchNext()`) to handle large lists efficiently +- Only admins and moderators can perform these actions — check the logged-in user's scope before showing kick/ban UI controls + + + +- **ERR_NOT_A_MEMBER**: The logged-in user is not a member of the group. Ensure the user has joined the group first. +- **ERR_INSUFFICIENT_PERMISSIONS**: Only admins or moderators can kick/ban members. Verify the logged-in user's role. +- **Banned user can still rejoin**: Make sure you used `banGroupMember()` and not `kickGroupMember()` — kicked users can rejoin, banned users cannot. +- **Unban not working**: Only admins or moderators can unban. Also ensure the user was actually banned (not just kicked). +- **Listener events not firing**: Confirm you registered a `GroupListener` with the correct listener ID and are handling the right callback methods. + + + +## Next Steps + + + +Promote or demote group members + + +Transfer group ownership to another member + + +Fetch the list of members in a group + + +Add new members to a group + + diff --git a/sdk/react-native/groups-overview.mdx b/sdk/react-native/groups-overview.mdx index 4f3d1c363..119e4be1e 100644 --- a/sdk/react-native/groups-overview.mdx +++ b/sdk/react-native/groups-overview.mdx @@ -1,10 +1,30 @@ --- title: "Groups" sidebarTitle: "Overview" +description: "Overview of group functionality in CometChat React Native SDK — create, manage, and interact with public, private, and password-protected groups." --- - +## Overview Groups help your users to converse together in a single space. You can have three types of groups- private, public and password protected. Each group includes three kinds of users- owner, moderator, member. + +--- + +## Next Steps + + + + Create public, private, or password-protected groups + + + Fetch group lists, search groups, and get group details + + + Join public or password-protected groups + + + Manage members, roles, and permissions within groups + + \ No newline at end of file diff --git a/sdk/react-native/join-group.mdx b/sdk/react-native/join-group.mdx index d0a4fa701..843c478d8 100644 --- a/sdk/react-native/join-group.mdx +++ b/sdk/react-native/join-group.mdx @@ -1,15 +1,30 @@ --- title: "Join A Group" +description: "Join public or password-protected groups, listen for real-time join events, and handle missed join events using the CometChat React Native SDK." --- + +**Quick Reference** - Join a group: +```javascript +// Join a public group +await CometChat.joinGroup("GUID", CometChat.GROUP_TYPE.PUBLIC, ""); + +// Join a password-protected group +await CometChat.joinGroup("GUID", CometChat.GROUP_TYPE.PASSWORD, "password123"); +``` + + + +**Available via:** [SDK](/sdk/react-native/join-group) | [REST API](/rest-api/group-members/add-members) + ## Join a Group In order to start participating in group conversations, you will have to join a group. You can do so using the `joinGroup()` method. - + ```javascript var GUID = "GUID"; var password = ""; @@ -64,7 +79,7 @@ You can identify if a group is joined using the `hasJoined` parameter in the `Gr If a user joins any group, the members of the group receive a real-time event in the `onGroupMemberJoined()` method of the `GroupListener` class. - + ```javascript CometChat.addGroupListener( "UNIQUE_LISTNER_ID", @@ -94,6 +109,10 @@ CometChat.addGroupListener( + +Always remove group listeners when the component unmounts using `CometChat.removeGroupListener(listenerId)`. Failing to remove listeners can cause memory leaks and duplicate event handling. + + ## Missed Group Member Joined Events *In other words, as a member of a group, how do I know if someone joins the group when my app is not running?* @@ -105,3 +124,47 @@ For the group member joined event, in the `Action` object received, the followin 1. `action` - `joined` 2. `actionBy` - User object containing the details of the user who joined the group 3. `actionFor`- Group object containing the details of the group the user has joined + +## Best Practices + + + + Before calling `joinGroup()`, check the `hasJoined` property on the `Group` object. If the user has already joined, calling `joinGroup()` again will return an error. + + + For password-protected groups, prompt the user for the password before calling `joinGroup()`. Pass the password as the third parameter. + + + +## Troubleshooting + + + + Private groups cannot be joined directly. Members must be added by an admin or owner using the group members API. Only public and password-protected groups support `joinGroup()`. + + + Ensure the password string matches exactly. Passwords are case-sensitive. If the user enters an incorrect password, the SDK returns an error. + + + Verify the group listener is registered with `addGroupListener()` before the join event occurs. Also ensure the `listenerId` is unique and hasn't been overwritten. + + + +--- + +## Next Steps + + + + Leave groups and stop receiving updates + + + Manage members, roles, and permissions within groups + + + Send text, media, and custom messages to groups + + + Fetch group lists and group details + + \ No newline at end of file diff --git a/sdk/react-native/leave-group.mdx b/sdk/react-native/leave-group.mdx index b879d5049..e544a4954 100644 --- a/sdk/react-native/leave-group.mdx +++ b/sdk/react-native/leave-group.mdx @@ -1,15 +1,26 @@ --- title: "Leave A Group" +description: "Leave groups, listen for real-time leave events, and handle missed leave events using the CometChat React Native SDK." --- + +**Quick Reference** - Leave a group: +```javascript +await CometChat.leaveGroup("GUID"); +``` + + + +**Available via:** [SDK](/sdk/react-native/leave-group) | [REST API](/rest-api/group-members/kick) + ## Leave a Group In order to stop receiving updates and messages for any particular joined group, you will have to leave the group using the `leaveGroup()` method. - + ```javascript var GUID = "GUID"; // guid of the group to join @@ -54,7 +65,7 @@ Once a group is left, the user will no longer receive any updates or messages pe If a user leaves any group, The members of the group receive a real-time event in the `onGroupMemberLeft()` method of the `GroupListener` class. - + ```javascript CometChat.addGroupListener( "UNIQUE_LISTENER_ID", @@ -84,6 +95,10 @@ CometChat.addGroupListener( + +Always remove group listeners when the component unmounts using `CometChat.removeGroupListener(listenerId)`. Failing to remove listeners can cause memory leaks and duplicate event handling. + + ## Missed Group Member Left Events *In other words, as a member of a group, how do I know if someone has left it when my app is not running?* @@ -95,3 +110,44 @@ For the group member left event, in the `Action` object received, the following 1. `action` - `left` 2. `actionBy` - User object containing the details of the user who left the group 3. `actionFor` - Group object containing the details of the group the user has left + +## Best Practices + + + + After successfully leaving a group, remove any local references to the group's messages, members, or conversation data. This prevents stale data from appearing in your UI. + + + If the logged-in user is the group owner, consider transferring ownership to another admin or member before leaving. Leaving as the owner may have different behavior depending on your app's configuration. + + + +## Troubleshooting + + + + Verify the GUID is correct and the logged-in user is actually a member of the group. You can check membership using `getGroup()` and the `hasJoined` property. + + + Ensure the `leaveGroup()` call completed successfully (resolved the promise). Also remove any active group listeners for that group to stop receiving real-time events. + + + +--- + +## Next Steps + + + + Join public or password-protected groups + + + Delete groups and handle related cleanup + + + Manage members, roles, and permissions within groups + + + Fetch group lists and group details + + \ No newline at end of file diff --git a/sdk/react-native/retrieve-group-members.mdx b/sdk/react-native/retrieve-group-members.mdx index 2c81e28d2..ec1b16002 100644 --- a/sdk/react-native/retrieve-group-members.mdx +++ b/sdk/react-native/retrieve-group-members.mdx @@ -1,8 +1,22 @@ --- title: "Retrieve Group Members" +description: "Fetch group member lists with filtering by scope, search, and pagination using the CometChat React Native SDK." --- + +**Quick Reference** - Fetch group members: +```javascript +const request = new CometChat.GroupMembersRequestBuilder("GUID") + .setLimit(30) + .build(); +const members = await request.fetchNext(); +``` + + + +**Available via:** [SDK](/sdk/react-native/retrieve-group-members) | [REST API](/rest-api/group-members/list) | [UI Kits](/ui-kit/react-native/groups) + ## Retrieve the List of Group Members @@ -17,7 +31,7 @@ The GUID of the group for which the members are to be fetched must be specified This method sets the limit i.e. the number of members that should be fetched in a single iteration. - + ```javascript let GUID = "GUID"; let limit = 30; @@ -46,7 +60,7 @@ let groupMembersRequest: CometChat.GroupMembersRequest = new CometChat.GroupMemb This method allows you to set the search string based on which the group members are to be fetched. - + ```javascript let GUID = "GUID"; let limit = 30; @@ -79,7 +93,7 @@ let groupMembersRequest: CometChat.GroupMembersRequest = new CometChat.GroupMemb This method allows you to fetch group members based on multiple scopes. - + ```javascript let GUID = "GUID"; let limit = 30; @@ -112,7 +126,7 @@ Finally, once all the parameters are set to the builder class, you need to call Once you have the object of the `GroupMembersRequest` class, you need to call the `fetchNext()` method. Calling this method will return a list of `GroupMember` objects containing n number of members where n is the limit set in the builder class. - + ```javascript let GUID = "GUID"; let limit = 30; @@ -151,3 +165,47 @@ groupMembersRequest.fetchNext().then( + +## Best Practices + + + + Always use `fetchNext()` with a reasonable `setLimit()` value (e.g., 20-30). For groups with many members, paginate through results rather than fetching all at once. + + + The `GroupMembersRequest` object maintains an internal cursor. Creating a new instance resets the cursor. Reuse the same instance across `fetchNext()` calls. + + + Use `setScopes()` to fetch only admins or moderators when building admin management UIs, rather than fetching all members and filtering client-side. + + + +## Troubleshooting + + + + Verify the GUID is correct and the logged-in user is a member of the group. Non-members cannot fetch the member list of private groups. + + + Ensure you're reusing the same `GroupMembersRequest` instance. Creating a new builder resets the pagination cursor. + + + +--- + +## Next Steps + + + + Add new members to a group + + + Kick, ban, and unban group members + + + Update member roles within a group + + + Fetch group lists and group details + + \ No newline at end of file diff --git a/sdk/react-native/retrieve-groups.mdx b/sdk/react-native/retrieve-groups.mdx index f8d42c0ab..016e07c3e 100644 --- a/sdk/react-native/retrieve-groups.mdx +++ b/sdk/react-native/retrieve-groups.mdx @@ -1,8 +1,27 @@ --- title: "Retrieve Groups" +description: "Fetch group lists, search groups, get group details, and retrieve online member counts using the CometChat React Native SDK." --- + +**Quick Reference** - Fetch groups: +```javascript +// Fetch group list +const groupsRequest = new CometChat.GroupsRequestBuilder().setLimit(30).build(); +const groups = await groupsRequest.fetchNext(); + +// Get specific group +const group = await CometChat.getGroup("GUID"); + +// Get online member count +const counts = await CometChat.getOnlineGroupMemberCount(["GUID"]); +``` + + + +**Available via:** [SDK](/sdk/react-native/retrieve-groups) | [REST API](/rest-api/groups/list) | [UI Kits](/ui-kit/react-native/groups) + ## Overview @@ -19,7 +38,7 @@ The `GroupsRequestBuilder` class allows you to set the below parameters: This method sets the limit i.e. the number of groups that should be fetched in a single iteration. - + ```javascript let limit = 30; let groupsRequest = new CometChat.GroupsRequestBuilder() @@ -45,7 +64,7 @@ let groupsRequest: CometChat.GroupsRequest = This method allows you to set the search string based on which the groups are to be fetched. - + ```javascript let limit = 30; let searchKeyword = "group"; @@ -77,7 +96,7 @@ let groupsRequest: CometChat.GroupsRequest = This method when used, will ask the SDK to only return the groups that the user has joined or is a part of. - + ```javascript let limit = 30; let groupsRequest = new CometChat.GroupsRequestBuilder() @@ -104,7 +123,7 @@ let groupsRequest: CometChat.GroupsRequest = This method accepts a list of tags based on which the list of groups is to be fetched. The list fetched will only contain the groups that have been tagged with the specified tags. - + ```javascript let limit = 30; let tags = ["tag1", "tag2"]; @@ -133,7 +152,7 @@ let groupsRequest: CometChat.GroupsRequest = This property when set to true will fetch tags data along with the list of groups. - + ```javascript let limit = 30; let groupsRequest = new CometChat.GroupsRequestBuilder() @@ -162,7 +181,7 @@ Once you have the object of the `GroupsRequest` class, you need to call the `fet The list of groups fetched will only have the public and password type groups. The private groups will only be available if the user is a member of the group. - + ```javascript let limit = 30; let groupsRequest = new CometChat.GroupsRequestBuilder() @@ -208,7 +227,7 @@ groupsRequest.fetchNext().then( To get the information of a group, you can use the `getGroup()` method. - + ```javascript var GUID = "GUID"; CometChat.getGroup(GUID).then( @@ -251,7 +270,7 @@ It returns `Group` object containing the details of the group. To get the total count of online users in particular groups, you can use the `getOnlineGroupMemberCount()` method. - + ```javascript let guids = ["cometchat-guid-1"]; CometChat.getOnlineGroupMemberCount(guids).then( @@ -284,3 +303,50 @@ CometChat.getOnlineGroupMemberCount(guids).then( This method returns a JSON Object with the GUID as the key and the online member count for that group as the value. + +## Best Practices + + + + Always use `fetchNext()` with a reasonable `setLimit()` value (e.g., 20-30) rather than fetching all groups at once. This improves performance and reduces memory usage. + + + The `GroupsRequest` object maintains an internal cursor. Creating a new instance resets the cursor, causing the same page to be fetched repeatedly. Reuse the same instance across `fetchNext()` calls. + + + When displaying "My Groups" in your UI, use `joinedOnly(true)` to fetch only groups the user belongs to, rather than filtering the full list client-side. + + + +## Troubleshooting + + + + Private groups are only returned if the logged-in user is a member. This is by design — use `joinedOnly(true)` to see all groups the user has access to, including private ones. + + + Verify the logged-in user session is active. Also check if filters like `setTags` or `setSearchKeyword` are too restrictive. Try removing filters to confirm groups exist. + + + Ensure the GUID exists in your CometChat app. GUIDs are case-sensitive — double-check the exact GUID string. + + + +--- + +## Next Steps + + + + Create public, private, or password-protected groups + + + Join public or password-protected groups + + + Manage members, roles, and permissions within groups + + + Send text, media, and custom messages to groups + + \ No newline at end of file diff --git a/sdk/react-native/retrieve-users.mdx b/sdk/react-native/retrieve-users.mdx index 6e190313a..5e9b298db 100644 --- a/sdk/react-native/retrieve-users.mdx +++ b/sdk/react-native/retrieve-users.mdx @@ -1,15 +1,34 @@ --- title: "Retrieve Users" +description: "Fetch user lists, search users, get logged-in user details, and retrieve online user counts using the CometChat React Native SDK." --- + +**Quick Reference** - Fetch users: +```javascript +// Get logged-in user +const me = await CometChat.getLoggedinUser(); + +// Fetch user list +const usersRequest = new CometChat.UsersRequestBuilder().setLimit(30).build(); +const users = await usersRequest.fetchNext(); + +// Get specific user +const user = await CometChat.getUser("UID"); +``` + + + +**Available via:** [SDK](/sdk/react-native/retrieve-users) | [REST API](/rest-api/users/list) | [UI Kits](/ui-kit/react-native/users) + ## Retrieve Logged In User Details You can get the details of the logged-in user using the `getLoggedInUser()` method. This method can also be used to check if the user is logged in or not. If the method returns `Promise` with reject callback, it indicates that the user is not logged in and you need to log the user into CometChat SDK. - + ```javascript var user = CometChat.getLoggedinUser().then( user => { @@ -50,7 +69,7 @@ The `UsersRequestBuilder` class allows you to set the below parameters: This method sets the limit i.e. the number of users that should be fetched in a single iteration. - + ```javascript let limit = 30; let usersRequest = new CometChat.UsersRequestBuilder() @@ -77,7 +96,7 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() This method allows you to set the search string based on which the users are to be fetched. - + ```javascript let limit = 30; let searchKeyword = "super"; @@ -148,7 +167,7 @@ The status based on which the users are to be fetched. The status parameter can If this parameter is not set, will return all the available users. - + ```javascript let limit = 30; let usersRequest = new CometChat.UsersRequestBuilder() @@ -177,7 +196,7 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() This method is used to determine if the blocked users should be returned as a part of the user list. If set to true, the user list will not contain the users blocked by the logged in user. - + ```javascript let limit = 30; let usersRequest = new CometChat.UsersRequestBuilder() @@ -206,7 +225,7 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() This method allows you to fetch the users based on multiple roles. - + ```javascript let limit = 30; let roles = ["default", "dev"]; @@ -237,7 +256,7 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() This property when set to true will return only the friends of the logged-in user. - + ```javascript let limit = 30; let usersRequest = new CometChat.UsersRequestBuilder() @@ -266,7 +285,7 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() This method accepts a list of tags based on which the list of users is to be fetched. The list fetched will only contain the users that have been tagged with the specified tags. - + ```javascript let limit = 30; let tags = ["tag1", "tag2"]; @@ -297,7 +316,7 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() This property when set to true will fetch tags data along with the list of users. - + ```javascript let limit = 30; let usersRequest = new CometChat.UsersRequestBuilder() @@ -326,7 +345,7 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() This method accepts a list of UIDs based on which the list of users is fetched. A maximum of `25` users can be fetched. - + ```javascript let limit = 30; let UIDs = ["cometchat-uid-1", "cometchat-uid-2"]; @@ -420,7 +439,7 @@ Finally, once all the parameters are set to the builder class, you need to call Once you have the object of the UsersRequest class, you need to call the fetchNext() method. Calling this method will return a list of User objects containing n number of users where n is the limit set in the builder class. - + ```javascript var limit = 30; var usersRequest = new CometChat.UsersRequestBuilder() @@ -463,7 +482,7 @@ usersRequest.fetchNext().then( To get the information of a user, you can use the `getUser()` method. - + ```javascript let UID = "UID"; CometChat.getUser(UID).then( @@ -506,7 +525,7 @@ It returns the `User` object containing the details of the user. To get the total count of online users for your app, you can use the `getOnlineUserCount()` method. - + ```javascript CometChat.getOnlineUserCount().then( userCount => { @@ -535,3 +554,50 @@ CometChat.getOnlineUserCount().then( This method returns the total online user count for your app. + +## Best Practices + + + + Always use `fetchNext()` with a reasonable `setLimit()` value (e.g., 20-30) rather than fetching all users at once. This improves performance and reduces memory usage. + + + The `UsersRequest` object maintains an internal cursor. Creating a new instance resets the cursor, causing the same page to be fetched repeatedly. Reuse the same instance across `fetchNext()` calls. + + + Use the builder's filter methods (`setSearchKeyword`, `setStatus`, `setRoles`, `setTags`) to narrow results at the API level rather than fetching all users and filtering in your app. + + + +## Troubleshooting + + + + Verify the logged-in user session is active. Also check if filters like `setRoles`, `setTags`, or `setStatus` are too restrictive. Try removing filters to confirm users exist. + + + Ensure the UID exists in your CometChat app. UIDs are case-sensitive — double-check the exact UID string. + + + By default, blocked users are included in the user list. Use `hideBlockedUsers(true)` in the `UsersRequestBuilder` to exclude them. + + + +--- + +## Next Steps + + + + Create, update, and delete users in CometChat + + + Block and unblock users, retrieve blocked user lists + + + Track online/offline status of users in real time + + + Fetch conversation lists with last message and unread counts + + \ No newline at end of file diff --git a/sdk/react-native/transfer-group-ownership.mdx b/sdk/react-native/transfer-group-ownership.mdx index 1de52a892..0b2595cbc 100644 --- a/sdk/react-native/transfer-group-ownership.mdx +++ b/sdk/react-native/transfer-group-ownership.mdx @@ -1,8 +1,19 @@ --- title: "Transfer Group Ownership" +description: "Learn how to transfer group ownership to another member using the CometChat React Native SDK." --- + +**Quick Reference** +```javascript +// Transfer group ownership +CometChat.transferGroupOwnership("GUID", "UID"); +``` + + +Available via: [SDK](/sdk/react-native/transfer-group-ownership) | [REST API](/rest-api/groups/update) + *In other words, as a logged-in user, how do I transfer the ownership of any group if I am the owner of the group?* @@ -11,7 +22,7 @@ In order to transfer the ownership of any group, the first condition is that you This will be helpful as the owner is not allowed to leave the group. In case, you as the owner would like to leave the group, you will have to use this method and transfer your ownership first to any other member of the group and only then you will be allowed to leave the group. - + ```javascript let GUID = "GUID"; let UID = "UID"; @@ -42,3 +53,36 @@ CometChat.transferGroupOwnership(GUID, UID).then( + + + +- Always confirm with the user before transferring ownership — this action cannot be undone without the new owner's cooperation +- Transfer ownership before leaving a group, as the owner is not allowed to leave without doing so +- After transferring ownership, the previous owner's scope is automatically changed — update your UI accordingly +- Consider showing a list of current group members to let the owner pick the new owner easily + + + +- **ERR_NOT_A_MEMBER**: The logged-in user is not a member of the group. Ensure the user has joined the group first. +- **ERR_INSUFFICIENT_PERMISSIONS**: Only the group owner can transfer ownership. Verify the logged-in user is the owner, not just an admin. +- **Cannot leave group**: You must transfer ownership first before leaving. Use `transferGroupOwnership()` then `leaveGroup()`. +- **Target user not found**: Ensure the UID belongs to an existing member of the group. You cannot transfer ownership to a non-member. + + + +## Next Steps + + + +Leave a group after transferring ownership + + +Promote or demote group members + + +Remove or restrict members from a group + + +Permanently delete a group + + diff --git a/sdk/react-native/update-group.mdx b/sdk/react-native/update-group.mdx index e8e635926..36ce7b99e 100644 --- a/sdk/react-native/update-group.mdx +++ b/sdk/react-native/update-group.mdx @@ -1,8 +1,20 @@ --- title: "Update A Group" +description: "Update group details such as name, icon, description, and metadata using the CometChat React Native SDK." --- + +**Quick Reference** - Update a group: +```javascript +const group = new CometChat.Group("GUID", "Updated Name", CometChat.GROUP_TYPE.PUBLIC); +await CometChat.updateGroup(group); +``` + + + +**Available via:** [SDK](/sdk/react-native/update-group) | [REST API](/rest-api/groups/update) + ## Update Group @@ -11,7 +23,7 @@ title: "Update A Group" You can update the existing details of the group using the `updateGroup()` method. - + ```javascript var GUID = "GUID"; var groupName = "Hello Group"; @@ -59,3 +71,44 @@ This method takes an instance of the `Group` class as a parameter which should c After a successful update of the group, you will receive an instance of `Group` class containing update information of the group. For more information on the `Group` class, please check [here](/sdk/react-native/create-group#group-class) + +## Best Practices + + + + The `Group` object passed to `updateGroup()` must have the correct GUID set. Only the fields you set on the object will be updated — unset fields remain unchanged. + + + The `updateGroup()` method requires the logged-in user to be the owner or an admin of the group. Participants and moderators cannot update group details. + + + +## Troubleshooting + + + + Verify the logged-in user is the owner or an admin of the group. Use `getGroup()` to check the user's scope in the group. + + + The `type` field of a group is not editable after creation. To change a group's type, you would need to create a new group with the desired type. + + + +--- + +## Next Steps + + + + Fetch group lists, search groups, and get group details + + + Manage members, roles, and permissions within groups + + + Delete groups and handle related cleanup + + + Create public, private, or password-protected groups + + \ No newline at end of file diff --git a/sdk/react-native/user-management.mdx b/sdk/react-native/user-management.mdx index 61312c62c..b38fdffda 100644 --- a/sdk/react-native/user-management.mdx +++ b/sdk/react-native/user-management.mdx @@ -1,8 +1,27 @@ --- title: "User Management" +description: "Create, update, and delete users in CometChat using the React Native SDK — including logged-in user updates and the User class reference." --- + +**Quick Reference** - Create and update users: +```javascript +// Create a user +const user = new CometChat.User("user1"); +user.setName("Kevin"); +await CometChat.createUser(user, "AUTH_KEY"); + +// Update logged-in user +const me = new CometChat.User("user1"); +me.setName("Kevin Fernandez"); +await CometChat.updateCurrentUserDetails(me); +``` + + + +**Available via:** [SDK](/sdk/react-native/user-management) | [REST API](/rest-api/users/create) + When a user logs into your app, you need to programmatically login the user into CometChat. But before you log in the user to CometChat, you need to create the user. @@ -20,10 +39,14 @@ Summing up- ## Creating a user -Ideally, user creation should take place at your backend. You can refer to our Rest API to learn more about [creating a user](https://api-explorer.cometchat.com/reference/creates-user) and use the appropriate code sample based on your backend language. +Ideally, user creation should take place at your backend. You can refer to our Rest API to learn more about [creating a user](https://www.cometchat.com/docs/rest-api/users/create) and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use the `createUser()` method. This method takes a `User` object and the `Auth Key` as input parameters and returns the created `User` object if the request is successful. + +The `Auth Key` is intended for development and testing only. In production, create users from your backend using the [REST API](/rest-api/create-user) with your API Key instead. + + ```javascript @@ -71,13 +94,13 @@ CometChat.createUser(user, authKey).then( -UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and other special characters are not allowed. +UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and other special characters are not allowed. CometChat automatically converts any uppercase characters in the UID to lowercase. ## Updating a user -Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://api-explorer.cometchat.com/reference/update-user) section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. +Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the [update a user](https://www.cometchat.com/docs/rest-api/users/update) section. However, this can be achieved on the fly as well as using the `updateUser()` method. This method takes a `User` object and the `Auth Key` as inputs and returns the updated `User` object on the successful execution of the request. @@ -177,7 +200,7 @@ By using the `updateCurrentUserDetails()` method one can only update the logged- ## Deleting a user -Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://api-explorer.cometchat.com/reference/delete-user) section. +Deleting a user can only be achieved via the Restful APIs. For more information please check the [delete a user](https://www.cometchat.com/docs/rest-api/users/delete) section. ## User Class @@ -195,3 +218,50 @@ Deleting a user can only be achieved via the Restful APIs. For more information | hasBlockedMe | No | A boolean that determines if the user has blocked the logged in user | | blockedByMe | No | A boolean that determines if the logged in user has blocked the user | | tags | Yes | A list of tags to identify specific users | + +## Best Practices + + + + Use the REST API with your API Key to create users server-side. The `createUser()` SDK method requires the Auth Key, which should not be exposed in production client apps. + + + Use the same user identifier from your backend as the CometChat UID. This simplifies mapping between your user system and CometChat. + + + When the logged-in user updates their own profile, use `updateCurrentUserDetails()` which doesn't require an Auth Key. Reserve `updateUser()` for admin-level operations from your backend. + + + +## Troubleshooting + + + + Each UID must be unique across your CometChat app. If the user already exists, use `updateUser()` instead, or skip creation and proceed to login. + + + Role updates are not allowed via `updateCurrentUserDetails()`. Use the REST API or `updateUser()` with Auth Key to change a user's role. + + + UIDs can only contain alphanumeric characters, underscores, and hyphens. Spaces, punctuation, and other special characters are not allowed. + + + +--- + +## Next Steps + + + + Fetch user lists, search users, and get user details + + + Block and unblock users, retrieve blocked user lists + + + Log users into CometChat after creation + + + Track online/offline status of users in real time + + \ No newline at end of file diff --git a/sdk/react-native/user-presence.mdx b/sdk/react-native/user-presence.mdx index 983f9b7d1..69f414f69 100644 --- a/sdk/react-native/user-presence.mdx +++ b/sdk/react-native/user-presence.mdx @@ -1,8 +1,25 @@ --- title: "User Presence" +description: "Track real-time online/offline status of users in your React Native app using CometChat SDK presence subscriptions and user listeners." --- + +**Quick Reference** - Listen for user presence changes: +```javascript +CometChat.addUserListener("LISTENER_ID", new CometChat.UserListener({ + onUserOnline: (user) => console.log("Online:", user), + onUserOffline: (user) => console.log("Offline:", user), +})); + +// Cleanup +CometChat.removeUserListener("LISTENER_ID"); +``` + + + +**Available via:** [SDK](/sdk/react-native/user-presence) | [UI Kits](/ui-kit/react-native/users) + User Presence helps us understand if a user is available to chat or not. @@ -25,7 +42,7 @@ If none of the above methods are used, no presence will be sent to the logged-in You need to register the `UserListener` using the `addUserListener()` method where ever you wish to receive these events in. - + ```javascript let listenerID = "UNIQUE_LISTENER_ID"; @@ -71,12 +88,16 @@ CometChat.addUserListener( You will receive an object of the `User` class in the listener methods. -We recommend you remove the listener when not in use. + +Presence events are triggered for other users, not for yourself. For example, if User 1 is logged in and User 2 comes online, User 1 receives `onUserOnline` for User 2. Neither User 1 nor User 2 receive presence events for their own status changes — only for others. + -We suggest removing listener in componentWillUnmount() method when not in use. + +Always remove user listeners when the component unmounts using `CometChat.removeUserListener(listenerID)`. Failing to remove listeners can cause memory leaks and duplicate event handling. + - + ```javascript let listenerID = "UNIQUE_LISTENER_ID"; CometChat.removeUserListener(listenerID); @@ -106,3 +127,50 @@ When you fetch the list of users, in the [User](/sdk/react-native/user-managemen * offline - This indicates that the user is currently offline and is not available to chat. 2. `lastActiveAt` - in case the user is offline, this field holds the timestamp of the time when the user was last online. This can be used to display the Last seen of the user if need be. + +## Best Practices + + + + Use `subscribePresenceForAllUsers()` only if your app needs to track all users. For most apps, `subscribePresenceForFriends()` or `subscribePresenceForRoles()` is more efficient and reduces unnecessary network traffic. + + + Presence subscription is configured in `AppSettings` during SDK initialization. You cannot change the subscription type without re-initializing the SDK. Plan your subscription strategy before calling `init()`. + + + When a user is offline, use the `lastActiveAt` timestamp to show "Last seen X minutes ago" in your UI. This gives users context about when the person was last available. + + + +## Troubleshooting + + + + Verify that you configured a presence subscription method (`subscribePresenceForAllUsers`, `subscribePresenceForRoles`, or `subscribePresenceForFriends`) in your `AppSettings` during `init()`. Without this, no presence events are delivered. + + + Offline events are triggered when the SDK detects the user has disconnected. This may have a short delay depending on network conditions. The event will fire once the server confirms the user is offline. + + + If using `subscribePresenceForRoles()`, ensure the target users have the specified roles assigned. If using `subscribePresenceForFriends()`, confirm the users are in each other's friends list. + + + +--- + +## Next Steps + + + + Fetch user lists with online/offline status + + + Create, update, and delete users in CometChat + + + Block and unblock users, retrieve blocked user lists + + + Configure AppSettings including presence subscriptions + + \ No newline at end of file diff --git a/sdk/react-native/users-overview.mdx b/sdk/react-native/users-overview.mdx index b00b6b07a..8c8c40333 100644 --- a/sdk/react-native/users-overview.mdx +++ b/sdk/react-native/users-overview.mdx @@ -1,10 +1,30 @@ --- title: "Users" sidebarTitle: "Overview" +description: "Overview of user functionality in CometChat React Native SDK — create, retrieve, and manage users in your app." --- - +## Overview The primary aim for our Users functionality is to allow you to quickly add users to CometChat. You can begin with [user management](/sdk/react-native/user-management) to sync your users to CometChat. Once that is done, you can [retrieve users](/sdk/react-native/retrieve-users) and display them in your app. + +--- + +## Next Steps + + + + Create, update, and delete users in CometChat + + + Fetch user lists, search users, and get user details + + + Block and unblock users, retrieve blocked user lists + + + Track online/offline status of users in real time + + \ No newline at end of file From 1b7a2ccaef68f09088ac31a6db327bcf9cbd42cc Mon Sep 17 00:00:00 2001 From: Farhan-CometChat Date: Tue, 17 Feb 2026 13:15:29 +0530 Subject: [PATCH 3/8] docs(react-native): Add descriptions, quick references, and navigation to SDK docs - Add meta descriptions to advanced-overview, ai-agents, ai-moderation, authentication-overview, calling-setup, connection-status, managing-web-sockets-connections-manually, real-time-listeners, resources-overview, and upgrading-from-v3 pages - Add quick reference code blocks with common usage patterns to multiple documentation pages - Convert event descriptions to table format for improved readability in ai-agents.mdx - Add warning sections about listener cleanup and memory leak prevention - Add best practices and troubleshooting accordions to ai-agents.mdx and ai-moderation.mdx - Add CardGroup navigation sections with Next Steps to guide users through related topics - Replace blockquote syntax with Info, Note, and Warning components for better visual hierarchy - Improve documentation structure and user navigation flow across React Native SDK pages --- sdk/react-native/advanced-overview.mdx | 12 ++- sdk/react-native/ai-agents.mdx | 96 +++++++++++++++--- sdk/react-native/ai-moderation.mdx | 55 ++++++++++- sdk/react-native/authentication-overview.mdx | 99 ++++++++++++++++--- sdk/react-native/calling-setup.mdx | 2 +- sdk/react-native/connection-status.mdx | 69 ++++++++++--- ...aging-web-sockets-connections-manually.mdx | 54 ++++++++-- sdk/react-native/real-time-listeners.mdx | 61 +++++++++++- sdk/react-native/resources-overview.mdx | 20 +++- sdk/react-native/upgrading-from-v3.mdx | 42 ++++++++ 10 files changed, 454 insertions(+), 56 deletions(-) diff --git a/sdk/react-native/advanced-overview.mdx b/sdk/react-native/advanced-overview.mdx index 7a8e791f6..4005cee48 100644 --- a/sdk/react-native/advanced-overview.mdx +++ b/sdk/react-native/advanced-overview.mdx @@ -1,8 +1,18 @@ --- title: "Advanced" sidebarTitle: "Overview" +description: "Advanced CometChat React Native SDK topics including connection status monitoring and manual WebSocket management." --- +This section helps you to know about the Connection Listeners. +## Next Steps -This section helps you to know about the Connection Listeners. + + +Monitor real-time WebSocket connection status + + +Take control of WebSocket connections + + diff --git a/sdk/react-native/ai-agents.mdx b/sdk/react-native/ai-agents.mdx index f4b88d96a..f6d1464ad 100644 --- a/sdk/react-native/ai-agents.mdx +++ b/sdk/react-native/ai-agents.mdx @@ -1,17 +1,36 @@ --- title: "AI Agents" +description: "Learn how to integrate AI Agents in your React Native app using the CometChat SDK, including real-time event streaming and agentic message handling." --- -# AI Agents Overview + +**Quick Reference** +```javascript +// Listen for real-time AI Agent events +CometChat.addAIAssistantListener("listenerId", { + onAIAssistantEventReceived: (event) => {} +}); + +// Listen for persisted agentic messages +CometChat.addMessageListener("listenerId", { + onAIAssistantMessageReceived: (message) => {}, + onAIToolResultReceived: (message) => {}, + onAIToolArgumentsReceived: (message) => {} +}); +``` + + +## Overview AI Agents enable intelligent, automated interactions within your application. They can process user messages, trigger tools, and respond with contextually relevant information. For a broader introduction, see the [AI Agents section](/ai-agents). -> **Note:** -> Currently, an Agent only responds to **Text Messages**. + +Currently, an Agent only responds to **Text Messages**. + ## Agent Run Lifecycle and Message Flow -This section explains how a user’s text message to an Agent becomes a structured "run" which emits real-time events and then produces agentic messages for historical retrieval. +This section explains how a user's text message to an Agent becomes a structured "run" which emits real-time events and then produces agentic messages for historical retrieval. - A user sends a text message to an Agent. - The platform starts a run and streams real-time events via the **`AIAssistantListener`**. - After the run completes, persisted Agentic Messages arrive via the **`MessageListener`**. @@ -34,7 +53,7 @@ Events are received via the **`onAIAssistantEventReceived`** method of the **`AI Notes: - `Run Start` and `Run Finished` are always emitted. - `Tool Call` events appear only when a backend or frontend tool is invoked. There can be multiple tool calls in a single run. -- `Text Message` events are always emitted and carry the assistant’s reply incrementally. +- `Text Message` events are always emitted and carry the assistant's reply incrementally. @@ -69,16 +88,26 @@ Notes: -#### Event descriptions -- Run Start: A new run has begun for the user’s message. -- Tool Call Start: The agent decided to invoke a tool. -- Tool Call Arguments: Arguments being passed to the tool. -- Tool Call End: Tool execution completed. -- Tool Call Result: Tool’s output is available. -- Text Message Start: The agent started composing a reply. -- Text Message Content: Streaming content chunks for progressive rendering. -- Text Message End: The agent reply is complete. -- Run Finished: The run is finalized; persisted messages will follow. + +Always remove AI Assistant listeners when the component unmounts to prevent memory leaks. +```javascript +CometChat.removeAIAssistantListener("unique_listener_id"); +``` + + +#### Event Descriptions + +| Event | Description | +|-------|-------------| +| Run Start | A new run has begun for the user's message | +| Tool Call Start | The agent decided to invoke a tool | +| Tool Call Arguments | Arguments being passed to the tool | +| Tool Call End | Tool execution completed | +| Tool Call Result | Tool's output is available | +| Text Message Start | The agent started composing a reply | +| Text Message Content | Streaming content chunks for progressive rendering | +| Text Message End | The agent reply is complete | +| Run Finished | The run is finalized; persisted messages will follow | ### Agentic Messages @@ -131,4 +160,39 @@ These events are received via the **`MessageListener`** after the run completes. CometChat.removeMessageListener(listnerId); ``` - \ No newline at end of file + + + +Always remove message listeners when the component unmounts to prevent memory leaks. +```javascript +CometChat.removeMessageListener("unique_listener_id"); +``` + + + + +- Register both `AIAssistantListener` (for real-time streaming) and `MessageListener` (for persisted messages) to get the complete agent interaction flow +- Use `Text Message Content` events for progressive rendering of the agent's reply as it streams in +- Handle `Tool Call` events to show tool execution status in your UI (e.g., loading indicators) +- Always remove both listeners on component unmount to avoid memory leaks +- Since agents only respond to text messages, validate the message type before sending to an agent + + + +- **No events received**: Ensure you registered the `AIAssistantListener` with a unique listener ID before sending a message to the agent. +- **Missing agentic messages**: Agentic messages arrive via `MessageListener` after the run completes. Make sure you have both listeners registered. +- **Duplicate events**: Verify you are not registering the same listener ID multiple times without removing the previous one. +- **Tool call events not appearing**: Tool call events only fire when the agent invokes a tool. Not all runs include tool calls. + + + +## Next Steps + + + +Explore the full AI Agents platform documentation + + +Automatically moderate messages using AI + + diff --git a/sdk/react-native/ai-moderation.mdx b/sdk/react-native/ai-moderation.mdx index 148cbd0ad..fcaa57fd8 100644 --- a/sdk/react-native/ai-moderation.mdx +++ b/sdk/react-native/ai-moderation.mdx @@ -1,7 +1,26 @@ --- title: "AI Moderation" +description: "Learn how to use AI-powered message moderation in your React Native app using the CometChat SDK, including real-time moderation events and handling disapproved messages." --- + +**Quick Reference** +```javascript +// Send a message and check moderation status +CometChat.sendMessage(textMessage).then((message) => { + const status = message.getModerationStatus(); + // CometChat.ModerationStatus.PENDING | APPROVED | DISAPPROVED +}); + +// Listen for moderation results +CometChat.addMessageListener("listenerId", new CometChat.MessageListener({ + onMessageModerated: (message) => { + const status = message.getModerationStatus(); + } +})); +``` + + ## Overview AI Moderation in the CometChat SDK helps ensure that your chat application remains safe and compliant by automatically reviewing messages for inappropriate content. This feature leverages AI to moderate messages in real-time, reducing manual intervention and improving user experience. @@ -16,7 +35,7 @@ Before using AI Moderation, ensure the following: 1. Moderation is enabled for your app in the [CometChat Dashboard](https://app.cometchat.com) 2. Moderation rules are configured under **Moderation > Rules** -3. You're using CometChat SDK version that supports moderation +3. You're using a CometChat SDK version that supports moderation ## How It Works @@ -202,6 +221,13 @@ Register a message listener to receive moderation results in real-time: + +Always remove message listeners when the component unmounts to prevent memory leaks. +```javascript +CometChat.removeMessageListener("MODERATION_LISTENER"); +``` + + ### Step 3: Handle Disapproved Messages When a message is disapproved, handle it appropriately in your UI: @@ -223,5 +249,30 @@ function handleDisapprovedMessage(message) { } ``` + + +- Always check `getModerationStatus()` after sending a message to show appropriate UI indicators (e.g., a pending badge) +- Register the `onMessageModerated` listener early in your app lifecycle so you don't miss moderation results +- Provide clear feedback to users when their message is disapproved — avoid silently hiding content without explanation +- Custom and Action messages are not moderated — if you need moderation on custom message types, implement your own server-side checks +- Consider caching moderation status locally to avoid re-checking on message list re-renders + + + +- **Moderation status always PENDING**: Ensure moderation rules are configured in the CometChat Dashboard under **Moderation > Rules**. +- **`onMessageModerated` not firing**: Verify you registered a `MessageListener` with the correct listener ID and that moderation is enabled for your app. +- **Custom messages not being moderated**: This is expected — AI Moderation only applies to text, image, and video messages. +- **Disapproved messages still visible**: Make sure your `onMessageModerated` handler updates the UI when a message status changes to `DISAPPROVED`. + + + ## Next Steps -After implementing AI Moderation, consider adding a reporting feature to allow users to flag messages they find inappropriate. For more details, see the [Flag Message](/sdk/react-native/flag-message) documentation. \ No newline at end of file + + + +Allow users to report inappropriate messages + + +Add intelligent AI agent interactions + + diff --git a/sdk/react-native/authentication-overview.mdx b/sdk/react-native/authentication-overview.mdx index b16de3557..9af99c636 100644 --- a/sdk/react-native/authentication-overview.mdx +++ b/sdk/react-native/authentication-overview.mdx @@ -56,10 +56,10 @@ The CometChat SDK maintains the session of the logged-in user within the SDK. Th if (!user) { CometChat.login(UID, authKey).then( (user) => { - console.log("Login Successful:", { user }); + console.log("Login Successful:", user); }, (error) => { - console.log("Login failed with exception:", { error }); + console.log("Login failed with exception:", error); } ); } @@ -81,16 +81,16 @@ The CometChat SDK maintains the session of the logged-in user within the SDK. Th if (!user) { CometChat.login(UID, authKey).then( (user: CometChat.User) => { - console.log("Login Successful:", { user }); + console.log("Login Successful:", user); }, (error: CometChat.CometChatException) => { - console.log("Login failed with exception:", { error }); + console.log("Login failed with exception:", error); } ); } }, (error: CometChat.CometChatException) => { - console.log("Some Error Occured", { error }); + console.log("Some Error Occured", error); } ); ``` @@ -104,6 +104,35 @@ The CometChat SDK maintains the session of the logged-in user within the SDK. Th After the user logs in, their information is returned in the `User` object on `Promise` resolved. + +**On Success** — `console.log("Login Successful:", user)` returns: +```json +Login Successful: { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "authToken": "cometchat-uid-2_17713124898af10df254d51ef6ffc14e79955ac0", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771311515, + "role": "default", + "status": "online", + "tags": ["tag1"] +} +``` + +**On Failure** — `console.log("Login failed with exception:", error)` returns: +```json +Login failed with exception: { + "code": "ERR_UID_NOT_FOUND", + "name": "UID not found", + "message": "The UID provided does not exist.", + "details": {} +} +``` + + ## Login using Auth Token This advanced authentication procedure does not use the Auth Key directly in your client code, thus ensuring safety. @@ -131,10 +160,10 @@ This advanced authentication procedure does not use the Auth Key directly in you if (!user) { CometChat.login(authToken).then( (user) => { - console.log("Login Successful:", { user }); + console.log("Login Successful:", user); }, (error) => { - console.log("Login failed with exception:", { error }); + console.log("Login failed with exception:", error); } ); } @@ -155,16 +184,16 @@ This advanced authentication procedure does not use the Auth Key directly in you if (!user) { CometChat.login(authToken).then( (user: CometChat.User) => { - console.log("Login Successful:", { user }); + console.log("Login Successful:", user); }, (error: CometChat.CometChatException) => { - console.log("Login failed with exception:", { error }); + console.log("Login failed with exception:", error); } ); } }, (error: CometChat.CometChatException) => { - console.log("Some Error Occured", { error }); + console.log("Some Error Occured", error); } ); ``` @@ -177,6 +206,35 @@ This advanced authentication procedure does not use the Auth Key directly in you After the user logs in, their information is returned in the `User` object on the `Promise` resolved. + +**On Success** — `console.log("Login Successful:", user)` returns: +```json +Login Successful: { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "authToken": "cometchat-uid-2_17713124898af10df254d51ef6ffc14e79955ac0", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771311515, + "role": "default", + "status": "online", + "tags": ["tag1"] +} +``` + +**On Failure** — `console.log("Login failed with exception:", error)` returns: +```json +Login failed with exception: { + "code": "ERR_AUTH_TOKEN_NOT_FOUND", + "name": "Auth token not found", + "message": "The Auth Token provided is invalid or expired.", + "details": {} +} +``` + + ## Logout You can use the `logout()` method to log out the user from CometChat. We suggest you call this method once your user has been successfully logged out from your app. @@ -189,7 +247,7 @@ You can use the `logout()` method to log out the user from CometChat. We suggest console.log("Logout completed successfully"); }, (error) => { - console.log("Logout failed with exception:", { error }); + console.log("Logout failed with exception:", error); } ); ``` @@ -201,13 +259,30 @@ You can use the `logout()` method to log out the user from CometChat. We suggest console.log("Logout completed successfully"); }, (error: CometChat.CometChatException) => { - console.log("Logout failed with exception:", { error }); + console.log("Logout failed with exception:", error); } ); ``` + +**On Success** — `console.log("Logout completed successfully")` returns: +``` +Logout completed successfully +``` + +**On Failure** — `console.log("Logout failed with exception:", error)` returns: +```json +Logout failed with exception: { + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in.", + "details": {} +} +``` + + - Always check for an existing session with `getLoggedinUser()` before calling `login()` diff --git a/sdk/react-native/calling-setup.mdx b/sdk/react-native/calling-setup.mdx index 6896922cc..bd2de66f1 100644 --- a/sdk/react-native/calling-setup.mdx +++ b/sdk/react-native/calling-setup.mdx @@ -153,7 +153,7 @@ The `CallAppSettings` class allows you to configure three settings: * **Region**: The region where you app was created. * **Host(host: string)**: This method takes the client URL as input and uses this client URL instead of the default client URL. This can be used in case of dedicated deployment of CometChat. -You need to call `init()` before calling any other method from CometChatCalls. We suggest you call the `init()` method on app startup, preferably in the `index.js` file. +You need to call `init()` before calling any other method from CometChatCalls. We suggest you call the `init()` method on app startup, preferably in the `App.tsx` file. diff --git a/sdk/react-native/connection-status.mdx b/sdk/react-native/connection-status.mdx index 4733f7fa1..d6dc91ab0 100644 --- a/sdk/react-native/connection-status.mdx +++ b/sdk/react-native/connection-status.mdx @@ -1,8 +1,23 @@ --- title: "Connection Status" +description: "Learn how to monitor the real-time WebSocket connection status using the CometChat React Native SDK, including connecting, connected, and disconnected states." --- - + +**Quick Reference** +```javascript +// Listen for connection status changes +CometChat.addConnectionListener("listenerId", new CometChat.ConnectionListener({ + onConnected: () => {}, + inConnecting: () => {}, + onDisconnected: () => {} +})); + +// Get current connection status +var status = CometChat.getConnectionStatus(); +// Returns: "connecting" | "connected" | "disconnected" +``` + CometChat SDK provides you with a mechanism to get real-time status of the connection to CometChat web-socket servers. @@ -19,7 +34,7 @@ Once the connection is broken, the disconnected callback is triggered, the SDK a To receive real-time connection status, you need to register `ConnectionListener` wherever you wish to receive the real-time status. You can use the `addConnectionListener()` method to do so. - + ```javascript var listenerID = "UNIQUE_LISTENER_ID"; CometChat.addConnectionListener( @@ -69,16 +84,21 @@ CometChat.addConnectionListener( - - -We recommend you to add the Connection Listener in your method on app startup, preferably in the index.js file. Once you have successfully initialized CometChat. + +Always remove connection listeners when the component unmounts to prevent memory leaks. +```javascript +CometChat.removeConnectionListener("UNIQUE_LISTENER_ID"); +``` + + +We recommend you to add the Connection Listener in your method on app startup, preferably in the App.tsx file. Once you have successfully initialized CometChat. You can also get the current connection status by using `getConnectionStatus` property provided by CometChat SDK - + ```javascript var connectionStatus = CometChat.getConnectionStatus(); ``` @@ -94,8 +114,35 @@ var connectionStatus: string = CometChat.getConnectionStatus(); -The `CometChat.getConnectionStatus` method will return either of the below 4 values: - -1. connecting -2. connected -3. disconnected +The `CometChat.getConnectionStatus` method will return either of the below 3 values: + +1. `connecting` +2. `connected` +3. `disconnected` + + + +- Register the connection listener early in your app lifecycle (after `CometChat.init()`) to catch connection state changes from the start +- Use connection status to show a connectivity indicator in your UI (e.g., a banner when disconnected) +- When the status changes to `connected` after a `disconnected` state, consider refreshing your message list to fetch any messages missed during the disconnection +- Avoid making SDK calls (sending messages, fetching data) while the status is `disconnected` — queue them and retry once `connected` + + + +- **Listener not firing**: Ensure you registered the `ConnectionListener` with a unique listener ID after calling `CometChat.init()`. +- **Stuck in connecting state**: Check your network connection and verify that the App ID and region are correct in your `AppSettings`. +- **Frequent disconnections**: This is typically caused by network instability. The SDK handles reconnection automatically in auto mode. +- **`onFeatureThrottled` firing**: This indicates your app is hitting rate limits. Reduce the frequency of API calls. + + + +## Next Steps + + + +Take full control of WebSocket connections + + +Register listeners for users, groups, messages, and calls + + diff --git a/sdk/react-native/managing-web-sockets-connections-manually.mdx b/sdk/react-native/managing-web-sockets-connections-manually.mdx index f79a9de8e..1db29d054 100644 --- a/sdk/react-native/managing-web-sockets-connections-manually.mdx +++ b/sdk/react-native/managing-web-sockets-connections-manually.mdx @@ -1,10 +1,24 @@ --- title: "Managing Web Sockets Connections Manually" +description: "Learn how to manually manage WebSocket connections in the CometChat React Native SDK, including connecting, disconnecting, and maintaining background connections." --- + +**Quick Reference** +```javascript +// Disable auto connection during init +new CometChat.AppSettingsBuilder() + .autoEstablishSocketConnection(false) + .build(); +// Manually connect / disconnect / ping +CometChat.connect(); +CometChat.disconnect(); +CometChat.ping(); +``` + -## Default SDK behaviour on login +## Default SDK Behaviour on Login When the login method of the SDK is called, the SDK performs the below operations: @@ -34,9 +48,7 @@ To enable auto mode, you need to set the autoEstablishSocketConnection() method | App in background | Immediately disconnected with WebSocket | - Reconnection If the app is in the foreground and there is no internet connection, the SDK will handle the reconnection of the WebSocket in auto mode. - ## Manual Mode @@ -113,7 +125,7 @@ CometChat.init(appID, appSetting).then( You can manage the connection to the web-socket server using the connect() , disconnect() and ping() methods provided by the SDK. -## Connect to the web-socket server +## Connect to the Web-Socket Server You need to use the connect() method provided by the CometChat class to establish the connection to the web-socket server. Please make sure that the user is logged in to the SDK before calling this method. You can use the CometChat.getLoggedInUser() method to check this. Once the connection is established, you will start receiving all the real-time events for the logged in user @@ -134,7 +146,7 @@ CometChat.connect({ onSuccess: Function, onError: Function }); -## Disconnect from the web-socket server +## Disconnect from the Web-Socket Server You can use the disconnect() method provided by the CometChat class to break the established connection. Once the connection is broken, you will stop receiving all the real-time events for the logged in user. @@ -155,12 +167,10 @@ CometChat.disconnect({ onSuccess: Function, onError: Function }); -### Maintain long-standing background connection +### Maintain Long-Standing Background Connection - To ensure that the WebSocket connection is always alive, you can create a service or background service that calls the CometChat.ping() method in a loop. This will ensure that the ping message is sent to the server every 30 seconds, even if the app is not in the foreground. - You can maintain a long-standing background connection event when your app is in the background, call the CometChat.ping() method within 30 seconds of your app entering the background or after the previous ping() call. @@ -185,3 +195,31 @@ CometChat.ping({ onSuccess: Function, onError: Function }); ## Reconnection If manual mode is enabled and the app is in the foreground, the SDK will automatically reconnect the WebSocket if the internet connection is lost. However, if the app is in the background and the WebSocket is disconnected or you called `CometChat.disconnect()`, then you will need to call the `CometChat.connect()` method to create a new WebSocket connection. + + + +- Use auto mode (default) unless you have a specific need to control the WebSocket lifecycle — it handles reconnection and background disconnection automatically +- In manual mode, always call `CometChat.connect()` after a successful login and before attempting to send or receive messages +- Set up a background task or service to call `CometChat.ping()` every 25 seconds (under the 30-second timeout) if you need background connectivity +- Use the [Connection Status](/sdk/react-native/connection-status) listener alongside manual mode to track when the connection drops and reconnects +- Always call `CometChat.disconnect()` when the user logs out to clean up resources + + + +- **Not receiving real-time events in manual mode**: Ensure you called `CometChat.connect()` after login. In manual mode, the SDK does not connect automatically. +- **Connection drops after 30 seconds in background**: This is expected behavior. Call `CometChat.ping()` within 30 seconds to keep the connection alive. +- **`connect()` fails**: Verify the user is logged in using `CometChat.getLoggedInUser()`. The SDK requires an authenticated user before establishing a WebSocket connection. +- **Messages missed while disconnected**: Fetch missed messages using `MessagesRequest` after reconnecting. The SDK does not queue messages during disconnection. + + + +## Next Steps + + + +Monitor real-time WebSocket connection status + + +Register listeners for users, groups, messages, and calls + + diff --git a/sdk/react-native/real-time-listeners.mdx b/sdk/react-native/real-time-listeners.mdx index ee34d9b64..e02846e22 100644 --- a/sdk/react-native/real-time-listeners.mdx +++ b/sdk/react-native/real-time-listeners.mdx @@ -1,8 +1,24 @@ --- title: "All Real Time Listeners" +description: "Learn how to register and manage all real-time listeners in the CometChat React Native SDK, including User, Group, Message, and Call listeners." --- - + +**Quick Reference** +```javascript +// Register listeners +CometChat.addUserListener("id", new CometChat.UserListener({ ... })); +CometChat.addGroupListener("id", new CometChat.GroupListener({ ... })); +CometChat.addMessageListener("id", new CometChat.MessageListener({ ... })); +CometChat.addCallListener("id", new CometChat.CallListener({ ... })); + +// Remove listeners +CometChat.removeUserListener("id"); +CometChat.removeGroupListener("id"); +CometChat.removeMessageListener("id"); +CometChat.removeCallListener("id"); +``` + CometChat provides 4 listeners viz. @@ -11,6 +27,10 @@ CometChat provides 4 listeners viz. 3. [Message Listener](#message-listener) 4. [Call Listener](#call-listener) + +Always remove all listeners when the component unmounts to prevent memory leaks. Ensure each listener has a unique ID — using duplicate IDs can lead to unexpected behavior and loss of events. + + ## User Listener The `UserListener` class provides you with live events related to users. Below are the callback methods provided by the `UserListener` class. @@ -95,7 +115,7 @@ The `GroupListener` class provides you with all the real-time events related to | **onGroupMemberLeft(action: CometChat.Action, leftUser: CometChat.User, leftGroup: CometChat.Group)** | This method is triggered when a user who was a member of any group leaves the group. All the members of the group receive this event. | | **onGroupMemberKicked(action: CometChat.Action, kickedUser: CometChat.User, kickedBy: CometChat.User, kickedFrom: CometChat.Group)** | This method is triggered when a user is kicked from a group. All the members including the user receive this event | | **onGroupMemberBanned(action: CometChat.Action, bannedUser: CometChat.User, bannedBy: CometChat.User, bannedFrom: CometChat.Group)** | This method is triggered when a user is banned from a group. All the members including the user receive this event | -| **onGroupMemberUnbanned(action: CometChat.Action, unbannedUser: CometChat.User, unbannedBy: CometChat.User, unbannedFrom: CometChat.Group)** | This method is triggered when a user is banned from a group. All the members of the group receive this event. | +| **onGroupMemberUnbanned(action: CometChat.Action, unbannedUser: CometChat.User, unbannedBy: CometChat.User, unbannedFrom: CometChat.Group)** | This method is triggered when a user is unbanned from a group. All the members of the group receive this event. | | **onGroupMemberScopeChanged(action: CometChat.Action, changedUser: CometChat.User, newScope: string, oldScope: string, changedGroup: CometChat.Group)** | This method is triggered when the scope of any Group Member has been changed. All the members that are a part of that group receive this event | | **onMemberAddedToGroup(action: CometChat.Action, userAdded: CometChat.User, addedBy: CometChat.User, addedTo: CometChat.Group)** | This method is triggered when a user is added to any group. All the members including the user himself receive this event. | @@ -306,7 +326,7 @@ The `MessageListener` class provides you with live events related to messages. B | **onInteractionGoalCompleted(receipt: CometChat.InteractionReceipt)** | This event is triggered when an interaction Goal is achieved. | | **onTransientMessageReceived(receipt: CometChat.TransientMessage)** | This event is triggered when a Transient Message is received. | | **onMessageReactionAdded(receipt: CometChat.ReactionEvent)** | This event is triggered when a reaction is added to a message in a user/group conversation. | -| **onMessageReactionRemoved(receipt: CometChat.ReactionEvent)** | This event is triggered when a reaction is remove from a message in a user/group conversation. | +| **onMessageReactionRemoved(receipt: CometChat.ReactionEvent)** | This event is triggered when a reaction is removed from a message in a user/group conversation. | To add the `MessageListener`, you need to use the `addMessageListener()` method provided by the `CometChat` class. @@ -524,3 +544,38 @@ CometChat.removeCallListener(listenerID); + + + +- Register listeners as early as possible in your app lifecycle (e.g., after successful login) to avoid missing events +- Use unique, descriptive listener IDs (e.g., `"CHAT_SCREEN_MESSAGE_LISTENER"`) to make debugging easier +- Always remove listeners when the component unmounts or the user logs out +- Avoid registering the same listener ID multiple times — this overwrites the previous listener silently +- For React Native, use `useEffect` cleanup functions to handle listener removal automatically + + + +- **Events not firing**: Ensure the listener is registered with a unique ID and that you're handling the correct callback method for the event type. +- **Duplicate events**: Check that you're not registering the same listener multiple times without removing the previous one first. +- **Events stop after navigation**: If you remove listeners on screen unmount, re-register them when the screen mounts again. +- **Missing group events**: Group listeners only fire for groups the logged-in user is a member of. Verify group membership. +- **Call events not received**: Ensure the CometChat Calling SDK is properly initialized alongside the Chat SDK. + + + +## Next Steps + + + +Track when users come online or go offline + + +Handle incoming messages in real time + + +Show when users are typing + + +Implement voice and video calling + + diff --git a/sdk/react-native/resources-overview.mdx b/sdk/react-native/resources-overview.mdx index c9b7d6910..49e3abf37 100644 --- a/sdk/react-native/resources-overview.mdx +++ b/sdk/react-native/resources-overview.mdx @@ -1,12 +1,28 @@ --- title: "Resources" sidebarTitle: "Overview" +description: "Helpful resources for integrating CometChat into your React Native app, including real-time listeners, push notifications, and migration guides." --- - - We have a number of resources that will help you while integrating CometChat in your app. You can begin with the [all real-time listeners](/sdk/react-native/real-time-listeners) guide. If you're upgrading from v1, we recommend reading our [upgrading from v3](/sdk/react-native/upgrading-from-v3) guide. + +## Next Steps + + + +Register listeners for users, groups, messages, and calls + + +Set up FCM push notifications for Android + + +Set up APNs push notifications for iOS + + +Migration guide for upgrading from SDK v3 + + diff --git a/sdk/react-native/upgrading-from-v3.mdx b/sdk/react-native/upgrading-from-v3.mdx index a2186f43f..1d9222872 100644 --- a/sdk/react-native/upgrading-from-v3.mdx +++ b/sdk/react-native/upgrading-from-v3.mdx @@ -1,8 +1,23 @@ --- title: "Upgrading From V3" +description: "Learn how to upgrade your React Native app from CometChat SDK v3 to v4, including dependency changes and updated import statements." --- + +**Quick Reference** +```bash +# Install v4 Chat SDK +npm i @cometchat/chat-sdk-react-native +# Install v4 Calls SDK +npm i @cometchat/calls-sdk-react-native +``` +```javascript +// Updated imports +import { CometChat } from '@cometchat/chat-sdk-react-native'; +import { CometChatCalls } from '@cometchat/calls-sdk-react-native'; +``` + Upgrading from v3.x to v4 is fairly simple. Below are the major changes that are released as a part of CometChat v4: @@ -61,3 +76,30 @@ import {CometChatCalls} from '@cometchat/calls-sdk-react-native'; + + + +- Update both the Chat SDK and Calls SDK together to avoid version incompatibilities +- After updating dependencies, do a clean build (`npx react-native start --reset-cache`) to clear any cached modules +- Search your entire project for old import paths (`@cometchat-pro/react-native-chat`) and replace them with the new v4 paths +- Test all listeners and callbacks after upgrading — some callback signatures may have changed between v3 and v4 + + + +- **Module not found errors**: Ensure you've removed the old v3 packages (`@cometchat-pro/react-native-chat`) and installed the new v4 packages. +- **Duplicate module errors**: Run `npm dedupe` or delete `node_modules` and reinstall to resolve conflicting versions. +- **iOS build fails after upgrade**: Run `pod install --repo-update` in the `ios/` directory to update native dependencies. +- **Android build fails**: Clean the build with `./gradlew clean` in the `android/` directory and rebuild. + + + +## Next Steps + + + +Complete the v4 SDK setup + + +Set up user authentication with v4 + + From 59b8473921d1410a2c080ff322322126d194d6e1 Mon Sep 17 00:00:00 2001 From: Farhan-CometChat Date: Tue, 17 Feb 2026 16:13:34 +0530 Subject: [PATCH 4/8] docs(react-native): Add messaging examples and quick references to SDK docs - Add "Send a Message" section with sample console output for CometChat.sendMessage() - Add "Receive Messages in Real Time" section with sample outputs for message listeners - Add detailed JSON examples showing success and failure responses - Add accordion components to organize console output examples - Improve messaging documentation with practical code examples and expected outputs --- sdk/react-native/messaging-overview.mdx | 397 ++++++++++++++++++ sdk/react-native/send-message.mdx | 517 ++++++++++++++++++++++++ sdk/react-native/setup-sdk.mdx | 19 +- 3 files changed, 932 insertions(+), 1 deletion(-) diff --git a/sdk/react-native/messaging-overview.mdx b/sdk/react-native/messaging-overview.mdx index d6e3f28d5..3d2ed42a0 100644 --- a/sdk/react-native/messaging-overview.mdx +++ b/sdk/react-native/messaging-overview.mdx @@ -31,6 +31,403 @@ At the minimum, you must add code for [sending messages](/sdk/react-native/send- Once you've implemented that, you can proceed to more advanced features like [typing indicators](/sdk/react-native/typing-indicators) and [delivery & read receipts](/sdk/react-native/delivery-read-receipts). +### Send a Message + +Use `CometChat.sendMessage()` to send a text message to a user or group. The method returns a `TextMessage` object on success. + + +**On Success** — `console.log("Message sent successfully:", message)` returns: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-3", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "text": "Hello", + "resource": "REACT_NATIVE-4_0_13-398e7dd2-3481-44ed-8837-eadf1c9c6f5d-1771320626645", + "entities": { + "sender": { + "entity": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771320632, + "tags": [] + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771320647, + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "tags": [] + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "moderation": { + "status": "pending" + } + }, + "text": "Hello", + "id": "25182", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771320632, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771320647, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771320772, + "updatedAt": 1771320772, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } +} +``` + +**On Failure** — `console.log("Message sending failed with error:", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in. Please log in before sending a message.", + "details": {} +} +``` + + +### Receive Messages in Real Time + +Use `CometChat.addMessageListener()` to listen for incoming text, media, and custom messages while your app is running. + + +**onTextMessageReceived** — `console.log("Text message received successfully", textMessage)` returns: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771320632, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771320647, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "moderation": { + "status": "approved" + }, + "resource": "REACT_NATIVE-4_0_13-6cfc6ba5-feae-42a0-a773-000d4e41a333-1771320636087", + "text": "Hello" + }, + "text": "Hello", + "id": "25180", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771320647, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771320632, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771320657, + "updatedAt": 1771320657, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } +} +``` + +**onMediaMessageReceived** — `console.log("Media message received successfully", mediaMessage)` returns: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "image", + "receiverType": "user", + "category": "message", + "data": { + "attachments": [ + { + "extension": "jpg", + "mimeType": "image/jpeg", + "name": "44.jpg", + "size": 142099, + "url": "https://data-in.cometchat.io/2748663902141719/media/1771320861_514214897_9876c9a3f300f29c8ee619765c1ad768.jpg" + } + ], + "category": "message", + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771320632, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771320859, + "name": "Nancy Grace", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "moderation": { + "status": "approved" + }, + "resource": "REACT_NATIVE-4_0_13-6cfc6ba5-feae-42a0-a773-000d4e41a333-1771320636087", + "type": "image", + "url": "https://data-in.cometchat.io/2748663902141719/media/1771320861_514214897_9876c9a3f300f29c8ee619765c1ad768.jpg" + }, + "id": "25183", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771320859, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771320632, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771320862, + "updatedAt": 1771320862 +} +``` + +**onCustomMessageReceived** — `console.log("Custom message received successfully", customMessage)` returns: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "test-custom", + "receiverType": "user", + "category": "custom", + "customData": { + "greeting": "Hello from custom message!", + "timestamp": 1771324022864 + }, + "data": { + "customData": { + "greeting": "Hello from custom message!", + "timestamp": 1771324022864 + }, + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771323089, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771323567, + "name": "Nancy Grace", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "moderation": { + "status": "approved" + }, + "resource": "REACT_NATIVE-4_0_14-5cebfc4b-80f7-44df-8a0a-5a760ffe5239-1771321973734", + "text": "Sent a custom message" + }, + "id": "25191", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771323567, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771323089, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771324025, + "updatedAt": 1771324025, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } +} +``` + + ## Next Steps diff --git a/sdk/react-native/send-message.mdx b/sdk/react-native/send-message.mdx index 26fd2275c..76e1dd137 100644 --- a/sdk/react-native/send-message.mdx +++ b/sdk/react-native/send-message.mdx @@ -183,6 +183,112 @@ The `TextMessage` class constructor takes the following parameters: When a text message is sent successfully, the response will include a `TextMessage` object which includes all information related to the sent message. + +**On Success** — `console.log("Message sent successfully:", message)` returns: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-3", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "text": "Hello world!", + "resource": "REACT_NATIVE-4_0_13-398e7dd2-3481-44ed-8837-eadf1c9c6f5d-1771320626645", + "entities": { + "sender": { + "entity": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771320632, + "tags": [] + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771320647, + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "tags": [] + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "moderation": { + "status": "pending" + } + }, + "text": "Hello world!", + "id": "25182", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771320632, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771320647, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771320772, + "updatedAt": 1771320772, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } +} +``` + +**On Failure** — `console.log("Message sending failed with error:", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in. Please log in before sending a message.", + "details": {} +} +``` + + ### Set Quoted Message Id To set a quoted message ID for a message, use the `setQuotedMessageId()` method of the TextMessage class. This method accepts the ID of the message to be quoted. @@ -512,6 +618,104 @@ The `MediaMessage` class constructor takes the following parameters: | **messageType** | The type of the message that needs to be sent which in this case can be:
1.`CometChat.MESSAGE_TYPE.IMAGE`
2.`CometChat.MESSAGE_TYPE.VIDEO`
3.`CometChat.MESSAGE_TYPE.AUDIO`
4.`CometChat.MESSAGE_TYPE.FILE` | YES | | **receiverType** | The type of the receiver to whom the message is to be sent.
`1. CometChat.RECEIVER_TYPE.USER`
`2. CometChat.RECEIVER_TYPE.GROUP` | YES | + +**On Success** — `console.log("Media message sent successfully", message)` returns: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-3", + "type": "image", + "receiverType": "user", + "category": "message", + "data": { + "category": "message", + "type": "image", + "resource": "REACT_NATIVE-4_0_14-542c56fc-a1a6-4df4-a5e4-549f3cf17550-1771321970718", + "url": "https://data-in.cometchat.io/2748663902141719/media/1771323061_1750099251_c35f9734fc20947b7456bbea68126f99.png", + "attachments": [ + { + "name": "1770616246_260562078_3832605b5c8a337ac672b0c60933d208.png", + "extension": "png", + "size": 2295572, + "mimeType": "image/png", + "url": "https://data-in.cometchat.io/2748663902141719/media/1771323061_1750099251_c35f9734fc20947b7456bbea68126f99.png" + } + ], + "entities": { + "sender": { + "entity": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771323060, + "tags": [] + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "status": "offline", + "role": "default", + "lastActiveAt": 1771322968, + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "tags": [] + }, + "entityType": "user" + } + }, + "moderation": { + "status": "pending" + } + }, + "id": "25189", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771323060, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771322968, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771323061, + "updatedAt": 1771323061 +} +``` + +**On Failure** — `console.log("Media message sending failed with error", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in. Please log in before sending a message.", + "details": {} +} +``` + + ### 2. By Providing the URL of the File The second way to send media messages using the CometChat SDK is to provide the SDK with the URL of any file that is hosted on your servers or any cloud storage. To achieve this you will have to make use of the Attachment class. For more information, you can refer to the below code snippet: @@ -649,6 +853,103 @@ The second way to send media messages using the CometChat SDK is to provide the When a media message is sent successfully, the response will include a `MediaMessage` object which includes all information related to the sent message. + +**On Success** — `console.log("message", mediaMessage)` returns: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-3", + "type": "image", + "receiverType": "user", + "category": "message", + "data": { + "category": "message", + "type": "image", + "resource": "REACT_NATIVE-4_0_14-542c56fc-a1a6-4df4-a5e4-549f3cf17550-1771321970718", + "url": "https://data-in.cometchat.io/2748663902141719/media/1771323061_1750099251_c35f9734fc20947b7456bbea68126f99.png", + "attachments": [ + { + "name": "mario", + "extension": "png", + "mimeType": "image/png", + "url": "https://pngimg.com/uploads/mario/mario_PNG125.png" + } + ], + "entities": { + "sender": { + "entity": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771323060, + "tags": [] + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "status": "offline", + "role": "default", + "lastActiveAt": 1771322968, + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "tags": [] + }, + "entityType": "user" + } + }, + "moderation": { + "status": "pending" + } + }, + "id": "25189", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771323060, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771322968, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771323061, + "updatedAt": 1771323061 +} +``` + +**On Failure** — `console.log("error in sending message", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in. Please log in before sending a message.", + "details": {} +} +``` + + ## Multiple Attachments in a Media Message Starting version 3.0.9 & above the SDK supports sending multiple attachments in a single media message. As in the case of a single attachment in a media message, there are two ways you can send Media Messages using the CometChat SDK: @@ -993,6 +1294,109 @@ When a media message is sent successfully, the response will include a `MediaMes You can use the `setMetadata()`, `setCaption()` & `setTags()` methods to add metadata, caption and tags respectively in exactly the same way as it is done while sending a single file or attachment in a Media Message. + +**On Success** — `console.log("message", mediaMessage)` returns: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-3", + "type": "image", + "receiverType": "user", + "category": "message", + "data": { + "category": "message", + "type": "image", + "resource": "REACT_NATIVE-4_0_14-542c56fc-a1a6-4df4-a5e4-549f3cf17550-1771321970718", + "url": "https://data-in.cometchat.io/2748663902141719/media/1771323061_1750099251_c35f9734fc20947b7456bbea68126f99.png", + "attachments": [ + { + "name": "mario", + "extension": "png", + "mimeType": "image/png", + "url": "https://pngimg.com/uploads/mario/mario_PNG125.png" + }, + { + "name": "jaguar", + "extension": "png", + "mimeType": "image/png", + "url": "https://pngimg.com/uploads/jaguar/jaguar_PNG20759.png" + } + ], + "entities": { + "sender": { + "entity": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771323060, + "tags": [] + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "status": "offline", + "role": "default", + "lastActiveAt": 1771322968, + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "tags": [] + }, + "entityType": "user" + } + }, + "moderation": { + "status": "pending" + } + }, + "id": "25189", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771323060, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771322968, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771323061, + "updatedAt": 1771323061 +} +``` + +**On Failure** — `console.log("error in sending message", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in. Please log in before sending a message.", + "details": {} +} +``` + + ## Custom Message *In other words, as a sender, how do I send a custom message like location coordinates?* @@ -1171,6 +1575,119 @@ The above sample explains how custom messages can be used to share the location On success, you will receive an object of the `CustomMessage` class. + +**On Success** — `console.log("custom message sent successfully", message)` returns: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-3", + "type": "location", + "receiverType": "user", + "category": "custom", + "customData": { + "latitude": "50.6192171633316", + "longitude": "-72.68182268750002" + }, + "data": { + "customData": { + "latitude": "50.6192171633316", + "longitude": "-72.68182268750002" + }, + "text": "Sent a custom message", + "resource": "REACT_NATIVE-4_0_14-542c56fc-a1a6-4df4-a5e4-549f3cf17550-1771321970718", + "entities": { + "sender": { + "entity": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771323089, + "tags": [] + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "status": "offline", + "role": "default", + "lastActiveAt": 1771322968, + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "tags": [] + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "moderation": { + "status": "pending" + } + }, + "id": "25190", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771323089, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771322968, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771323234, + "updatedAt": 1771323234, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } +} +``` + +**On Failure** — `console.log("custom message sending failed with error", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in. Please log in before sending a message.", + "details": {} +} +``` + + ### Update Conversation *How can I decide whether the custom message should update the last message of a conversation?* diff --git a/sdk/react-native/setup-sdk.mdx b/sdk/react-native/setup-sdk.mdx index f4863b5f3..ecb16a896 100644 --- a/sdk/react-native/setup-sdk.mdx +++ b/sdk/react-native/setup-sdk.mdx @@ -172,7 +172,7 @@ The `AppSettings` class allows you to configure the following settings: | **overrideAdminHost(adminHost: string)** | Uses a custom admin URL instead of the default. Used for dedicated CometChat deployments | | **overrideClientHost(clientHost: string)** | Uses a custom client URL instead of the default. Used for dedicated CometChat deployments | -You need to call `init()` before calling any other method from CometChat. We suggest you call the `init()` method on app startup, preferably in the `index.js` file. +You need to call `init()` before calling any other method from CometChat. We suggest you call the `init()` method on app startup, preferably in the `App.tsx` file. @@ -227,6 +227,23 @@ You need to call `init()` before calling any other method from CometChat. We sug Make sure you replace the `APP_ID` with your CometChat **App ID** and `REGION` with your **App Region** in the above code. + +**On Success** — `console.log("Initialization completed successfully")` returns: +``` +Initialization completed successfully +``` + +**On Failure** — `console.log("Initialization failed with error:", error)` returns: +```json +{ + "code": "ERR_INVALID_APP_ID", + "name": "Invalid App ID", + "message": "The App ID provided is incorrect. Please verify your App ID from the CometChat Dashboard.", + "details": {} +} +``` + + - Always call `init()` before any other CometChat method From 74512c194d2264013a3bb9928e716673957fc8cb Mon Sep 17 00:00:00 2001 From: Farhan-CometChat Date: Wed, 18 Feb 2026 17:13:31 +0530 Subject: [PATCH 5/8] docs(react-native): Add push notification HTML stripping guide and reorganize notification docs - Add new push-notification-html-stripping.mdx documentation page - Reorganize React Native push notification docs under grouped "Push Notifications" section - Add four new Xcode screenshot images for push notification setup guidance - Update docs.json navigation structure to reference platform-specific notification guides - Fix JSON formatting and indentation inconsistencies in docs.json redirect rules - Expand additional-message-filtering.mdx with console output examples and implementation details - Update authentication-overview.mdx and receive-messages.mdx with improved documentation --- docs.json | 65 +- images/xcode-embedd-extensions-debug.png | Bin 0 -> 449975 bytes ...ificaion-service-maintarget-screenshot.png | Bin 0 -> 435130 bytes .../xcode-notificaion-service-screenshot.png | Bin 0 -> 410473 bytes images/xcode-objectiveC.png | Bin 0 -> 425667 bytes .../additional-message-filtering.mdx | 909 ++++++++++- sdk/react-native/authentication-overview.mdx | 4 +- .../push-notification-html-stripping.mdx | 258 +++ sdk/react-native/receive-messages.mdx | 1438 +++++++++++++++++ 9 files changed, 2641 insertions(+), 33 deletions(-) create mode 100644 images/xcode-embedd-extensions-debug.png create mode 100644 images/xcode-notificaion-service-maintarget-screenshot.png create mode 100644 images/xcode-notificaion-service-screenshot.png create mode 100644 images/xcode-objectiveC.png create mode 100644 sdk/react-native/push-notification-html-stripping.mdx diff --git a/docs.json b/docs.json index 6fe2a0c07..fb5f4a6a3 100644 --- a/docs.json +++ b/docs.json @@ -2954,7 +2954,14 @@ "pages": [ "sdk/react-native/resources-overview", "sdk/react-native/real-time-listeners", - "sdk/react-native/push-notification-setup", + { + "group": "Push Notifications", + "pages": [ + "notifications/react-native-push-notifications-android", + "notifications/react-native-push-notifications-ios" + ] + }, + "sdk/react-native/push-notification-html-stripping", "sdk/react-native/upgrading-from-v3" ] }, @@ -5156,7 +5163,7 @@ "notifications/ios-apns-push-notifications", "notifications/ios-fcm-push-notifications", "notifications/flutter-push-notifications-android", - "notifications/flutter-push-notifications-ios", + "notifications/flutter-push-notifications-ios", "notifications/react-native-push-notifications-android", "notifications/react-native-push-notifications-ios", "notifications/web-push-notifications" @@ -5859,62 +5866,62 @@ { "source": "/notifications/push-notification-extension-overview", "destination": "/notifications/push-notification-extension-legacy" - }, + }, { "source": "/notifications/push-notification-extension-legacy", "destination": "/notifications/push-notifications-extension-legacy" }, { - "source": "/notifications/web-push-notifications-legacy", - "destination": "/notifications/push-notifications-extension-legacy" + "source": "/notifications/web-push-notifications-legacy", + "destination": "/notifications/push-notifications-extension-legacy" }, { - "source": "/notifications/android-push-notifications-legacy", - "destination": "/notifications/push-notifications-extension-legacy" + "source": "/notifications/android-push-notifications-legacy", + "destination": "/notifications/push-notifications-extension-legacy" }, { - "source": "/notifications/android-connection-service", - "destination": "/notifications/push-notifications-extension-legacy" + "source": "/notifications/android-connection-service", + "destination": "/notifications/push-notifications-extension-legacy" }, { - "source": "/notifications/ios-fcm-push-notifications-legacy", - "destination": "/notifications/push-notifications-extension-legacy" + "source": "/notifications/ios-fcm-push-notifications-legacy", + "destination": "/notifications/push-notifications-extension-legacy" }, { - "source": "/notifications/ios-apns-push-notifications-legacy", - "destination": "/notifications/push-notifications-extension-legacy" + "source": "/notifications/ios-apns-push-notifications-legacy", + "destination": "/notifications/push-notifications-extension-legacy" }, { - "source": "/notifications/flutter-push-notifications", - "destination": "/notifications/push-notifications-extension-legacy" + "source": "/notifications/flutter-push-notifications", + "destination": "/notifications/push-notifications-extension-legacy" }, { - "source": "/notifications/react-native-push-notifications-legacy", - "destination": "/notifications/push-notifications-extension-legacy" + "source": "/notifications/react-native-push-notifications-legacy", + "destination": "/notifications/push-notifications-extension-legacy" }, { - "source": "/notifications/capacitor-cordova-ionic-push-notifications", - "destination": "/notifications/push-notifications-extension-legacy" + "source": "/notifications/capacitor-cordova-ionic-push-notifications", + "destination": "/notifications/push-notifications-extension-legacy" }, { - "source": "/notifications/mute-functionality", - "destination": "/notifications/push-notifications-extension-legacy" + "source": "/notifications/mute-functionality", + "destination": "/notifications/push-notifications-extension-legacy" }, { - "source": "/notifications/token-management", - "destination": "/notifications/push-notifications-extension-legacy" + "source": "/notifications/token-management", + "destination": "/notifications/push-notifications-extension-legacy" }, { - "source": "/notifications/email-notification-extension", - "destination": "/notifications/email-notifications-extension-legacy" + "source": "/notifications/email-notification-extension", + "destination": "/notifications/email-notifications-extension-legacy" }, { - "source": "/notifications/sms-notification-extension", - "destination": "/notifications/sms-notifications-extension-legacy" + "source": "/notifications/sms-notification-extension", + "destination": "/notifications/sms-notifications-extension-legacy" }, { - "source": "/notifications/react-native-push-notifications", - "destination": "/notifications/react-native-push-notifications-android" + "source": "/notifications/react-native-push-notifications", + "destination": "/notifications/react-native-push-notifications-android" } ], "integrations": { diff --git a/images/xcode-embedd-extensions-debug.png b/images/xcode-embedd-extensions-debug.png new file mode 100644 index 0000000000000000000000000000000000000000..3e58ff79a840fa5e0e138f5b10a4f4586170bfb4 GIT binary patch literal 449975 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≥F_zE1+SfD68#X|`5@XB)}Q-fDPGAWI7W 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�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⪚cf73San`>Y49T2IGG)DZ` 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 z%0D=ijWNv1?m7c+X<-<`cA0mkyhha&S4pIYv{0mzw#Kk9Flamiq-g=$0F1UtT3~e* zKs$*X?uIbYB?$Y>!EK9}=B8(x1Fws3~;bO0&~b9pyn6vkt= zRmXe+kb5%^GYX2IjS+rLq!&hJ7lr# z0`mBxdf3(Uhgm=>2)I{A^_m-Q$L4z?6E2XMXfO(*6gScRu0zE+xcelJcz&$1VhG_Mj!0f0B3c`OKv9!SLu3`@m~q-Qh29i{E= zj1vn=@*{N@6DLk>kB_%b#VIB9&beBw2?0e0X5R50Nw04z@x+1z1lCNhn8CRXIN{=A zOYU%)#b;kC^s5g$**fJ#BW^BwO^WWf?zwEoGCw$sUQmguv2`jFFV}Ov2iD$aZgXas zRps{wu6w=e8|?xN3R$Z?3xa$L-)c=2 zwp~;G8t`nQG?!5Dvuhq9^J*(oI^`gTYE09;bQ26kCKb3aAowSXj%bQMn;c=Q`+GjbPxUNRL1!{~^+<}kQv}_y zZM?vypt?D4rsWNC`B6dKbAh!3%r&cKE`x@lx(_f-G*e29?u}N&wZ2Rhh3&EONW*lf zk%>u@k|YfSV|qLZJ4BmYAf7tuZuqL~vTSX9TAR?kt zr3xY_2+~1O0fA7Yh*YIX@4bnFfKsH_BqF`{UPYxtkSbD@5+Fe6B@j6KR(#&3&-ea1 z=Q`K*{X>Yklf7rpo>{YI)+y?#CZuN==v0pzUjb4Y3yb8DX1(c`PF?I(PntgB_F=j-NR+TB<{1{d&Z@NsI_3_9co$8`$=n4c3o-<|=Gi8_Ih72velKtuMqN&{pVPpcDz9!2C~1|L*9)_lxf=sbL6 zstQ{d{j~(s?6Yijr&tHfBCuB+CuC zxyj&rvJA^;7KTN;Po`)f#@KPZLLSr45$Ikt^FYzbDUyH5eaE7#MUdl~=EH}~3#fU3 zhzZ}XR=s~eQw~4LWY>z_p_hwNN|K6q1sICwhoiIhx6o%i)?O=!?MY{jFZc-CZ)@qtn2=o1~{qwLCkGVhv5 zZd?s>ZCjl5K|gtH`FqDC4;<5&W5W7@V>$*oro-?uFd(cPR8(lFhCVWr`(N>vK7t|( zxyWMiwV2<`4#t|B(E!KRie4%ojVN=fc4_I-(I^4sSmW#N33v9fM+FgrDK>3^ zUzI4|;jP$Or3zl@!}TT_T8D9$jd^jy`684rsrq*ZW^CU6`SG>yJw?Q)YTL3!&pQV% z73m?}wGmvO7o!{f`Im+(?AQdqZA}E}*9qg=HWpa+CEmTlG5Pt?o%HdAhZjRxgdHP( z`l{w+ZWX~{CpV_*^UgXMM^HjT3CW%_Rj?bxo|J8r#siVCroJebwz8JDXn+c2olpUS z$SCP3a?$t}u~R)$aI5~-Hu~)2Yds_DhK)*2d@v6J)Jq@w-y0A#1(@Cm&i8W=x8i%q zfX*kB0mZ~}h~#=x^V1!2e`;?~V=ykZ;yyw=Y|>wB(4t(i`|8Sb4E25^HS5XUPtm$9 zqLO|`kx~zyg1#i7>zg#Q$kpKmzP(^i8+4EpG+rOYy z&aWLAEHo@~@#qd<%LunQ!j=*R)~P^JYSv3?obbC@Ue&GXJ-#x+K5zqE)<<5@M~v)` zORjvDqK~z$CPL7APAX{>KeY)cSy=o8CIY&+xbRqajh|r~;snPPheuiUpD>xnOv z!nO%0eZ-ePQna^0C<@Ssi_XzJGUok(OjxDTsjjv6(?#cgxF0DkBQ#`Hd@m*k_La`K zvB+y}!R_@8v#-Tk1Sp)x%aavt3D5C6Sg&Tg2}If0*N8j-6#;0wJAp)WZS))D-h$VP zPFsv?)X8u{w&IC=dIYtv{LKz+fLBVQKZoBLs0HB^W7&F5p9rpQKqs2sbL+ZugPj%; zf;#x*Bz)l$WwbC-M~X{42LXn>7MW+Ayhybr`AXu8;D=&YhdGYerP(+=t1B4uMvHuR z1~w65hs*y4)&KnGI8^1>`)Z~3b853h3YcP^d)9FjOzi#+CU)D=n4fuYhoO_Ofd~O% zUN6b2)RmRPI$G_|Z>`_dA*Ffb(nRl~v4aEG+=h z;41QrW$~l4^-r*FIF{*=8%Vz&H90v=I5aj`S0|LRd2$t3XsO<;?C>tDHlcnM6q6Z@Xs+H~l^?Y7Mz5lF$`agHWQ-PY29w*XR568nHj5SLW|K6;6CGe; z^Yi8u_Z4Jht|M>;V;V(987PZPnt|LL`hoTHM4m`E@SC`<;h5mXP%3@9L!d=v@6>wBzbmOXlpx zG7V+fIXNTP5Eq$N`!a?)9b%5F>T1(ujwbHSjBj}2;h7_&SjBI6NP~_UWG=UIYjGTc z^Iejv&uSzPy;!RSGtj7;vKds5Fw_)FwwwxhQ-4W@7l-8wb>0}&T6QyI%`a)a9ib~GOKc4572OY>dUzeeo;3*cPu z1pJmq*%asbpLLQ~P@QCXx|)fAG+{l*N(W76=bw-6p-SR=5u(JO=>dtEU)%n zV6_66JI4{N+y5xuwiO6Zt#D2>h5<8F1hN~LD5wE%$Wk~4laVL)c!iN+Lp()b z=o7usPtj3f35?ve*I;pcW=4$(JnIj(<%p=)9p>2CWOsTLcnvMO@pER+`#n#H(0lZT z+722hInRgF5U#H>aEm+ilU3N-n_f??-{FoN zrj2mO?IuJFWnRO7qH?${34#j^vAszOjUv~e8|J-T?R;0ScJxN7k8d~g=cH(swY|XZ zw?rryfRSvEjFBF&J;ionm@S{**K>koAmb{<7O=%bIFQP=wIearBs8CWWXi<1WRPk8T#K0|1b-bFyl5CrZQ zF?5F2M`HMdfH&Iu#P*&ay?nk!Pij!rjhb9zh1sv`VcG~`GW&d&`ug{CDg(3}T@NL7 zwo$V06evbU_@-x#C*>(GI&hUO?+n`)?QYcVXDB)hCM*rFyp3Afnh3cc*{g!K(8m5S zt5o6~-8yfP^^X%!eQ#j1>rw-?YQFnaE9HCFI?#UF(hRPgyQUe3b`iN1;u$bTz*k^v>=UbD zWhN=44Y!Vwci{9!PlQ;pQ8_M} zFYVX<_L}a+T)M{usFpc0*xKE3!H@pG2N9U_fg>Uu)rxxg1KEA14wb_V*yx*6KA?s7GcYB%1s82s%$*;;DVvC zAHT(+5|<3?lnaxOzu7iqRmZfy`4tm}L{hnjKnda1o139YAwu`z=i)3I`-pw!9t1Us z?pF(SY{u(pYD2UeGgqyvX<2WQNtrR=(zeY4$yFXlvU7%(n>?9DT7xH*eQnoTnv@i>1SeZQhk(*6>$?BU{UJ7)&<&Zdqrg^002B!`FS*vwi<;F_XnY@6Rtd#t_1 z8JOa0hDsf>j#)x{jkoVPd@fFR-x>zN>eV98?Ylazvs2e{oYXMk*<_-VryaUo9u$=c zZB*;CUVlasO0`K&NiMQfO z;9P|+Tgkt%>dlz$Op$B?>37_G*}mud@uEGhUHrfp&w7tSpOXceUMe9)?1gc{XB`M# z{qQo#`X$Mz)XBO5!aTN`&00V*K~K8?ZqZb~rWJo0zgH5h3n^d|=8~)MYB9a>%H_)u zX-JoQ=eTvAz-0Qp0u{?FwZT|!FN18MZNYw7FY$F_3yuCr<(N^qS1OGa9~0Z=HbX12 z{n+R-_DF7v?wdB^#@~0Q23cYZlHpaZZ>lZ4Zw#*#&Wu;@(Z1sbiH`Rl5*?^g!d)7B z_aIZQfD)Ynq!S1yun>K3ar7E5&I|R~JjnE#6v_9rOQO_j>@jS+ zSn{(a?E_^XtQx5zqm*VpJvm*@#~yABxMwPlyKhi*2d_X6|%HEw&CnT4gveZ@jeEftrot~wU9zA+dYsMf~c zv`|Y#(_Si>+E?}q=k3J?=4jfnaC3{#Q{P+BAQ6@(JoU~Yz_4x&d!BZ!e}85yI#j2x zPX;AaR%J7hDqVG_7lyo+L-8TePDbX~E**(S?&fVTF%HJw+lM}+J4 zUoyhGv7c5QbwLz)T6`5CLYMH~UtSG#z{=E2j`g8AKlILs&uls3>?wy~e8Dig#Xnqx zG0;V5r>jBv^CCn55y<(B1w9^c5ncipA>G%LsnFCS=JaQz{G}!%jXr@Bh5?q62IXUvp{{-Z{sm#nAGJO+DUk_pj#2 ze<5pl`+!;3KoY*K;peZHf&mDLohRZ2^kgfj4Abv@`YG9##9TQ=R2 zTHIeKnpJXEH6u^C&4lBFd06|W3+Vcm&RgdrpZBK;62sipw$TkDGM&2Ys(v@z zv7xCAoghm`tMuIU%kn~8f3UK;!puG>qe3hNCX)Q7R0^onfNLsv_+})_PwmigK44Wk zL*&yh4iV@8Y-2tWu15!URpR^cvl;G*qzsEaPv}1%{_b4U-JJ0a;E~_LN&Yi;X@$t(gTnPYKwar=0ZT;i=Q1V#r7VRD9YcOz3c>z!BQPx5a@+U(96d0yc>tNM(z&FA-hFzg__I7+WDiaU!0HJS(TwaW?~U!cGX-%K>09%C z_hU{&*gc64xpenB?!57ONG%KIZ4noRBPo*<-*2rp0O~47Ur2ChWG@jD9XZ3R>9RbJuVE%<{kMf-Ts^ zUb+Ih`Bxz3m{@M$AGN>#;SIov0auKfxW=iUOMrl6;94vmD}z%5sjbm{A^e+>34g8I zxC?kKVvLdXK#qDBe7N9!Q3E0p21POOgtn$grQdd%{OdP7BMZL7lLfY{gGry^;J=Di zT$MWx+83ay0Y~EN|7N7bU+*OXoyb+qkAw$@!V5YSb$;2vTwA5U6Sm8FfGzxH$N%Mb z5>J3*hh^gpfCqsV%vl+PM{H%jGN3~N5?yoCqlo!$gy_(agYtYG!|?Nw%izNa?rpxI z1a5U3pod)a>i7N&F}nY@q2l)r^w&W>y;KdX4P`}6aWGb65AtREbcF<9tOh+;rm2b6 z^nY1}zqa@vHUoYNU;$sEU?aTm02P&iwtx5>E1)scL2WAD@_PS`9vuRj4!nK!$@8C& z{8$I!P-Bv6;0aTp$*00y>%!m62>k_bF%*E^VC(lRy!i7sB9H=T_)tSKU;slpeWLlt z5lTG3~g zY1~z#i)P|v#lx$pu3F29A*S*^zu?DZWa^{~82(z(mzo|k=N)&fr+)lV|9}5DG4#KS z0LyQ=dgpVm1&p zoRIKlR&ZZgRlI-ycAqD0_l+%{Fh@t~s`-;=W_iPlao_1av^goJUuf_I^)>f^TU>pW5^`qgAp<;Glhn&i49c#FT zEanS)xVnvDZaa(p1Gxi+RYBU0U+;oJxK?8$xUcJ#=4AzKuqtV!;KD+crf!u^^a8)* zpb6Fgeu)2FiT@WivD!Y%6c!uF0&t^|?PuMV;BLf5y*z$!kzKw5!U#i_76FjSJp~7h z!a_;|Qi&Ot_lBmi22(hf+IFbfL~(I2VCl!|UhR(xVw->bERG&hTz0DUa^K(DQ{CO{bdmb`v*6gvS9PoS ztZFQ>luT#(ZYb2z5LaUMJcNB7T*Rx37U_RAB7^W<>)xA_;Cep>{6eRU3~v8^di%cc`*1lZbp3T1|JzTX+w?LA#|>-}FG?d;gAl=_!nQ1@Zr z%NZQOViXL02HejxnowAb<<5dKifTs1JWElBhShU?@b7Qzu3>06oeeYFf6upvp6yL| z?y}g#px|7EG^oK`)l|!Q6j^V^Rh2^S%q1*)?;x@C9s#lF=&6$-pq+RVti8uR`5`E- zNI&iE3g&>i$il8+%_%u1@h%j9`a)Lx=YFQ^h%GercV}k2txXy-VM; ztb5!?hmf3bmNxkc$J@*DuP$p#5ZwW4^3R{CuyfER-#o08>~vO<-sIic!zt?2(x751 zB23{lBFoh>GIcw67>yVRkB7r!;V!68;+=Wn&qRo1U!LIp^>rEOh=OT{bELdDr8=G6 zk4r*y5HdtPHVrl>vx;gWw!+3-2N@>kn;RznlVFhR3L3@s{?;wq$uHLhT_@9r%UzhJ zgSkep>gFcgFzJ41Ia19s;#Pg-@wdlZ8*4#ElHywu-6;xeVB}`_IyL{ton#)vR_1{` zZK`9}=nW~`kB|OM0ySQHY?pe7Z&W$;K8rDG&tnX+%OHLk819Q|k9OK0hUZNT+F@5; z{KN(pp-6kjs*?gV=z9`9CwKw6PRf#R;c;iqo}F3BUs|%(s9L;oLDVRFxW=vN8={IT z=puiFqs7pSWn`vGcvqL(A}M*^!iyK-(!ui~0gqOfDcIhLm@UkyhKab?#tLJ3W3Ss8 zMeK~``d@TbQ(#z|w=iz}eLf6*xO%?BOtZUI(}ISX5%DN zMW{r*li1FCT4MYbFqd71#fx^JV|#{B<;(VmZy%E7V!J={eO?DN(oh(-nyJikWeT- zgb3}jcPu~iHxg&4KU-3u63k(E2U3KDnX(un#&LCmPp>G$ZS?P9_;kyil^TO-xrLn; z!j|%{x$G{#1EgFyq-TuVdjkq+_?M^XcD7u{E56%N8cOVMuH(LzngN|0TKk7ryp4%T zx&GiWz)~$Sd3$~6H2oyBl+Y^hZQDxxQ5{;AWof>GR`kF;>hA)-!FBsHm<6y413AQ) zh2V*M3`!@8fiTQPKJ&K&TaJFPLa+TiQcMR>NNkVim3sc1z;K9cXsTwkW*u)o+b#3b zk1niDJ-2mx6-|Rne?31~BpWuaw~Y@GpX!7U;XEhn?N%mRz^wY+73);LspfAVz>xLj z%M)Lka1*GywTIh)zt}|A#tM1{!$-uiU{JBXn1hhTSNkwwb(qUX5=$h0$4bz3z8pwt z4t~?9u$>M&PTATPe>Dz+BNM-P3G8ARI0tRMuc_>{C+k=B2McB2Ki{4LWQxN5`osES z>a>l4n7g2TdlFZIA^$M*0WSDWFgJDWx6Fqhds}aJ80Nh3F&L!qrfUbj{BRkF>Z(57 z)rZyASdNv@zc(AR=OE$4Xdsx+yfcLK2F?sHA;lG1w3%}wsXDggC%Zdwc>BR zyfU_ii)?4Q9-H*!!X=SFRjIjkO4eaSis@b}pdr`~(mB(C15|9;cOT3`e!MQ~v{>B^ zI!mB2#H!IeckgS|nEKZ4?Y<^bF1&M$$v~^V(hJD=4%T{9ouuX0vK*~8>C3v^8j+Fw zplJh)byxLsbtrIIJ-4klqgdg9iAo<|85S&hSFA)S?6eqWDe5}oW;E{7@zr6)`SUv= zdkbu_YsaGt*KL!1{DxpI`8TbL%!v>=2}P>bcFb` zCV~tadgIw0UtfeYztMI88e9U`He0e73UIr10sc7OR`p>R9Aa(nm!~c^4=sG1v#fGl zh`L4Zu9sj+!?#A`qQ$%9zSXQ`GLjnfVF5V5)>nqI_9M+oNrqFIs+HzsBEt6h+Ufb$ zSTQVhnv7LX2}g0Y>y)kL3G}CZkNui8`fFX^rkm(JFDr;BH70g?K1Mu*v-dFZ7;nhQ zL~+LAOVh8dgSt?*O-Fr^WRf(M-E?OpsGCYtu3LmRe|H z(8J|64=&ztRRxW@sR|~g#E1~2z$N{_o{GsIj};yu6>V@G>fVY z+oi5s+WcN$j-WKl@C*}da&Lsou+melk&`)PkM4t`Eok#Sx%lZ|_xzbOCos9@dlK(& z4CBC9bk1E1>)ba&fHpseM+B%`&CdXA{^7AipoO_aGXj#L&j0{~t!cIskS_^)hq2sm z&QFwlmtdXE(21;LzzpO?-<6GO^*w>U8ee`Canov)(PL-5sPTa>>B5jKP(yRjj?Nu1 z*hGm76CzYkS4P^zts%YkOxD|w+;#3NEzY$3qxs9!+j`BXJ-7t~0z~j@4;tS$A6~)i z;YscCbn_6)*<}t@F!)$#&CbSbVU{-9sF*sK3rEgKa8yp)puD8vW`{9Ibn{h|>B8y|Gg|1Y-M z%{zi!`F<$l-N{&EL@1Dr1e!fEB`q8DUSWtD*I8SwBdB%iTGIqNkIwf(m#<0JJ}Ogt z{^EtfLS^3MhY&Ga5)m&UtZJ34R59&}N9z}DHy3F~QdL^QR$%DP zFwq@-C0q<8f)Ii3+>tYCPcR`(9LrM4<@9i^OKSrPA5Y8w0}DGaQed2+B)e3utV{E_ zs58!vBd?+kHhVk~V54N;W&rsl06OmP#-5x5cs9Q`pnbQt&-SofyCz{dT+UvilX(?H zZT-hkQo(eQYB@t+T>XJ2GAxQ)I~#K^_~KO{AKN_z@e8X;$t|dFdUOa~{W_n(ETg<_ zx^NMn4Jj`)e@>z$Kp{K!wNfwG1??vYe(ToE!bckGP5iIj^M($Kv}<-EA#DLx1qPY3VTp6geJ1zf{~z)R@nZHs{>}HG(1f% zTs2F*t;9@yeccWv2FaoHOc7sM%1)J=(XgTs|8sCu4$U1Ay#zRr0T(?EURHkO z+K68qm8q~r&0riCgj>Cj?0}t4Onls(qIq+$$|-L>du6J%h4=;WEQZf)phb$_E4wY} zUf>%*nV7R(k1M%DRMaOcYP?kMtz7Fa=s~MJ?$X@#xDd3Cj5O{RIIeTZAVezK;hVAT zF@inW{a95F^(e8Lv7V`;r>NU1R*h*F-E2eIAFx(-f8`qnmvc#6E+|JyROH={mat(gTCp?kNy0UCPiS42ZvB!g%YJ zH%`ai+t|TwCq%quuFq_8vBqs>*A8{RFH_YX*<;)(T{LYqcg-F|KnClrQ5z1=@=94v)PQL+E z;KNu9!C}IUCQAAR>8*+kR$-|sY^MrynU=CIZ2h*8_$PdigqSY|6URi{-rYMG(s0@u zl&Oj|wQhj;M;xMLNX2(3lP?|dUYqS{TS}Bnk?`KVp1U#G@?b>=DQ1gXGZ}%c$KP0{ z@DQ?>qfI&?lJ&+eY<&E(HV`CbSrE35&~FOCxP=};DGBXrE(20PbA(Ax_K@%Kb74R= zUBKgIU-M;fb({30h7%#ZSb?s2Q5>Y3T)94zm`B0C)IQtUpQ`vb{_YkCbKM&LX9w^M z35}&w`C4KEA{5mkm@I#^=jyclV4(x(MdW*AIb8i%4YLVl13>nd*=n>JcL)9K*&#u% zz30FdWh)&$r2K-!&-1A8n-8ZC)g4?oK<`!4bz|--T*%?gaD}amvvWB}D%BnLtEB+% zf?3#cF(08%CZd46E{o*X2667OlYu0M03k}5-(r**+}ok~OV_fH91)yKw<{eMI6yl@ zA4+lc0ozUPN7WB;Yn}>a76Y|OGy?f!bDJuIg)3jpnt zh%NZ9RN+4p#d=}L+t@JwkKU%9jHu9{g)zj?P40FOMa;gK6C_GYMtd$efRULwHdzLK zkKhHt)cjzbzJ(RNEc|Q^!2nRW=6~K*HedEDjo{QRxE;oND%4zqJ~B%^4?5^cYXMq` zFiX;7$3j6=Q$=$J7AoTF^V0Xi;b}!6hGRK-3ENfzrlB#vNKhC2VOai7z)38_+K+(z`!L|b>^`%k=>hpSv2wk} z__nu}KXG_x#4LG*Cw`0qAv&W#^*7J*rw3tz>i9Nx>w-vV(EV}2P>aiL2Nho`a98bo z&%MS5QZgd&$lCl9?VxtI3%W~ry^X!Lvx{JVdS`Fqy9`>rb#>rCe)S}GcI*gHJMem^ ziNQPB)F)j5BqLMsV}Prh1`W9RVkD%cd1Cnu!wA`A7%A9bVSoj-_2uM*l~BSGjaO+P z@P2>rn-W@t0wDYq{hwnZuzJYT{v;y0ywhjKDOMk!`NKOxk9rHeDI9eeXf_r<{n=mw z>ZuUD$Ug{RW5E9sBJg_Q8jRqz<3|XDmfSl?M2Nwky%+wj+}roA_sQutyez+nGm$$b?Tx0p_H>#jjV?^YtZytcMt5AF$In|lq5e>9 zRXYSdsjvdQ0iLEAr3#}ulPG|ZrnF7{y*HOg9g{huBeQW>%( z<$ix2NiF6@&N^)@sXZt^Kjj~_k1rOEE7{lxZJXx(x99NG?JI4P@B1qR;O#!3xf?$2 znx|i>3aFv^yi$jBlq%{U6|)_5e_4a9kvG?m`Sq2jH^t|~zSA$W7kF8UZ0}z1MxSL@ zZvMvP*P%d*y$(>=;KP2J2Uapp3(R%Y#^5ZN>*x-4pJEJA$OsNVJrxncbB=w&8eQ+t zJ>_BZyd4ND97H^So#|gUg4fw=x4R$To7wiGFWsJ)8_@wLsjOw@R~ozsw%t)Z5NJe< zb3+DZn5Mz@C%ga0fdD4}FbD32)c*RUVIX3Nj(G~k@OeT28QD!Z%in+uzuu@E2s{j0 z@Cf~iOQA`YBa}&^;B>wQZ|F5>(*Fl`&Oe`{(^Sv_|D42q@VU#On1zM)B4BFJL-+Rw zdE=IUe*Len{%^mt1WBu7d?4wsuLLG+8asV@8ghtWj}g4#Kf2rh@c)1QzmL#R8?CjO zUk8{AoG{0LfO}wl{h;-=?$O}+pV#-<5VR7kNk@Ktr7PeQXkY&d7;kmJMmD11M(}_8 z_`mz74b-7XC5k&BE;G^-t;N9^A0snF{EUyEAtB1yD%qhnsYBjR!9^`4`{5Lr zZ+w?Qr2VO0GQ4j;@HS^oQWY)3oY#|N#1VodGf8lef3s@;_}wvx4fSpF*@d64dNTt- zi@2*s-r%(SO2?nkpO~S5e`sKt_;7(mJvSkYOIzp|Dd~pv6u3d?Rf4#a4s#cY znBDgxsVMv3vn7AINPk`6E|xKEGY6kT4;-jzedtgNK!l`WUof7^Uxz{DhStht$5qg* z7zyf?EepaCXuT zWIS)i!6~G0KM`|aNdXXd@B5g(8bBKm&~@J)q(icmCE*++{qiK4Om2eURQHsuj-hlk zKRiLeMHvVpUq0-uLmT)0PcHx9F7Ph`RTBXUo?jOGkrk{q|D{F9i9mjF0B$@&;>`LM z=G3Xnfb^+wiz|8^a^eQeUCe#Pe<)2P4FMR$tMxjCII6w(q*V1W(>>q+e;M@0b z6QkoNX?gB+r^&L(MsY=gnpI4n*!mtr`)ATrF(gn94&#jFZTlz_4uQNILu4uy?iIG( z#WEBXE~}~b*yY@16v0H@^J_Yta}+(5^y%_X3jbjj|Mt@|^ub4;UijI&c$iQQY+x!O z7QE_N5^zmYWVry=aXlPqLrQic(%ohC0^7AF6nXo%$B%6%)4>RxlV_NAXfRhyx=)+* zR7OJ3A5e9k?h+f0S;`#|Z|i#eVQP2Vj&!r!Uq^2wuJ5lRmYDv%wNn&JoiDCQ2`i+a zb>Dd6adVlHej(BrevA3Ci4q!`ggdqdUUI$I4J0x6w)0QUx&1Y+(`3 zN6RUJs`b#neW!o=rvSvYCiLYv*tR9;;=#J|0Hr@>I`B;cjJY+A5iDPQOMrTun5dku z_uko~_x%fEmTQ+mYTJ62ed+_5U(3YZ*Npd`HGgItTj|ML@K&r*|-M!`DVjZ5sI&CO5XSJhb7vCa3XF6yKx=&gsAkds&vX9!U zA>Uwvdl+Z`d_hRu0EV38op|x!WL1NL_@G-*c+!S2;LE|^YgF1u`5Wz3?M# zoOS7Z-eFolGe==MV)KX@{^#nc|2^fST^Se*5!boDBf5qrp5+K@lMUNS~b9tW`-@)EOY7x$&@e zdqdNYe~wYR(jEY~PbxjJwKc$PrChd9fyQc2g-Y=R99KsIvG~m^58plmP@>ufR{V0^ z{&KveIOSS<0!vY@u+6TIkFTHLFxl~wVF?wsbCo?_@F?n=RszEzvkiTM#wdh#7_$r` zm`a=mrYLCIqFY&9R;K~fnA-{ra}ryJy5k}@d9C2)KVfVZ}z>9HYOs?{-p{XgL=;^fY8D`|zX z$#StNzyY=rJS()m1#(&A^X&%j!9XX@|zbDCx9sg=~{4F3>9}zaBbNp$|c-rndL16qafSiyiMo1 z6+OS~C9Tc(wV7_NJy5_rcxyM+YSNd{02Jg6R(eeeEr!(maAiX!ys!cbJ;J-(tqs1f zLHn7}nXnrfebZ!2>B1hkliM3rSbMlfuy&vHUT16(jmaVDBCm-BbYdZlJn!;;6Rnr7$M@|w?dZoE{m2|$*!&+;!s z@e^y6xCRBD7wo>Yo3$vaS_%rCBlrD$I!b}fgnIxHWyzPMywAU&+f8ZTu75;btXESs z+c%nU)#kP7Hqcm_imo)@m-EZu)fGjwi}6%Y%`+64qB3_>!!9@&H^2G3m9WOYv1+K4je9~U{u2fayw)yd*Gu`rM zsg;iuhHG2$U^H!SM*Zg+l_g#i=`$Xt`GYXHvZ!etiuSG z=?fS5Cy&@Y-EI=d5d?#Ug?jTixc62=Km+{4?lc8%J8?LrVa*(Gr3Hq6_NLx5I!TXQ zvDj;{XgFT+mfh5oJuZP0{8^rzb2Sx~B~}xS!I1>ptAg>Vs%ib|DW-gwxW6Ick3tnm zdHKd)@n9M_(C|VSV1NB8CzF4?uoIU@9OiYO znNWfv%@A)mfZo8+9qC6*%$YjjtO}9q7$(?Q&ZCk{2ivu&E9%KQ_?JIQR9vv2+R4lv%=~Q)I#$D@O*4(8=Gj^5%Mc(_pdhj>K{JJQ_QH{O_JRD&Bsq7SOUYXM!RL2R&uh-s_Zj3G7v1=q%iqlDf&&zCQQ`oldL zI7g(|^7i&C)T|?PT^HP|e^eu~-UDaCTeEDrtw{mw(#S|9l6;*!A9*xIX z4wU9pe@#zBeAvSi2Z|yYI0SUd6)!2JJuq&IQXTtyr2n)6FpY_0QI8MegmG~Ycd7e)ZtcQ{#0E@$4%)HmiO+ovR+1I$d!X{i z)-ej2N{9KbTXO?hS(qR69^lpt-Ns#J3n_VwvL^yMKwT^P73wabaeVEl+}_rNQ-*q3 zuKnDXTbtPKl6caz%-3wKBA1xN_7n%m_LuZEsw{K3q&7c<3l1HrYR!<3cO-qkMCL~p zoz^Oraip=&tiO=X;$^@Ba8)@;dfv}@3|H>pv&B5dpx#dD+UjisTrqq9s%m1A&ATO# zIHiDEDvxWgv`1c#u(kmT%t<%zRPt?$uibm;fGemR1Vf-{cTb%-K~a*cS!Nl4uP8F| z;wTcwtAr$Zre7<@iA;8cH(g?0$UySt=ZxQ9DzmEFD>Uh0&5HIwEu`I!|7J(oY&Be- z0g7tcn@X6=O4a4evIsfHg<-?KrgP4n`q{#mB#kLtiCLlDCKqP={d*aM&(S9W!{7C^ z!1SwgUuL-qp5T{K$96acP_rI{^o-Q~fj% zT%EU&OE{ypvSC*pxVlcLlaN!lM_h^X0~kVNwoBZ&Ght;mJGRoY{fkYZ{UDDvpm4y~ zuV@!WfP%^GGTLj_Z`^lAoS=+VquM%=keIloaO#S|T8#gj;tQ=c9y_JI8Jc6q(}d(c zI(}aE%Ky3(mLL>m|E{2+;t4&w9 z>o~PXXS2C6H=R{G;o@cqYFe6=jxJII9SMAzds}$2q6$y1Hs`%0jlvn*J}R^GY<^?5 z0GFl}_w(Mb@xQu7ZMkdPm#sSV&F(EhJ9Vv2n$(tkCymmo8uw~ZQY*(2zQjgoyAv)P z6rM;noC!W_>)|Z_eRg)L?iYtF|}7ohwvFMio{;$ zWxOG3u%ySXTbm#jTk45_`Q&8wP>Ou`J%01udq=&Nyg#hMwPP*~%pexbJ2&cAXRhl9 z)vw$7B|?=@i$`~TKIwz9VDRWezl&%PgQeJ}P)&9ve(0{W(7a&gQ!jg#o3)km#toH6 zH>_CwNa;iSExtB`s(i9Rz?sIDruY=AI?v21Pr(z0@tc_t3u0%jKN=XcTbbpGa!#C4 z`1vu-i)qC4qK>_nmga+zMeo7m_E%9XE}sNWiL9962Xtk+nPooGIeXq{OZp0BB!V~8 z*)+WN@nFK7S8aljLu)0K=C~lZ``^L%@{}vWe0+Q!;^%$0j*C=PT9!hgHi}$lhHL*43U^mC1);{kS5Eru^lvB->6ai`ZAt8vU2HDygyLl|j z%J$1e`za6|Jz9O?qfbX0E{$Ip>Jg@9>+8>1ePyYZ^2h;9#w?YL2DjYGdL>__WlOgq zkK?d_HvbXSoXR7I%k*-#fx#pP{oxbGw;$D#9d-Ur1 zu`i&C8|JpT*b>n~u`Z(e&}DD8LTE|Yw)eb7!AjkB6}7Wx+N!WJI`XTl7UgIVjjfl! z#D_3I#U3o#G4^m>8Z7bxM5mGE9@3GaMWnmAW3BCarv1#9798CF>XJw+$r_-Bw9ezVPtM? zwj@h^)*)A;3MRID`TJ&5T(Q!5Ap`#iw`miYb7_(ysA3=B4!;TpzhH<;5clSV^DrDZ z&O1=Av4)Qs_%j1&_~k_s5}vkJtv@Luj_>WsbzDv#DWxw36W?-;6J8Ew=o5?XRp!-p zUs5$Dla1$x%OQpChOsEH3Omk6cmslj!^E8#9Z|QL>6}Mpkq|4_{_2~$XL4{JnSoO~ zOH3Lda^i{y^nlNm^1>5mze`q*?j~xzB%^-EJ%;H~2LnSg+c>f-43=-pgbS6}w5}Xy z8m8tfG3|e|iblywGA&_RXL}LtgG1mx%$D^2qR;?FAC-u?X!x4xx}@ZST)L(E(`y#M z>3lN!z~dsHB_r_VN_X+LH{a?Npka4#@f zMlv~@T+VW3E=#%G`jUrPXF>&!em|#nF#A%rr#M6dQs5N_nB>U|LUKsUoZI+0z9E4W z5eT~M@;2s+&Ulb2?Y+CbhLvwq%bDsKgC$n}HJ}K$flXqO+%fKI^vo zo(RTZ2yh8693E69RUid)ABbTXG{-%MyRP2^j!hf0!s0NGU8B8rnZpoSca;MD^&^PG zhY#bDzZfGt?~hq68_5cKe)r)TI)WPV+EsF0pUXK?IhT6;NC>^~z2lS|=|h=40Vue5 zR@ELG;vo<5|{Vj8JP3$smAe}aNd1=_VcD{SNW|E>QfsFnrF_QXD%}8%qIxb%^PDF zbKikms?YkOQ|?dQugrd4%CTgQs0Xy$tfL&sRgWj`>F3^3u6e}AuFl0s;HCDk? z<+RU9A99`@pvSLy5+T-6IIBE}mcFa$QreH=SLtHKy=rO1Z5k3oE&w&RZ^1Nz_rFrJ zjfbfURm&!U-}%zvpT4@t0Poy^Q+eiLA1j05E*LEF}yOy9J$> z-V~b*bkcyC&i{wKH;;$1ZU2BPNu{XV5{U}QUb1A@Dio#c%Oqr9vNOgcNhSN1Y}t~1 zHwI&r%5IP)X3UUfvW|T)X68NTuKRg@%iZ%l|Gw}0`{(`)x324&^E|KfIL_nvF8uO3 zFI6n=g&H~n!vNJJEdJy>1%vmuFR32;iB58%ZW%BW3JyMq2MxFi{_P+!L1+ zlH_2|<_PoxeIhu7JuZ5y^TVR7B@1{`^F$kivi@PhJ0E45Rhg_la&pCuj6G$3o{p?&OQ~p3m<$;7k)WHL#G^ zxnd}sRzRio@7?P&KX40ihd!o`C^ny9lma&M%KAuMPo$0>+ezhJ#(7|78j<_c3I+j! zQ+rU7bPSN+^9SGCq&{9K#A9a%IL-xTYsMPv=Mp`u8FMDy1K_ehTw$4X9>37{-jYd$ zoZoLDle`@9oA3u3K7R_n#K->C`)W)AJEyH^A7f8Fy*q955AY{SyBK|vLZkDV^zJJQ zo*u|~H7=<(aOf2}*Md^7+TT6Z5^c_+UIIZEUn$Pjp*{>bZ;SiyU7zu};W0Hd+iCiQ7=M;hAg(gF^7f)E*&xCA1;NNad^jiU251Lp<1{&GU(72(A>fdhOz zlPmcjTW83M_A!F)U3+N+6jXR%X~8!5`WI3MXzI*p=%mOP(-f(RYrdR1>8f7&*6j)X zdyDv^yyvl|PB`o*}CaE zFS(=^4AcydlZGmq_wIs7@51aX_C~tSr!c3P`_(84A(mOCT8_Kc7blmPpuSx6@_#C3 z4$Hswz&KPlLz+9085D6uRBAO+w5UL#sqJOFSa=lKSj4FGZJd;$PH1ZX{R*{Ifr^J1 zZ$C4h->WE$GIW)G2YyOfoMTDuIC6L~6Ldz834g-Jnjzh_({M=C#qt(LW%JXEaS-^# z8LiP_v0%R=zJX;XvVJ9oy0e=IS3<&+go$E`j^oJc*k$n8>>L-WjCO;biD;}a?6lv? z#Ea@lMkt{MQUT9MyQi8__Wv(~`QH+<{{&W{&b#|#Q+Su|*;l!;iy{u2=Y!GQ1$pzNkEW*))Z{(tvC)+jGoB3kZ z$J4n$DLy*u3u$0sq|UkvhhZ$?1@@clzm~)QNcR~(nlb97r~ko01*9p4+~%JgR0PO7 zKcUctY(X1`Zf6kP1Xg*E^5qjgzrU?ur)!}&=#-tz^eW2ZzIs$3`EzN7u;X3WuJEk< z;3vUC9ece)c}^{{ti>A*EWO>jKzhGx=NGlJdV;#A|+?p_Ff+{Kmuwt`KGeq7E|-eZF#(sdm- zbg^fs=Jp3$e&wM}Rk!86zyJ0i&=e2{c`*3I*-*rXj~69e;EGrH^1~Uckls-lByWEgDv9Oi{F!+{;`BNqQGm$|4Tg% z=+Hc1sGAx2BzOT%BSYn=SwD*Q*FAr`5d%~d@K|C|8oRh=!0Q?Fk(Ca)MOrkC*w7|wDsHb&_CbMjbLy~ z_&1w@Um8TaK(ehfdT?|J+@XST2XDvM$NqycW@jKUGCJ>z{u*NgFg-84Y>k1y*eAx5 znK4g;;r@5SGs+HbNwrKg7Wnz6`@{i)AxQplGr(S87}$%UBFhK=?jm5q{%_&@bB6!t zr~g|x|6(2f|7YQZj0=hUr3LVRyU(AS{Qu{6pHG)gnhrF3lGJG1Dr{NZ3{|iVT@ab! zN8|oFo~JPY$sFQMryn;m0aW2;5aIICe?+|hxpn*;rK=}h)9P#2f0SkEEa)*Tm}?ly zaj*;izyADjGT6jNc4sMofEEs-3wp@m=)V-z+lXiU)v(LautpfbbOk_O`|bU?|I-*i zXEZszA2gd*!Bw*mV{HF2h%^R+fWG-*MCoC~;}S-|=ufq@_!W{)GeVNx1!E8}eL+a7 zFjU|MbpKxi@pt9iMh!4Hl$Pt~4(>hz_R zcpRe_c3?tW7>zlOS5v>D;%EaHOLFHAfTg4XW2Ygt^(6h%qs~E(AMa>QQK;Zs-$t^! zlkur`{LymGiki`OLK#+m^w2jCISZDs0;3lKN;7BPPpH_@I52~_gZ@}B#4 zs#%ve5vXN^j>UH(2m!+EIl2PDd)T9=FT7L2k#oX8LqczX+lt>~D()4#nmDm5H9l5Y zw=F@!lp&LhGG?Df4inv>|zEENohB6Q`EveF)kWQ=OU4 z%>bwSH|hSLzpED+)%mltBOUN9R1cx!oO}18``pud+OXsD;50e~PkuQ0cqh|DCmgMd zNxP6JAL@Oqz<23Lxn0lceVRumZo68@z)(p}!>cGi5g-#1!+<1}V0c0^;`}mSd0`Cq zUkbXkY(c{JZWYOArGnbS*Kicy8Ni_Jsa~222W8i`=aCvW-i2Pcc*6Vr5;9rYru-}P z-c}lzegc-`ApjGC6``I9s@o|){uJAJoXDum?TfKIw0I$?)@!Eib&o)iKDs|YJOD*= zoE^5f=)d|}@E}_p=zMF&zPmMtIQ#qj@sR7T;yr11bF~Bj$TxZ}(k9$XGTg#h6dU-B z$FZ(PriMR=$W@>ZiuPx|07>|*dSDhTr;BJ$QwepV(Ui<-PBgCTr5h+C3IVeRsHJ`m zj!+9_S?HzUg5_S!`2vYk9 zCO&gO#JR)BT>G%?-w!>P4{8arU3+^(NW1+rT=Kf#nIPg>!F#`5-8hz=hD@08X5FYn zNWOii-9r6lx%;Fj19KTCZmgHSCuOatV}OeDTW&{n*9}x5Sjhs5z%*1oMoRb7bkB^G z3>&xfRRG63Gvr~N2rv%Dd63|t>DyJs0a}`uzCOaqy1z!ONqF7 zgWf=~v6vdI#=I>7rUi;Uk|lk`Hn)7H=5((aHxIV+9Wun+&V33jLvsCf02@A`c5Ozp zd40aHnE`A_x+t=KsJ1`o@)IxuI)}XZe(tc3|MUtjp+2kv`8%T%HCSW^a69yU7eVW? zlqzih?fn=$oF?)44_`Jmt<#&V6N#roSha88E}a`e7y@4E*$m5!J6}XVQ|ak3xZYw* zbdx)A{e<6gYk4hcX}mdHN(>%{MYv9@CS9;i046#BYt3z)ejblkfu=^-s;XDP7lw$S zvRtrCCDUVP<%^RMzwc@KK4v!Cr(7UMa58f(D)&e%F87?)n>FDC)UtSH)`lqQ9POE{ z1r`6cL{_w?U6v#t;O>jwJ6kdr2)h4k>=Gwvb#520^QGi#=aBN-SPDymv6h*%SV zNL7XT4^==D)7pZrXk-J(QFN}**IZ0gemtam&1+UR3g8ufxPxYepx?_s+~gk z?~a8A8-GGNd9I9R{!~`|K!|R*`q~O-dcTBDx`G&I8ceQjUzct?%%s8W90Y;%r@s3` z01SJ!&PEm;H1M%aW#_+>Ys(W^dN)uD<5I;nI< zxI#lQZHJ$SJqFEDo)Qd&YO{b-V7sEh)p+?iytzI{Ca9TvE>T|RZ}^Pa%12S zrJ}(C>0eZTucFpVm$P`JMo4O~SRy=GCK`cvT5!`fzn8a_$*UO9l3}3&{}Gk3e0xiV zZA~LGJq}b=;?X+v$=eua#!mF-cJx2~(-Yaq}g+gbP9K3qnt3=~HVe2V}bI&D**DsBD(*ibanzl+-qaa0uvqdH-8#Y%Iu_gMh zL;tIbYyRtVLyEY0z1fefHkWewPt2s6zmM83 z%L*+tolGw}=KL5s)nTl+8S=8$nYt&ua4D8Mw6Wvd6C!7unpL>fQNZ~Xl^{5Xh@S15 zrGbQ?0gYEa_%l;MGm2A**se?iMY@fG zT;ZBD9?xdhfks@u^1G>CY}{J|e4J+rN^))o1^C~Rx|e@iBl6mA|5OP*=8#w+T}k<3 z2x1sXfgyMdLoDT;jHHn64}I2;g(_Y+StyEH8}Yuc{x(JVQHQ?{#sW4G#+GThw@KlAf2rx>7%yY-v3W2d5JrO8t^??~^C9X0P{?4 zfdmAW-OmU(XZ@V!;jW!1eqQIJZ;Q!j=@@_OoUUzq6T59pe}SQ?u){sy1wRF^nQXyZ zJf}6-`74JDh;TXj1F$MmxtU$s;djFkPDA1Z*I_|8 z9ri^o?D+%FAY!E2mJyF^Vaajo<{;Ov=^Rd`>kX6?8njgY6ZIhCs zY%KSkz_l1@I$A*?H_vxEO3`h+7A zO6Kd$Yr@u!goGvLz(UtS`%g#2yteY@wsq#(pjh***JlN;2k_4N$}BQ6Hj=UQkzc#y zRUqN4z;i4gtPT=5SWu`MJ9g|=K2i$5le-H84VOAXC!^__5pzSUzUzOkj4)0yNl=K7 z2GU=x@`OOE&JQ$UJR84?WW1QhcB?9dD_vNJb_Sy#&^2?n$U!zqPWHQJsA~fyUB(rU zt2IPhz_?|lzlSvd*$tkZKlJt9d2$<<`)0UYfK54Z%h#3phF+v_^MiyFg(-J@jfK|KTZkc=`y^W{IERqU^+t5F8=w5u< zX;@+*5XmKyO-X_kUP}1`H_{BF1op7Jd;iuaBIPjDl3m%yKQ~O=w7SE;m%}D4>T_5_ z-=Ni(TTyqiuA7ikIESn4#ZZLVJXhqAs0igRK(8#vZtO|zmcn>c5{K|<)!h8khQ(&f zXgGbOO^U*<70%Ny;6qg8V-$x4B>&VtWF+NJ!Hlc!1D_rr&kPMj-hp z8!q_RZFxoL;j4S+JOH_J8Vu}La*R_Y=3;Uw`ebnafVmHKraFV-7=V1tgKj%p6yt>O6J~l z|B$$RZ%Eiv{;SOLF|%fddicga)x%3cxx3o(HUl{61P+|e$Nm8CtIbZ^AlrW9)MDiy z1gT9)bL2Z+>y5QRh)`biNqoHxKrQktO~~`St#pRR_+gDMtC_Z)a?A zbRQ$)`jPqk&cb+5Kr?Vf3qUp7S%IL)8_qwvQiahtR@7|wAm1Si^4cEzk=l4`m`s5a zw$>OCCV5fGZ~2eBr3d;WUk+4!A^TtfmPzj<{1P>hOMk~!^iA%fs@J)9v4a=9w}qwM zC-$~FKaECHyt7;!*)>d4!=F&I9X(V4Vv`YcvRh;4%(HDV7QGGT$IXdaqkiP#^fid< zy%Q<(A+W`X*4Xw8CW==-B$u9$3&2u|0F3RCwjTI!uR<-X0s)(hH?+pR?x}T{Sxs90 zz!E%>^b0&1)ZBTHwU&WwTa&DTWFg%qe_T@ZsS_QmW_zG*mUnlr~ zveh0F7}Xa_uOcVzhPLROr6vHy%r_k zft`lCFza7K3s6RP*?3>={a9Q6acNw*rCqAO@74;JxF8VWbpP>?eLxa|G*R@PJIQX_ zA*kfzG&rxCOb@9aRQmqMeP}Z{eQ8c|iOz^#@P(?Ou?AyAKM$g2$TH@K!mH$ScdozM zFak-#mCG@$(N|bJ>(-8=;}awZeKwRxPB8Cu)~LN&jhDVdQI(vFV?l*&&sg5-Ke{Uz-6fxi}N7uXAxd@_!L<9)}yU@yxzi9gooDc5@6>4*Sqrpx9- z?P)?uNm_b^+WBKP-+zCoSB~0MygND< zYUdkiR8NZGOdo?Brm!kuo?i(dC^rVzj-R{z5R+EaKBf5qx=t09LfvZz;%Xby&FO_4 z2_PuRqp_e(?q#*mc?~8-sJ(R@$RfGNDJYZ8t|d{X#m&*4n*gnijQt9LsHNk%Ct{|@ z4%9kNOWRE1HY;ii1Hb7$HW-}puRq}n_!p`5gR|yqdp9j9y1k`$u9!z`3!FQ7+n~@) zKSe!xM9R>GY9@_oh0M+5^MfmBH$du)Y86FP!mV;K>5K8g}et)Xh@s zZUg;=^Q@l$K1iiMG3RdXP0wSW4k!a%ol8@giMJIlU{jfxn{3r8yRSL%MLg8TV?HKB?^#;J;hm-A+9 z)V#h0=6jC6D``)VNcK9u2G}fhwQ@`!@!KwxP5?-KOd}PH*?gbKlMdK8XI@SJ(VJ7? zIgPtxh{9GN0?I~LfHyK=J;o|ZX*_lB_o1Y|a$A*p*36-+dg{W%j;OfSD}@=IYraa0 z+YCZ*?mV`T7$9vAES<;PW{1UrCepW!*@%*)M7>OFd*lY@8f+e@YVx>!|D>r`@FmQD zZdTs)IQ+!QKBPA_zd;WEhosrnfg`uzIb|1&?YagD1N>7^6+3Dg+j$B+ooOcc=t{*+(Rdw*szd9 zRGy{NX>?2yWhOA4;Ojd1N_x_U;l~cYwK9Nx)AEX&uqQIlWKEizx}Lm1WmoG;xE_9- znLK2Mx=B}ym~2mMf63V%j4dkPXw6L#595+bP=R{0AkrUgak~H=Tl!uXt4Rh8pM9ap z;;)?*pkj!7PrB~|09tLZ={`~@^xPk0B{@oG8T6O$_u+hVmrw~o4`$=nyn>TajTLnM z^Ug$p6Z~J*4%etl)-Uc_61DucZpG+f^27R&KxSF)-5&j7^JDefp(JVbw23o9TDS9 zqf)}8SegjnLjF6oy);2` zgH2e%G9aSXctQQj9DTU17I`ipKSY%wzOwGsSSD1jOmvB%>FX6ftVsaWX)@{i^qF;{ zX3y!*6I02q3C|9?99SS<{xI-NjczniO@^(>PWKn&nqrcPS2qoqkix02g?)AW#Vp|4 zbV$$|ys>fTsa)l)A6C8VX#*~%d0%xf-RORwxsCTYAJ^njuLinh!p)S6cLMv*12S|> zUy-SyWbNYiC@l@O)go5Xa3p|#y0IeUl`UpV)t7oJ8PWEmC(EXn3-X-#`>YwP3h3*e zu0a!KnX)w^7Z#|_h!M#Vi#cB0V3jGmaj9F-y|a*0My59?a!iy(a?T z*^#5$S}e}9W&4$}x4`*E;%mbj|89!BYmZh#%J$@?NXx&<{QoNlQeWL~Ewh*+prOM} z?Xp8IKJj25N=hg)Y3GV<*vscLla~XST_sOQO+{uFsOvYX%#|L3+LGRE8_yUU`_L5g zQ)eqdx^vyyNYUgAoyZWJ7%tfmGAkv8>T8a=|I%rA^f?1(!z>$fh-rfnYd z)(OPOET#;AFL#XOd)R*R`uGWxGY_oGX-t&h`EbwCAxX1317~hIPq#(B>7oFoaV7hn z%#gWnNCDp)L@vel6SrL18+1|9?tP}q6L)o=Ia!oB*)PJ<8%ng&RZ+6__}g2nY)`*B z+amXK+5j@0G|19KpkM44HZ)^%XQ;_6zz5(z9Pi>{kE#QFf4r~0P025?>G`gHEwoP_ zz4(L`s3Lr+?M&BwBMx|)p0n$b&5STJEbCZ9#=3(^jKH%Nah(UWSc$%xoUH9mfvVg5b)&8b=SQl#-pg0x@T#HcD| z1%86x?`poeg=|fyLBcljrlJa7vtflgT^GgV`_lyIZ&KSs9J{y=Dx2Dt3tC5q0_{r* z7SB=bir$ukEC9i1gA(J^hx8%a^znRkC}%2)=^bpP$a5BNE_Q(a-FZK)5-v>YMOO6H zEnRO-QaN8krLwEW+@ib0By^J8vGtEjebgCq-j<_p(>;1AM#|NNwEQ8xj(kQFC^Jud z)fL{2Fn;Shovw|exalW3YXogGPsC_T#`A6&9yKg7n-o1jo*B~Sk#`vFTG{d_g_99X zSUlE%Z~oh<310FUCaEHmYImz?YK{h7#1uj56KzwO2$#RUAz$ZJ(o4o?Gr51^&dnVn zg}k7iT9jc48FK4Vh|dP=-rXXn;_IBsTT_dGvg8B2GUqx~v5PGNCnnFN3efhC1Lf4{ z$S;xX2Eps;KiD-P#ue4uOGN$$W6MJow%Y5T#HH5??A?jxKDBq>$f2&()-R@*=I(t3 zSsI=F54Q5xhfCqS5_;LsCt9Mf06v!lbbXGdJ8V&Dcc(S!LT;gX-GILAhAz*CTfY^H zI4$Z14AMzohK^LUC)uV>=Zm-wl^e@BeS6QW5SW-v)x@7-q1w~&DR1e<72chfB3DS2 zANla;JN#YfSdAG%wM2kfUN166iM+4emSmBn^}@KKcD*C%f(DI7Bn799&&xFLV&31T=D)pu0*mUjgb(wox{W@b(;hyKa}A<7 z0r_f>a6Q2~eU7MNMA!vksZc=l39u80_|-8C$^wPgfVjsg0F?U(G^G_>LK7nXCCaS1 zsxf+ZTBKvCz+6Dsl*B|*Zn~!}X}Cgn4;$}UG2mSc9<)7Ne&mnB`zlVKjxWzuVED$& zFCGl~!RRcX7*`kj84{m6GQzM*y(inw-4TFtv~p+k(Z6Ci?b$ldA9OpTy&$!M2fz+PlSppCgY%eFa@khWShLe0T5p-?yfL*ksL7z#Pt=rRVpHMLM!5f^QfN z8o|5@+QmQn!aH_NGunnM&pP*>bi;uof$BmoI1vB+*Zi+D$PJcS%1%MHzl0F8z-0qG z15*HHbcwOZ1Dg}l{^cV7d5^1%&_5xL{Hy4h%_w@FI3_3XxbYDKg;JBgYsbHTn7!5j zcIvSw>LO@p{JHcaz-3o@HXq4>Q7-|bzH!3T|383I9%5KwMpsN|{ThHMfTt#U-v0(L z7|kfgyaw*y@wW}E|2i^2po(Gr$gTeUFU8P{ir{ArV)GEdYoNglj{7)G0}I}N_r267 zz&h9HiV^!Yj_Qiw-+m3U1mg0%43C*e3czjs2bb9cE@Qjn#g$)q^5_r78=A^*3!pUH z;B}86l;zm|+lTpo7?j7=pvC^HExk7+P@ z7gAG>{~pNyk45(B?GDZ~E4OaDUz&$y3?;9D>#x>NKURMT9OEdh0L&zWZN8 z_I3ol2V{6&{iaJ+zmg$cun8|I6t4p1iU@`&STG z$dTqarBnDdqhz8b5i;@ECw2GcbZ}7l{beYAPvF0KWfvJ5k2Fl^<2^qIq4Ro8%ZswP;wNXWv6pj70($Z0seg)kHK^1E<)A z%IslpVBAAdQBfzEm$}?Rfvt`4y3o8fxe_Nlk-%_PSf9t*3@(^Y^Z8UNEl;(INs*@k zFy(0MAcQ299-w$?B8Cg%S!M<|H&+;c^%W@0U*%S|ett7aQGbTu8H*dqk1sSTyUgcA zu<%|`^maaA-+c;i1P5$i39xrY4{otX?c=yi@p%4KpjHXG&g%|PNZQD98=>>(3&f3= zLxCrYk@o_QyN7ah=7EU!wMp4jRt~++kQ*bRvsX(RuW^|R0#j)Y9?U*Zswlj0{G@?SE}^cL2FdL5tr$~Raa$tUBaZ&$OK`}frI1yh?*Ea6*Hqj>^E|};bhaJ@lV4( z`PG<&W+fGo3+UwO6Yd@GJzID6umS45vyrkNw>%IfYR&bQt@15zgbFGh`t`uEH2c(& z_$kCl$ynD54z<`sN`w2&kJ+c>l{)0{W~EHMWi}_}eJr!hjr*#n%AZdBQ7GRB`n7 zR)OG&iJh-Yx%O7{%qCN3X50@rH{le&C!bc}QsHu(C`<7;tTFoJ?z!9ccJXh{R5YbeVtT zi|q;Tm(3;vABNf{(<&DMP&s8w^IvYwZ8_c)>LAq1yWI8TeDRYCM8yabyPXj6_y|_2 z^70Jg!o#*mwe7P&%^#F9s^hnK&fqfoUy^FZbvA9ko*`9Q(N=C#xihG(-0v8(>CeQf zT?&vI8DvCq6@C_3NyuGLVZ=;2Lk8e12w+@ZTjy zyj+ZgHO%r|?9VydMu4B`rtk%DDDGjL7yO%_C7e1myUSQ6%D>4&VDjm%phLq!Pj_o} zFP2Hna&^YG!jxKsZYj1*>z5qG&Rxr#f1W*}G?^uw+?IAiw=MokvUYiI&hIbcd4qH)5v;rmOm38ZbB_n_;@l!bAPon;G3r^V~Z>-Oq-(<{~F zc}jT-v`e8pkh%xCIbeEaeJHu!Pd5$*CAV~$*Y(aRB^-~aRBJB3g|8Azy{l<4jcrCz zDe3U+5(D=%72Ak80vaNkHyJ!XZ2x)iv}}= zQSWWn-tz_O3n99_RZ%<1G7+{wZmkZV&Gx3G#gu%r_cuFv00pP3CMncY4jcMZAK$YJgJCYQ z$2M&Fzfq>7IJ25R;Y<^D3?WL|iz%B5jRC7IEg<`Ay}4{t?BEge%;Bz7ZoH%fz=b0# z?eHCIpcb80euD{LokKaB}2AH$Q!|ny*wW%R47_J|P%dM9J-pk39LRrbjq9 zM(P!jZkF=Jw6b+VmRm;b`t$kfUn&0Trd=x&4Ze1iPxmE6jLQgVWcB?HC=1 z9zhsKS@f_Di7+4bgOq>Di&24Q7Mh@j^~EGj-xVf9u+^@yK<%e>VZ{E*R-TG(n@>!f z6hvo^=(<9jeO+>3urSKm0`m1Z;`_BQ%`P(q8*&=TzBp0LR)-uFY~D=~e`co4fd>`9 zyMQSx3?}=PYIP_N{fl-&*9ejiQfBt-@Rhr*r>!)Q_JJdft?GGet4rjX4_n z@~DKU@C?%*j%yx36G@-viplPrVOjJyYq#aE1;TY133S|M69o%L!)o3 z!COKByY07_Em~fQO|#MM+R8x0!>=ClPPoxs?G~d7A~!>bPoM6dUR-P{)}zf0dC1_D zdn7pufpBN*5n#dj3OfZCxs#bKgQUW@k~*j4bkkMM)#@M=_I<^GP@sXX(D8zql|8U2 zRr|o?Dda_vc1Skm_is&=FPX!Y-K}=frtHvh+olgJv2(P@NjaJV#8tmzR-q}Pi+h;# zxX+`NfDbOR^^_cD5*$!vt&%crFeBOyH~KnoC36U^`Xna}`_xqpQOx;^Zy6sc|3Rud z&5*qrDz(f~62{dpO^xxThSF!0E6GAyaZzRp9!N|VWF{uAQVJ)5ldID`Pi<#gSMse2 z^r2EQglWFn`4&6ub~D!ihSVCO>+NA59GE6Ybxcoc1dkXo{&#&4^*Qh+N1)DUeg3)m zeo6rm^7V0P9#GdvVzgmm-y#q0YR+g32`9z6%evg`U)deL#oPTnzhz*pz{Wj2wDRSO zx59jHLAH9HdpUIWjPVxLdZ^sxTK)w z9L=UT*{dy67_U?VqePsLRL73zr131`=BrI#FLXu=JZau-P?*SKo$zc~QF-|}YiXdu zG;2?NTK)Rg4nNm9=yK+s!U6;2y+~HxWcRcixx(pj+!r3+Sb6Bvdg4}c8{5H_eiUu1 z@l%+<`#X8(`K%*6u(xX#G2CkW0#q)RGX@=ZxWT- z+0|&H)lh0#bot>GDVEttpA=i4yy3~Eq50c&+&rr5*dYZn-Xju+tBKw&I)%=Iz=RIY z4Ek6)k!Zj`rsv#NSo!@A0i>hLaeH1n_UBLI2}Wqk8yme!KVHrl-U!;YX#+%NmhT=5 z1Hi^M?%ecu-o~qOOgv6FVMco6=~q@z{rQPs&?H`NxFPwteUwY=_IA6J-uTNIykt=e zEV=%CzHa!hH@u(lP)%(^N(QWl{w>A=Qt#1A@zb2to`_~+*FKdhkOlyX zAHEXlKt%}1WBJq}j`CLTD1+yD z^y}*xqXEJV~Q4?wSvejZ<6$B93N$LpmnK zmrPi1rTgIhBo{}Dpguklq|YBqB}^;bT${s>3!`c4$);pc44(TCpL|?);GECp z89cY%HA$aznQp zLSPaA-20WZ9JfA9!ua3=HE1Se!$p(onAft&IJYLREfwQ4))6Le{mQyNM5?77I$PFoQ{>h+vUiHn#l>-AhLRJiaux&_ zIhDq?eSX3h8f$?SUv*uP@WRfeyyO&Z19&$scXn)p0lx`Pu7`-gPDiD*U!=MJRX|6nYq2Rb@iB}l7OVI@Vd4vah7L8RRt!fud=)Mgb)FEz1O4Ys8je}01M zG_Bm9=ftyDnad+XgH>(#!OjNTbU&>o6Oj)Fh$hr-#q-X?@+RlE{0w*Yi(YJ4`r>A2 z-U~tX?6Nj6-{3A9bviZJ3JDx5Ui7E$TwZ{ZS~*e`TRD05w(}i;zBI@l8Gp?Ot&i>4 zoE9!RHe&Wh4mqOF(y(3|*XY4~@E!`6n>f)CEr7I7b3geuCHoReI4!`0DVKnx+S>ar zR|S>`@;j>OeI%}TMZn*hLpSHi1hZ>x(Zl=&Z>Aw^{rpM;b7^;!3VPq*zauKFhVjr6 z8JE896D~z$|L<~wXrpVxN+buq0~EP|(Fa&4wgzP|-JkD4pUt=3!t6)8d}ubLG>9uy z!t+QrWJqCu9JUI2?pW^{0;Be#vv8>saYN}~pNU;JUcTFVQ;cwQFlyA)HNx}Y=8y5n z9NqN9SmH-PsuOP%t<~cL+qt^jG=II~!bc%WsyKk2ph}Wwsr8Kov+eCtjU3bKp1Qwoa#rBK~% z&&&>*eb)!JN0jZcyYvrJv*9tFS?5U&#}CMvt}V+IF$LLTUDBE9?p~>i55{`Iu|kVr zxQif6Yg_@j>h$FW?+7}L)>r}K!Us~E-SeNNvR500%=QHl+qeu96upYwb5S^Q{QbQO z0EeP94M)&)gFAEUXzbk5GRNvA@-NLOEz~sWzhN6Z!twZ!lfKRvp_)@2FI6_A-9}Fq{Xmb*SG{#-^2!5MpVwJT$w$SF zMi<6mBy)X=C~_jE?E@*_jkZp?-}v~_sY}ya@_51ZL8gx-XP{4qQVczN+dr2H;K=qC?cK^_oi+E; zcRr{o@4>YJUfY~`7`bjOH{D;$!C_6$bj!hJ0Ha2^tkb<8B|lJS@y3DK-f<<_wL#*_ zvx8pE-@-zC(}AQUSv3IO`^=l_t=-pk`9<1Du!F7T71M2Rn)=c}5!NhfTfPYA|ACpS zCDjL?v0yWzkecSJC3Y3#HhVOISH|se!CU*4mX9?CdENtsV5m{|X-`Iv)p5i?j&M}8 z{y-4oo`md2_T}p5QT4=xiJi$BCP2mfz;XE7{!6I+)wH9g9M}KS0$88NA={Z%B&<=+ z6gjS|CGPf|(_0VTD*A%M)+9$!*Ng;$;GJv$Ve3FulT}8Cr$m( z^2uJ)rkK~J=LB+Hr}s$Bs|-wu&?Tq&naF1tg1Uki8;w1uwhv$wXkct zUOCI-lPGSum&} zn4{9SPWZ}kozN*$U+>FqC^{vVv^u;Qm3jtg)^NFB?6o+6$(Aw7ukM za8L&05Dr{;(k!I?$6$WVV7un#GLnKNg%szBD$6^3Yk?WkvN!`EUrD!ITkS@NSjoeF zR-US$6#Gr(u^R#Ayry)rqz-4B4wppR=a4~_7>Nnix2~SlsG@9#VMewxoE!^^Bn&b( z;;l`gu0h0?JigUCyuhOzr|ZfrZpW%FKF}_DQcl0Y-ac8G? z(ZELSO?-6%L?5G?#v+J+YtDDSAsp={Tz&}l@~DXDparxl#r>rLZs4;j3D2YqUfXKY za8-Lq1_0DZ|KBgn^rq5 zkZ+&^OWFsVO>vJjdgV%9BJ^3{reXweFuTd`(00me)u%#V5-~aALx{Z=#)b6yTL9q$ zAdlcN7tSs53v)2Vz#QPBdhUakfgsq(l6H4GAG*lK%tPjrdZAD`Q<#YN*mKHNFK_p{ z1m)4o4&ENw{)Q%K@)2L1sDz@01ct-WRs*g%WLsS82RruNJ>RtaAfmcmmFZxyNor-e z0sF|5Xw%k}=%XKbl}fA$*zr0hAhvDhX5oZW^+Yc55Z^(Mhj@eks4AhYCr>%o&_ ziLtpiY>PfRhpDNny5KaH-Q9EUlj?1~*!tez89_PsuId<9`Rltw<}d9%xMAytE7Y1F z{lJt1WTs7$d`fQ8y|16^USPiuC3kkDTP(_<@@tPiKOq<3TN;C?njbKA=|LKQ39*B& z&iS=WZ8g1N<&x~fbbX8RD6Z8im@p`ws~$=*DgMyWV&JQ@uY5~PSsqFCE*mX?Ng2ma z0{Ghg>VnsM^hxzAI$VLe$475Pg$}E|XLm>${W!`GU)Ef#f3+uV9$IbLv}ZwC>b)bm zl0{p5LdAJlCg~la2_K`6=1(Sg<)&nEzLi*20$Q?&_9rOA{^I$reU8ayLEqS_F*Bg( zGvdd+PZ=A;5fDUV2*iQ{>nBkrb{^@g)w97z@p`wLx+GSiZ8R-)6DiXBV0tCeE{Nzh z237ic8GE!85rsq;U7M@x`y4Pg7RTNk?oqcL^rx!=|K+5~)J*h+mA2q{J~tAOgl_B0 za~YYcf@zqz`IX|EA$f$${Y8~AdK zOEc9~ebvUF{oq(9N#jv}P#NkaRSkNjk=zHR3-q?$Mlcs7N}3+sc4T%DmioKC!+9Z4 zNO|`x?90y<;UR|hiIoS=P8M|jpkTvj#=llN>88Bj8WV5Gv%cLJ5-t9P*Q{Qi#pzm> zR;!wLrM32x1_*kCD+x!;XnZCRum&XCM+{8H{95_7&8k{5uCTQ3L+W%dj;q>xU{sbv z_hbYI*&eiRh~jP8UJNEz`7diSL}cq6n(~sD3JolaGx{SX-W#GXHH|I^lq@<05%=>{ zCQIttzWwMyO?HX#W;b%1d;HAZ)ZwC!ed)nalQJ#j(Kq66$8gGi?%I4sy_80#Akl90 z_HqG^P;9<sWU;}&$?`pqOZ?6m!Zh>!RKNAt0PMH%h3X|S#n(9%SIc{|83%NH>xh|DX)!q;m; zmniNiSybQG(6Lk-QdFt4?uz1F2vT9QL+v+=&jz2PlP0B#fu_EbA4nT7b4aQ z=Q_#B?bXlzA5lqe^~aK`EGcq>U~yxTbWwU$(O3sN4J?iBlHgci8A* z$F`25%FFCye|734#7_$5n$xXxh;s9S4} zIF@Lt_I=v+5V~|!{B;Q|owz=@$eaePUyZ>&WM}pKu~=%V>yz?k=AwPo>Os&gZoCwX zE2Et!0Ug|yrZe8^(1V58;3MmaM^%#!?JWd?lop88sD*%Y7YdG{%?rw*>||fgG=?C9# z7X_HzYzpD=UBF!f<{pA1$0`d}ZR0gaK}xbe@Vb#iX4&6GAT7sDfq9vHtrzQFHOkyq z|95uRCZJdHb>2NSnMGW7>wLL(!8MCyv$4&?2Q$rq zsmk2o=zzYVxr8PqR!{zXCzQ2x1P(FH1CANb8r*BBa*A@I_=_Q|%BFB9`&bvapix=v z{SQw}rZ>!eKD&)s*XdkTlG;(Hd8He89F{j-PLNWi+!TBLkoCClI=|he+6x%vyOISa z`b@6|Z$$9^KkU6{Sd&@TFgnr{5m6CPq}f0LL5AK@2D^ZT-V~(w-oc1~QWZp$j!JI= zQUipJ^iF^Pp+^Xz1qdM|d^_SiGtc{uc&>A<^XHuT<8@1tb??3Q>U));Q5#=TbGqYW zc0^|z&w0}R+!=SOOg|mXF-xTUj#bZP$Kj13cjJx=Q<<~~4^XUKbQMiihVdNe@)Ca^joTvk`|xTaqP+H{RZ3K`DZa6#hMHhd1K79 zc(&5f$NChG({dSV(A2^5OX^w(=A{@Q_-8U#BGY+HG8MQ(x`_-bXXU4 z)*J7{ezA6**NrqGX`k5f!y#RxPl{T+In;lv34+$-5=v1a5eCaknmoVOAbi2Ki*|oW z^2QawsJZGfZto%oVz z5j|B@<e)YeGd*~7DpKxz@i4-c5r=JB^6#`gUIYJDv~NwcN?qnhOTu7^4=HR&^Uaoh_#B?Pv!aa zoC+BFLwuA}?lf;yX}{qECVzep|+u~T2x zz#-~RB_)3a0dC;i%uFw!pIIYB_i1OIu5j4?O#0UL96_sIjCOwtnSs38Fi(km0o-#ecuXkHA%g(YA*HEXfkkjZaWMPe6T5I>#8@yvpZGChdMZE7;@q ztxZ{D0nL&b`V@Vb#TLz9W15jR;4^1p+DnwF>orLE>VnZ{_mq2hQ| z+xZjluoE>5dY>-CF7A5_wNuYw-PUXhi+FYZ%4}QrZwvJ*iWHqo^SG%G4Z&B3A2EdL zI&~`rf`T}LE4VKrY|jiFBw#o#mU1PH8V|ky-Pz*nI;Nc-j^sim=v=%z4svj|79j!c z+M>9AAL7-HRG?Z zm;7Cyl6OJkNRMn`YgU|UI>gG^paJpR>GI({rw6}A#tBEqKgFqGw}+xLqZ_xRsQQ9Vz+bva)O*6Z$x>`aW`f7 zg%Ysc^Cc|4oCH+_ia@WMTySKd3KN8^ik@nrrbkdov%fe?gG|jfJJQChsC}ZNauCwo zn!v7OJf9WbEYEkf&Si|GNR-hW#{)B{*^a(e`#eekK_Q+Xqs1rVIyWgGI~!jz^X7qa zx4gCdg9NwLW|0!ld*NByGxzBaqB6a)zkCfpm_mOe$&1V0d@ z{Nl^h65Tt#U|0rq9``&wKJ;}RR%COVJ+pEx;&zG-yxKIsmr46zLoMpvIR!KH*#RNkgr~FE;iJBag+nyYeQWdDAMpcT5R&{?Qoe4vw+UXzv&= zd0&6j#RsWUp0L;LE2}dtW&6)>GbJQ;9qin&c1S5}8J)pcd8!d=t}s>vzk4)=90 z8T+6md@=L%J>LdH#N%X~jK^3WjKn)7w{>B<0+2ahykl5jmPThhF5D*|yQk_BD$zAT zH;o}|aMC|%G}f;IsD}N8MYlKW(DbK7UV(0ZLH@x8^Fw^+boD;nIBGuh!5^9ht|i4m zDqZx4t;$DgMS+Jn&LCVD?LbUfjS*aw`l~=i65fOB#yI=N zIo9Fa4-6ViuCZwciDgj3InZ9`wBBpCL7@EPg)jT`5X`*v+1-P4ga`(;~^WLi0re6%dlx*^y zab4_D0|lljC47?8tOqKq#(WiSxV7-gfMK!e)mVWtG08WeXTbg64eKvQ-FlTcOFG9c zCG#Q5k&?+a=fk(#vL0WRv@>u9InRgFS1z%B&f?1B4yi^W)mD%H`+qH&O zTx)n1ryr$37Xq@RhE}5kI)Gu0T72w%xa~F7Ndk$GF?-`={8`FTdy?cN2;>w(4HU;P zobz1rJFA7#9s1eNR_Iv8idSNin8+00i^0lZ+HtI!U`DfY&A6$dp_sc8YW}^HDW+T; zxh+5R+1~qeo=b;mBD&OENo(hr&4_Z()6M0_isyVu+XXHdgIp=w*nyl8=O)XPF*(7s zoI_}si3fTh@tC$Gf|uU2e-xvcb;k2q!1AR#vD2B>`*R=RN{k~rIBi$1rh1BOvKH53 zuYj0LXh+~lH~p;SKJl>==Lr!T+~TLN@KK8Qv{cWG5GLxbf1MZ25|xO308`;`Kwk3Y z*WFru3F!pAZ`LK zX1v|R3B`=HN}48~B_{`3j6g@-HzZg0d-fICWvgJ>@%v?~4L05>KG8#UjHd={yN);sm65i}b9pN$Av%LKi_<+K7Dcwk*Y)uz!?bmrNXoWdB13_<=vjC0^;AXIOu9z+WJD z$RG-R0%N7@tjIM}r!;bds#kdJ>I%=EQ<+epR;2ULN=MtV?6}jVRR}tcF+8_tKuKL> zN?`nCoCVbro$5pBM0Ib8kDdS_wbh3?F~dWZ0Nrn8)}Qc{RNdQI*uFqNlLPKym1Wl- z0)L%RgMIj_t-7%@7`jzsscT2V_dqqc`pOKg0Ff$3e+aSA=3EW3ky-rJT z=XR6T$)8WS8#}T{Q3%&}twfkY)aWiI+Fv{A?W;hk*Zbwn0*dtnLJ&BW7vZ{kP3+=C zgzXGykL7ZuVP#70O|~}sVC_31n6V5xLghYgT4kNJJ`2Y4bWef!09Me!7wWR8>$!q6 zP2Mnl7(@C*F9Xj^aZzDw%T0ok=;HfrZdG?=ZCYBl-taetDilgDy^&sr4eYG5l1_(@=DrTG?A>kUU1oJ9MPaW7(tj&fN6hwh zYo>aCW^YL;ZwsGBZbYiUISidl+5^b2-UWOLB3Q5`C0ajXTcF0D5$Zxm4+p+;)dvq} z_l+Ub5tK<`vFY^Jd*m@glEk%Mr^6!l6V^~WkRI@L@_cabhLT_P1K7c}l+2Bp;+@e< zqXZ>NWY%;CbkTvSAG59SdF!CK!D1OsuCl3ioUQqTaKe_YLc z>ItF>sh4)llHkJ?z<|E!t!-{TupppeKCwrcAJiMoidrmE6vVBdc7+h+fvzM^>&xQJt-IPo=s( zrqSZV?4bW-;mFoRg-Eu60dInPDwZu5YZDsq5<4q-Z_&~--1CTGQNU%QKPrk8xLaz0-HGBRFaW`v49-o%lCeGumYp`add zUN8;~>jZ5BXcRX#yobxzNAIUUy27Gb+=X4zrXJ+De?cQRTOFHshIZ>n9dZkrwDTJs zDUB*2hhamS?~!z;nrjK(Svln?29{w(R7-`=QSL7^?HssF(x#tO?^;T%_Fi*14Kd9c z^o7T}N^l}jqr&Uu$kq*GC&`E7L%D@|d>2)Ekt#dso)fiV%KduFqr<;zXE}i!eVwp# z%T^3WM?b-WG1_8zsVX}IS}c7l=`MKV+{_X^&ymvbXAGR|yvy5~4&(S!2IE7|&_ML3 zFIPGTw?l2$T$`?eSZG>by1oDL?lNm5{A+cF9i^-nh{>Y%fs(Sa`J$Ys4|^Xu>JvxJ zQEt|S79E)3(L8wD%mUp|Jf(rWMra#JR|2u(#JdY?} z(&h{6ZUV(SastJJIwd1e4a^A4B-1luC0EBKj+AC#r6c%!A7e7EJ>Aa8epQ7Idrry9 ze26WgfDc0(48v=hg!-JHd37i^g$nRMXHFeWf}`2_-Wp26?VI#Xd%{_E4)=N%aKQ;D;20iENKOInaI1Od zKP^gct9^ry8sTBsx{u|Y*SCqotRZ@n#ZEpG?i%*uGnyqs{zVj~DWHLaZ=;#7L%^D8 z@kZLmJoyhq+8j;xj*hF3$GrI^FeTCvyFn#*uAqgIW|pd@hH{zWBiSyPaqHVwBan9m zlCYTulk$|l{Jw@JZkZqW9k#^3#QNcMU*)P>8qbrBxS>Th!6Zw_m>pBPAIks}9fKTp z?Lp05;LN-LsXxlgl{ue)_3V8&R;0hoH999iPmZunmt(_r05ZIfROMDnA}x(VH8?zF zQUqN(0++&_A?i9yY5gCXEQ-u@q~!A)|DX)muT!h$Cif1ehsL;GYfY;0^NU`WvG!BL zw`V@?d1Fa+xbTP#S`0_Sr-~Tps-g*_tDtG@khgK3?|ZErE<5j{(%rd%ZBDe#3X;7c zk7Ewg2LlyBOU7HEMtvSOcp8q7-%O%&K!kv{aS`enq${Y$N;!8%xZG??Y-DwxmI4pI z)jZ`k)LqPWOa{LhsWKv@|5ZeoS0=VYE~nbsyZC(4jC#Xt)ACW<=Mow@_xoifj!K-_ zMo&BhaRq1K5?+2}rIGDgM}Hrrs0E08zp4 z(*n`g#wCtRWDL$Z44*GLf3L27zwYzaBUYDcs7W%%JXr==2ag@#9LjQi@@!%7%RT11 zgc}>6up<8LL?XFPucGfGG^^S|%|jzc`{c%mgK=v!I&a;vpM~en=0pAYe!l5a9h%rBnm-tjRnPk{^|pLpRGS$J59J1uYJn~ zit)`o<_J3MiyYu7aD)rEg4`dE*7+jKXH8%zydHB=JcDQ{vv)}|8ATvjn`%u01B zFUqs9#V3dN)aTgbnwoBx8+PX1+3!WVTZTZ2M--wc!hYU(B#_gLODOTs35l=%hbxIM zUk*(th~?-hS!RhX7`QBqoM&!C_d{I=AHAnG*hyo0)hWNEOD|{HZytS1dYpIsFo#r| zTG4v0DaJArqZ6-8sF+$vQ!^qyT7YUFmCVc5fhjN9d){#C2+Oa=K38!PFnd+uni$*OYHs)1&IH_z(ee;JuK2=6my}hqHov{ zu3sq`zR-05~l%dZ;H zXm=?a=D0gu9UNU9U}m@q4Pk35KwV!zZT?~Y(*^b|_D7GMZOt8VqYkY(CFO*5?-?e% z-H3#(Mu3m@Z=kh(i$$T%*a^w|Vsk}~^RD{A%3|_M;j%8zhS{%5~XLG_6FDzM)hTRC|vv_e5I={3y_l8P5+yyg? zsV!2!Im9vYxuNQmv|P`XV}-`Ox3G-sS0D=2NZ%a}!SzFUHcigFzRdEOmZ;mgRbC2w zlZ&ourC?y&Oy-0QysQfh-gONJO@Vmu$}MR~Ygj9R)8|_;-XO+Yv&?N}l62Q*lwuSl z3%y>~zU!W=Zd0s~MN~dmqPcF7HEV_CR#~ioEK$k2;8&RplkxqQ>ibo&TPASdCR0mC za`Tws+#B%XBp;+^$^^O2CDEENS^Qg>T56SYQ)`uAWl&AcDegSYnMZW8Jei5ancuPm z^g+KT4K*KRRpr*@`ec;SyydWN_InwY%H_}PsKe|WE`dHNSEfKNj+p|H4d-4MiiYRG zgSLX#u(IvmqzcO|J^fpvvo3eC-d-A2ltQAHVg$LpC*o&))XTmEsh10&wxX5p@;h0< z7#HL~9q37i>~|y_{VX>tkmi{F+LP6h- z_U2|2r|H~M$oraGC=wcvnDs_wYZY=^Ar>lbp&mLQCwS)KoOfEUE#=={%AXFGpBB!k zhu!v7Df}llsy-LEQG@K#+Pgz2723$158fw#NCuq`nt_ZIJ{gAqgVOFC)NC-J`(3-b zjiTYC7XLeweRH3@33W8-zdMB1Nj6?}Qtx*7sGhT~k#@(MJ}Wg=-uDXqEVqR}B2=5n z$#!0`wn}AAC1S(WV9==6TILwk4ldbO{6Q(`7Dx{1_e`V-g+uK=_%jF>ywd|M-Dhm+ z?H7j%rO&24X%R9>(D3VJZbXz{GE#dXJRDu0JtUHzj&=0CA5*2tg`fxvj5&J|f_nbQ z4ncur_8Kd8hFT4l%C#3+`)N!JT`i<%6?JLSY*^jqiJ!h&N{IMfj7NAF{y9{lCDh~z zwiUE4;`&70cWHUvU_n!-R*Mkc8seOF*$T`J77>kWmj_ zZ`KW)i7PBdxJJo388S>+ArkVJ;C0rqqjjEc4trKJ9(LJ=9 z)!0atM(C~PiA=9F_#{Y+AI_Yai?7?5(x}dSLbf`x-bmYZJsSFa+Uu2^zJG`Ol1v$? z9Id;9ISrB2zT$}m6VGYO(z9OZD)7Z44Ey`QkXYuUG;}iZ5#Y-DfkFS`3*ETjeK3w&)?bRN<)CfYh%fd>aT+ zvk7OZ&emc~8PapT_40B)bsi}8p_f+U-%8GbmiV(o+y1zE*{r)(Nenzrm!F9eW<#Co2&9BJOQ(+3#^75 z-phHHpTnpGy$khD)hRX;0QIO*gTUV-!Q%(0j-3M?#|lhA0X%Lq)5V)gGw#{{s^bUbsZbBB zvg>hg=zh?#f(3wjCO0qqI^W?8_Byfd(r{r@iIJC^?6!V1KR8eHSPal++O z{^XqhB*z=H*#Zk}+`7qO;1T#6#dQI|b6+tMj1Wz5&(D^1 z_B!;R?lAs5Q^+9ML)V#7vi$Kau7lvruh(#OQ2`>l1&HXLB)`aRImDi;<7%NwUuH9= zyz00M`o(qd+ZBn-HQIetXMo_6JQk$;i~W7a@)+4&AspzH|BGyWx{y9K?&OpvL*EV z4190F^ZnBouH+Mzt6gLGzGTP+a%VqkKLsGVxOmCpZRT^=h21yowKvEG@@@9Ng!7L$ z`j>Ei&R72u&K}J5FX8-4IRC1uKXvK9s%j5z_}9kyN7efi8)sAA)0LfD!+m4l=IMRU z_8*{EH?tR1Pv3W`XL6Cs^_Cs{s=X_NwK*iKc_k%0tFUdp~m3$_jf3;A2=WbzjE{t z?k|S@UP~e)< zQw0oov^1bR%cW|)4}!7?Mu-1&XI(L1?KxVmh1|QlErRgm9lH7CmMyox!!`@LIq2V|m)?Ln`#0p=raHkhqgFlc8Fv{D^#QdSr*b5zbf z^Z#H8;GMMhg?C@0U=DWOBi3<*t819NJ3Ze*o?q;tgZ6-oYe%!%4*=p+R0&WBN}Yl# zMjNaxqt()3&mA1$QsoBk{QZhWz%HgQTmrN*+<20LN?Qj2C_>wA`~pCiBmmGMSr)Vl z;9CHo74hYfTTc}p0ECJ=yWb7_=^^fJuH_tfC-;r^9|W8Nh~PFtLh-4BB>+(3LTpd? z1pp}?aQ2cs8b^0IVD!ilw?&!+9oi#i7GQ0u0(s3pKKa>J6y5{8wNhn(ZIekn=?mC{ z`6<%_N6g4{IFJh)V*D9%?SfQ50RYmdY2F_IPJ!bat#;(wM{yS*bfj-aRB~@pI&vWr zyz@PmsNyaUzX2pDU_Ax$19Qj#hS$YGTeF|DIQZyW8~}id)BPb0oD{+FopQ4|uaJ}h z5E@%v!F~Oo#lwHV8Xp7iWc*~Z`x;0O*h7kS+-ZfRA^<=KN-|OT1%P-)fcUt`tRDbu zfShmzm+?S=6oIuph=xz^xdVXsJK&wh&-%c&$*WQ&)9{y2z#U(T0RT%l6108V^B|HO z0f2Z%2c}&BUG(7iY{tvL5cX7nP|OGU2Y>bgu$fRBd{M}apjzlH@l`^IwSb4)WzqI zfl=TJRJ^msG0GoS_s>iUh}7}VwT|q}4X?g`L!l5@%Hldo?Sa2R9Kd7r?fcUIu#LY% z>uLjUYS-0s+;t?J&j2%($N%yn3aWXs;lFsxP~jI4R0GLt)jY1ayViE#h>ch=iE>g< zwVVgQ1a4yXHfNqH2$OASN9Xp??|A5Y3Cy7Qtv$YX z=;e0^BC!BMp<18Ufg=~9!DHFEq8}FLPgl}TKCQNXQSn`yjEB6X`v>ZPwYCV9B0BdR z%^$z83!N{3%?2t7o%;@<%ZiLv^?O)gS?YqvnTWo_zc9o^3c*r^HQ*z=M;T9cKyRKt z#Z5*-Vt#|PfOFFr(`2C1RvX7bG0egp5=JtsU(ed3txJk{{oMEPCq&4H z9C^G)WOuW&0218MIVAKqh&K5s?;9YgVssvLl88p-W0g}YrxgvC$7|YUwF>v}cg;Ki zwWJE>(;g$6&yZm<%qp5|3QrZh$uLdzLV^^8$tN4)WEq^6q&*yaTwv z@Cz%q0;s~KN;p;VG(ZJ(6#+C+DiLt)=QPn}3>G60S@z>a-!j2|H5znPo+@O4C6wGs zX^&J`2Vk;nbFcqYLI4y4F4pK!Z{6j=>JmUo9Ms_ZPGow`5B>mu;#)oCFtlU^!+Y z0O+->cPq!ZR4;)?i<{^`1vFT0iGF+gyPu->|BAecxdygme#`vK9+C&pPhry!^rx2s zTr6Oua>>RdBF1G2w-zAU`Hl- zpYcc2;{j~U!up+`AGN9v`0{G3#g8|cksbBJ^#TBB6~Oey1rX`bg5YQ41(^Zsy?YXI zQ_8uumQIi@@~)WHAx=3NFdZOXc~sb9?VH>5#C5~Xz&dGXBCgCV#ymB2tTOHPZ1)sl zWGut8>ZCMxz+nQ{wNTcf47A=J0!eiTY;4`&?AdeQ6%@T7Skdx%5wId&av0*YX8SR- zs}RZ!q`b%ayxPipSy0Ykk6DLnWG5yH5PSJw=;a@-vUVH%{CK4$EAL_XDa;BW#}eV>eJ(NWpgxesM~?+81Wyni{i(=Ki_RRl-ANLEB9esfm- z&fmLdwyS`@3z1#X9|n$Vs;}k7uCS^jlY`aVp}5~52g$8R2$ISISYzv0EZ0A;3h-T03eY1unIqh{ zzY~(hS#S=gTq^#DFFM6j(T7Oq7SdZ z#u=Gh1o*%3r_#AtlOzW*)gDC;sDD;70&PSiL_EkWCsl-y&vYFEPwlEo zj(bSl3qbg=oU8bOUM8~sK9LgutZqB70vf@j3C46I@FXP=mb`~)-^)B42b&qD+I z7*P{~GjetDf+ghKH^-h+^@hl9;ljr%J)4ZeWjS^#W)k~3pK|P_&)?hwP($9u{4g!0 zK+I@yu;Csc?gKKOG{ES3Q{BRsd;IpL%7?nH#PyZ=tUUG1Q<$IQ4E!Vr9F*ES=UrO) zTTu0{2;Uz31wQ&UzV<*i_((wwa937sHsf~|{aax9uPEm)09*k`;hKp5PJ&0$-+}!! zn2Fv23I&J_akqW+iMyZt6iO!9aAq=z-&L`H3$Fhs()$Yl2f>k2(=P4eNudGkhwoa} zV+tx(U9hqmIf`M%J<#Z&)^`2Sq4k?{(72C#mmR(e-ds0xAo1a(`y z`wc=vmafYbta3jWBHuUtPzj)lw@vDYCi*L;{GVHoUjR4`uugYuY?pf=L1f!2M7<6O zSF(ZO$I`XD7hjQuJee=m9uLrdf6w3I>VE}!|CcEKuS5B@?fG+Q{2jS!K$7PkEL8pu z^>23ze+9aK0e~7{{n>M%y~z-g48eYwKK5VUM?o(DgwHs&h}Z5XKZWwID4_aR6hMA1 z3LqZzGGL^U!4Bh$roY2;OnOf`zh4j7Jq9v{ev$m$ROAISocx114C{^ zrbuL0^ZZ=ErIT;2W~_>S_z_-wT+0jh$eODOfMSPA-1^@O|L?y90p}!G)ap-@g3RX! zvaSJ>f&y?X_k|A^_m(VA6&e5lKILr6-7SDJQDL&oCA+fHF7`h{P(M{~2aW?h$YMG8 z!!+e3YrCWBq2MB#3atOG>K_k&{?pxq3nJU!ahm&g)fn*JOv(FW2Y+>4n7r@{!3;bI zpqvIi-`&N@!#{waKaPzl>xr^UBe?d&CpIFPRsJPhERM_8)Jd=u9B*_%APh z&$lZiX@dP~)`{(6N%bgMGk&&s^BaU4=xm#3XJSAO?w;nsL$VPuSugeDkf;)5DZ%%@ zk--|VT>mBY=Y##`2U!0g{xjgjnI89pGrLRnjHr}E$PtOXcJP;j{vCn4b|zOB8Elh4 z*j|<;dBG4vuwO&av+4Ug6qLxOQEetLSYs5x`e}pAK+f-8Z|73ACnJmz{ez)^Pksn| zKZ$IChv~7M{}t&pfc-YG7VlyS5=6Fgo~wb#iwFd)pYeG2@x9-!kTgj~7|#Hxlprq@ zF#buft$!K+{|}6>cI2JuqPw9#)7$X5w8YaMYwyl2*{^-;7Fr`F+Y{Jb>-X2me+?H$ z1pFDWCR4^=(QHULVDQ}F-%n8O&EWIek76>?UXqBe;kH$HZhc>3=m}|;J91;qp6fwn zs2IKg`cup-dS3QE6+>b`VCH<7-POMHs(^(K2OEO%?|uG&ob}$+aP3Xbs&EQyo3M&i z{*cKKZwCVrCC?b*{E=QfgqlV7va&4Z%O-Fbxh0T?_Jj8%2hHws*F0GObv>oDgfU!-|KS+KT3J@u>_&d;@Yp0IgZ$QoE$gy=s-|8_Y^S)d*y4La2OH>prB<;y8N4!i zTd?WtYXes|;+I}!mdc34pj(tDv9a*F zXg&OtP4--;@ul*wAM9J2d1kRvs0yqR2!!K(uAf4t1+W)A$Te!>^t9qHn?9!H$mppK z?KRLyNDPhH=b}!8t4TxCSm>WZ|Hgo+aGUs&Z%6L39O#(4Q2!}Xnb~#3<@SEpKXlz^s!QFf z&$B1+$(4e4HTe)0^}N!jHzZLBETH?2UNd%7QmB=`u)dlv?`!Od?M|J^=?BWqxU9<8 z11r;!%3qXpOpQ0(V)Qq3-&Us@dy8+(F1u~F0Ih5TtUVpl0etkoC$wf7k+ZSVMt zMZ~l=r>CAg{+L_Q6XL}BjziMo;iq6>uo^mhoGi{MfkdOfX)N)rL+r1h3UUmDd|iN#IGW z&|q__Cf)49HY5-w}I%E_oMR6KNothJ)}mc81G;0@z7epr`a z@iA}Eqz}mc0>#^cMNZqB*Bwm|20lb*&@L=Kf8lre(3EIxUJsrLv^dgBm}I*wKjp^| zV4S6r2YAB}Le2c*Vx;_=?;>{jYt;YU=uuvoV&rK&M&BY<>H< zQXi?(05=FfrRak#IW-pq2QAQj`Sa_K-88^9c{aNxdd$yF`>HgsoUJnRbuUiLZIoS- z!8UgKY!tq8pRHO!?o^$^jr#hwiJ`OYS8wu6L=^9bx{= z+Lxi+IS32O?4i_9^R#$@EVztgCzE5Fr0KD$9eyy}qG%y@s}r{D6>E7L^9A(8H0@i{wHj6S*D#gBZv7<$&*&Xr<$5ifN>M= zWyEbwP@J9%`6nb-(OzbAoMY;D6AEjkP~i;jXXb40Y;U7l8_xvuM`Q<)ZXUWB#-#pU zImZ`^HfUmVYWVsPAB~y!@i!aL}It_{! z;DXB1#I+Nzy%NeAW_9Yjl9!s;UB^z&q0SI}cL;9N-A$8kb!;<+Hd{yYL0W-Q(T{A? zJHV)y+4qv{Q+=htyoI`HX8T%+xg+suw1K;*mgoi&?{i+Pif>uQ@>m#=z!Y6F zw*^Q$6rBsJYR`|-(7hNYG5L9WQ26Gff*lS|6GFq|Ar(2i$bgM)YPcwii}^1=35@=F2yPbi789ZywUWSOIbaOJGT#k-1hMIk{{jN#tKe$)g2D* zTe^-6_(;bRa;HktXSpV@eo8UmN#OAQghbG__MDT9&Kic`S9@uQ@b&dsqa8|ymaAv7!h%ak%~ZIw?* zDX-b6{vvQHUiiQ-Jha*2-v(vz=C(_ z>fs$=_gF99_S-bS;FTwfi>t=e1d3_6s4PE&1z^V#wGR1J*S{ApB%?ERQ zxP1?>y_S6-j&xG|w9}rNN1g)jGGdOhl8*08p%iE??)4=R7NOm?tvLlmkU$i6g)*J6iWLuej5y<|kv3khx2Z;b2%N8|5)Hnp6uI8m@ipl_x2)$@8Bf(& zGHenX0YN#%nQO`s9j;ESN4Jt#eajXK76v(pgeF#S2P4rx>pl3HVKTgljZsA&dnb0v zUWcYwp6jh9Ataq`*-1LKjeO6IkVnSe|4}X1}z`-wgli0?SrU^`mzANsZCcc$K zC@J?;W80cd)uoq8jaJ=T{hCo?uKgyjA=AW@g`HwL&4`{T9|q~|>W&U^NxkmqVs>dQ)-^0`?FOo;I6ZD!p^HT<9T zDlFW53P!KlkGp41r?mh{i#A+s=C*WILyW?RnAOs?PG1|(&!hU16rGru5Rqjs*JHCg z2m?Waa^$2S{TGI33LCM8_Kc zVVY;6hpDj_{!YlqXk8TE@@xu|(}O)_U7)qWCJ1I2*td0GPYEo5OE$A`=iaTl-2J|) z*N!N6^P8+5la#l2bX`3~r%_`_7+r_FpbkdHk{@rnEN}ZVGEz|DQyzOUQm%Noz@S)f zKG7*^gKMt&83{57_f@_-;-F+7s!;)w8RROl~$X3QNKx3sag6JqU^~;;ExO*Ty@e zuwdyWjvecH2kL}gHB$qiHE9E69H!H){3mK#N-!F8cQx+$Om|=ZsFHXxQa-FrxQ1xX zC8D(<_Ey{Br5LIh`M8NcT?_R8YdmFZlC{jN&MPnym)qmnl96Tty-u89uvRxx))22k zcR&p{I6F8j^NLI+-rn#_Mq7Wr;ss1(V6?P0HuJ>4O1v#DN7{^Z!&SN(jh$0P${o@T zt9Hy_E#~x<>L75sanUxau)wzZ1rZ@Duj;~H?C132l6E1vqZ(`JF1<-qK}F?WkXi40 zz>{Uv8N;a}9z@v*!>`*;rpvRvPTc9N3$IVgqG`|tHUe~^!0|Xm-x6`jHy_W;$WT(u zurlU=wtk&^ZImSH^zE}7A-<%b4wD$a_NaUkht8|yh+O;j`gv*R%Z$_*US%nJFK>`e z0<%Y8N}57$mU@SZs<)yeT*FW5IBJ?@Mp>T;9{FdvM5kxosG~ zRASK)F}dUOHfOmUH|E>)`Z{|Qh9rT%SOVLg>#5DSLAYJl#p$zoFT1R9UZ{ypz73Qh z06P-n3~vaNUU;>=jbO&FAaO|H1kc5x`U;F=jJ~R7yA+Yq5Oztdb7{x~iYZk45KK^3 zIqW{!Y-Q|k0IU;hb$LNjgwplHbCu@w0f$eqE>+@S5{sKtJem{kp!Zd1-C;=yW^J>Y zwbg~FTqhr3Wd{ivH9a9jpWnAxYk`@wK!b5X%3fQ|Jo#4&&Jge4zJ$l<9py=Iawzz{ zJ_lb#|5G1Vi~@Z=@gslnw=?!V7t>7WzI@vEZOwLjr*tBKf4M@dpceZcnY&zp7Jzam z#>>P~$DtA|7YEPa7bZ8RvF|6T{VjxpSJ!!$b>(hf`f-PU9ynjOt0lm#aVy;y(2(5! ziD(~wmYp-R5{JY!v^JN7@~v+H(J1G+#E#A_bQ$v|Fd1SQ8HX+$mI*(xVw_z#wk0(8 zN!F{gWAFZ^ze8b;@aJ9fy5Tduy7=U{IY6!&pn{J7(GXXDaJ7)2+GzSGS^6&87-x-afEIW1NU{xJp(#TW`BDKNBh)`ok&j;=B@LBN zw!oUsQ_}nqe$%5~em|0}!HEBG4X4L)%?cDr6yx*-;uf7#e9I@o3b8%neA8Q?{E31W zaa|*S?fz|^nysNi$FtYGUK5{a`8?i#3Pah+t{cJbG5z}b)KkC1EyW0VX)w=8m(ATPVc}XhC6m z#!(UrU5W*SUf-TAtLWz#V9)ppb&fbTk@b6LihTcDIi5Mo98q`(5r+_$cOApC)c3=6 zBQc#Z&szj5rz6hA$r=~?!hzM!87|39yDkW(hKmV=Bqm(Q9`M5S`$Y&+g?K6#o{I3b zDP2jOHl6GUd7vUE>9f_FQdr07by-FW?;c6J<+J(v`ec$HLo)?o&SI8QpiCk)&OsMx ze#A5MNecc;2iW%F`w?=opQmTjkmb|-6}4jc9Gu3TYR~irThVh+|MwSqV`*V50U-d)BaN@sIh1Q zy%f>u`}U4pxCEb^3iGR>%UWy~yi#o`6T{m36W~a@kDK2|~t*7BP; z1g#oBG>Z=eE7tJDx!oV}Kv>&vJ`OCReZ2%llB`LZg{>XZJo0lz=3~kl!2Ae3FLqEg z&ODX#%gLRoo2pJo;zsMzEkBqB!p`ITi(6Nd^`^1v7YsRZvuyxRnxg&ZxrQ=HiTtY|9ln_Cte1XX+R zEBksE6t}h#naKavyXNumxrfr=*y?S4p|@gh_o^-$h0BXw=_)zGtt_}0nSIC`BkH$G z;P76{AKa;?#DW2F6{l104l5hjR<64oa~l&wjLBy-Xj|sKwocpmG%*IovPd8e$gTpW zRya0*WLveuiFb5GSeG;z2*N(xtvo1RiJ#TUzk6&}a8bUJw8^LvLe3M^Q7X5?=-({e zZ01SiUr;`>Jtj=wBEQ~8b=X{WtJ?2y#}c2_7X}%YFqSb8P$P<+UR&E#V$nT9$A8&( zB4U9E+wm4p@Fd}_tmdLseu8qY+XCC+?xx)%+?v6r>#%}3uE2I&u7 zy=FcxNtDSx5-UAG{pW}YP`%iJo9Hi@Ya_ffve0>|W!O9y3241`?2+fgc#DR!P| zW74PGe2DAfhRAaVv<|SaunKC7)Arm6fI`zwE4>Vr@3B@qKu_15HA(DlX&OH2)Z1=9eA0B9FxOZO zGdNk;CgbRmEwMb31wU>-f02i$W^g47UtA_MbW<@qklp@|3J`O^s1yx>D3G!SE9eQz zfY6Ox{3P$}(vmTyE^D*1ki81+H(dL6&w6og=%eWxxbN;VW*^cE|j!IOVJr^U~hb=bggH*ytWb8${>OU#0-MVpu5tpbG3PX z>pHvpljax@dFR&IN0@vvgLW!%5d5jNP)xzc54#E+>zS#D>B47gaFO25`Be0%bZ*6J zifcYgfsM zvfnefkC;VOJ6@{mn0r9Be>Wxuo%#nbu7g62A?&@gr|)W91jgso2b|NC`bA~GWbu+mH8iTVFE&wn-25V!OOn1vT zAALcWS;wZ*x&qsQz>`2I7(|=8<&jIE-t-|oi;h#b*c1$#3!Qpr)U-dTxBrVQrTPKCANdP65oGbNVe5@Ib{G71t;>#V!Nf`J2f z>Ho0zo>5J1UE8P|3yKIfM5J#(1O$}cK~a&8Knf!@v=_v+lX(n(eygn&NyPEL~RJZEC)y5h?~3 z;y7rYd{6v&3(eBMVqus(YPaQ5Gb2GaWy}^KC3NUg8k%)sIf`0pig}gj_o9Y?>I`Ug znsMo~xRsCWHbvb`HZE2a2+(&P5vJer*czj6;V#!J^ZK0V+a!X?iO)$}DYlY4V|W1b zp(t8fPdIa74OBK?|8&o5Q@Yl*`Zf6WZ8JCDrShQMvc<>*N$mE8$xTsg6mV!Xd+ppx z0-#W(l+TgFr|+&@Rr_gD{?iHSoP?KHFF5hHA;ZwTW454TS|(}rO9o*^krb{afe?vQ zEarRpm5+LIXy`ij%ng-8QxfPweQ@Xfbl**A3Y9?za>Za#8j{G83z5Q~I$pFEz zjMWT|zW85}O90%G=h!bCegFc<1PR^-{ud`^6T8>p>p>^H_FD`)+xAL3-*Pm*lc9kx zBLT=!h*|bZSfcb*>pB{1BO&oQDo<>0qt9?=%dw;b%pyIIWa0gu#)PF~by% zKO*(iD>%KBHR}vScQPwVdv$oDo49tqeY|%iZWJUkMI)Quvlo;lSaz7EIDO=&z=Y-? zmPjqJG45kYL%wrJ=(w=;HmK9Y=1vDYtCj$eM2$H+1(hI{?AHV;?g_|;Re_r_;)@}Kp>N&^Ynp&PaQP5FW5;X#pVOSHF zE);9=b4w!RWFsvugXMz zLw)d~^JFFy*&erwi_~*}u5^wfk)P=Y~Hj3>ep7h+78Z}eTs$FP;unfsK(xKfFZyb!o2PRmpyYsO+$NY;0~1E z^{$77D)|G~%OoCG+b+JmXA-_(S-f=XDDl;?x`PkpW`EM*Q1!MmV+V9<%KVOHBCD;u zTWu%`V)&MGhlWGMzC)xw=Qff0Jp=f<4zmJuB4?FIq5}~|6 zDj&t9U0c1fP~OuE5QlxiSy{OE`arBFZq!HZL35q`l_QdyQIfMB;`r9$!h=7EO%0`@ zSWa!zc?}odv>%HuUXy-B`ldcej0aTMYcZiB6hXY=54J<<-PhVFfsBlttiMTuV9O)U z9$Pt(xapCO>Xz8W#^xYalyZ=xRfW6DRCj4rf8GV)+ycdeitwW)6UgHF&H=(3-Bvb7 zS-n_epA&U#>~wy~2(8ng@F>WBn(c+m;#@v{^HBrXr*eaAGkf>EC2$1_8j6zqlFkQs z^6Bipf5;sOh5OoRdml^)iUGuZmG>#1$VoygP3oQrfO%B_rWe}#DqW1qG;sOmV+EN@ zV9Ay?d^&M=fLl$&W1M0^WxVosLCg7zv=zRTjR7?-=B+dFz2f)d&%_p zYuX(flLFqelRBki`>QS7#smycBS#U{BR^h=7xLTcl6<1a|3t+pFRgviyzWkMQ)9uHqD}4^)B;|P=&s96O`9zrvpGOC{}4tDIeu}!Z@MF?S8Mx7`rVM%H$yTVLLl-tU(e}J^;h?+YDK+ zwse_&t3<zHiv-<%UJcIPt3qRz>dqf+G(0aZZg?JNv+PzuW6r z5d>l2w=E>OzaLj6GmM#W-wU9YQ8t6-LvfPR1x%A4i0MBErUEUQBL_Khtfj~x8+Ld1 z1Y8iH(%bCX0R44Oa9^13H%stf((l-b$tG@4R|`0R&gPbnz9oP%o<-ZrgRL{&T}nZ* z2g?T{SF((Mfp9*PqBuUA0Nr1Vy7RTrGR&#B*`S^ z>MpxLiq1O}ZL3$geC=$0&Pu4~?7Ny$`05wt{p7$ClG6WBqrJ-rBm%hms=-aKBG|Iq zfgATLuWcjUXY5OkS6AZ5W(1M@iZrm#w{GqL{dF)gzr0mYAM{$&(1RbTH0~O4*=2^J zvgwlmKoGD(v;D?HdPRqojthnq)k4hiqjCEe`#NL-bl;UL8q+SS^Q^=@zgX zYF=~!20>ESX+UUVdn(zZqB8jd;h~$6c~(o>Zi_v$=YEcCNjzsdBBR6M+(0^N(WGUaIcq&{y2~oE)e` zgikJ(ue#u(gd`2l>vbQ@OgG6+qQucWollrr<=_g+Egxhr8?zbuI6*enb;RL7eCw^U zBtE5njqH~cyq*i&--5hobT=@R<)cn+n^XDGP zZMV)wqs13Qy-D}`Qr#@EY-^NXe$j0V^1K;81J z?&i>+qLC-ecC9NNYj#Jg2lffgFETW?T4nM3_D|05d5(J%|9NJDtjgly`r-hSs56M> z8YmOI&QV*J+`7b|JS3~xws&d{;K`_JzSTK?o}^Rh5AptZQZPrkrKOtS2;utJsZL= z9CJ5|PPKk5S*kC(Gxe}4$q6_35WiuJ633yf#n%>#JG_F#*YF=30nknhCT%>9MRXm| z8OS1TfC5!eQ>tvPOu!ZG3il+kox9DA25wj?46CG3B%-rm15hdA4h}lGM3-q|p=IVy zTzFP}efNZ@pU)ReFFz9g4NBer%6QL&PAnss}b7y9|vNHfHHz$~7# zY|OK|Vi)e!05XqAcQ~JP>$iI0$;|YGx9e-64VQGUACOuPJdTi+poj6?3)~YC7;)4 zxL^NfUN8}`J4URkpDGHEfmpOM&N$rR06e!^4W)1;3T{(1 zIuPee=7Ch(x_Gs-e7UvRqxMlJTzo3GeC!Qiu}~=WG`NA$&x^w5?%~~OE*n!iXSmKh z+?u;-?jFBa2<*4z_1jc0@>Yd{(oNSE-$x(NOsT?R{G$c-KkX}rolS!R zX9#2{)~>T_D--mMAa&`S9kjrv7>&n5s~AsLrg`^GYMN=fa3Pw0NdLbmNk0pvZOk`h zSF;oF#)IbRZzv7iZ|?9nEgNi`#+auExX#9K7y$h9vcpDC+skvHAPP|mJ?u`}AoN=& zINk)8X<2~wT)p@!4i{aN+(6CIz@x1+i}y7dEZU*7c`|UwW`11ZWu3k6^D zc@wfR4MPC2xkf}Mn+4HbXvN1)-!CgsT~#icRa>=upFGtjIOZPN4%rDo5 znE?`zc0b*r&?HpDyY>q_epNd;WO9|H0EU-*#7N3_8nu)opeki!a=~>AS7ZP))Yjs0 z%CBOHACRRA;Vy{50ZjDwf0y`!$F+nF-Z^!4E(!cf`9beT!~QQT+MGb*!y%6a&A%^H zMIStF0fqrL4m1+pJ5Gm+?eFT~e_2&G;X(|jP1s=%1Sg^KgC|u0@X)Kk)epmWZ$y3< z3`Uvc<8{xpU}D-~YAGP$l0RJ$p{zpBfFHocM#|FIU`jSAsRfQ+{3nUHXKJA=>5~ ze{+?|;UfNXbpj#Q{Lj4#?>m8!55Ls=Pkq>YFTfY^s&~+QkCCL}LH(xB)tfZvh<6O( zst13ArhoENQs9fus9%>ptN;ZNEG3%qc&(LwQvnEbO!6uB&rfadNT@zF^Y}W0n3o`b=z)#A7Fh$$OsGTr< ziQ(CAf1EuD#QMgIDBDG4|Mk?D4(sDKH{xK7-V9(u6Oz8wewQHymg&{>=gJ) z>Cgt1ACslB2~)HdT5sBb`7}0Qu1W`I>(1}y_Wbw?qFccFFtq-;b-3zh3E)jO*G@fh z0aL&%!6S_W;HQ~>|3-vQKY?4JP_|EsF0&sBz!m}?s~0ca7;uE>aG;luu;f3==9v^| zr*k2DsXa}1c%%A?J$S6A#4S=VA?A@Hcw|n8z0q%mR{W5cw-7U!7euCbN&0ZM7DFBh z5LPyCQw5kJTt%2HQ+@+2^Gn(O&j%+#BO%KBhTrhf!=-z2fkto?>+1oB~&w>Kej=dunj_Nq+k@&-ff_-h6+bt{8~4E%5P7H0rEw?v(T8h z(jFbSID|B`8LN8S7|W;4(;Ukh6es4Y+896&?IqTEQD^_Y?b_Ch@3MSG4|Z#_Ue@UT zNrrJspo92FS1$jYQ1s=@l`pJpJlR zHf{_#;Dntl{w#j@oN+Ya@$Szr(*YHZk#Yy~rCWn<$z9~;A||5?8*$tG6vIz>@8|m* z3gd6ydorue_&8lCxE}1wWP{)1`o@3>n`Bt2g=&q~O)4I%C_RL`@bIRT)~#P}pZ7M% zE>-g4#8&TfwYY4-YXNwOY^-nwqcBsQa$_d)+-4WG%{xo9D>h(vy=6{oO|=uI)m3{c zI$?*|M4gu+s0H)fMkE~<_(BvsAYo)KV->d2TzWN6HmjdbJRh!ctzTcdm-Ow5o zh#oE4V1KLaV)VBq(yfJ)yKFt0+7uj{FHPD)?y9CMar%x&HBG;cUPI#K;3EQnx7MV1k@A6VP zgU?}6jOoVAa~UEo79{j9nmoCa~MV2h1z1#%{eAm@_jQf2Q0v-xx^C&1>pui6hUl%{N=xToScY zfvAm@T1K|UZ^bY6S5Dp1k68QlnfPv+gQdWm<~+4O0kN9jT++3}4)0vk7xo?$eL*5K zR^zJXV4FrO>h$>wBsnmMIU1QW}ZD*|vcQ&pdZw1UNu%b{=x+)vO9RBiDeI7L^)Hae*J^uRs zj}Sp+c(s0SPJ*a2+<*U(|FA05|I&3>Ul0SAfaLl5#&KW;xwYDqejQHN#Ou!?m*O@}cSRdd54t z#3?s%nko?o{Hp-P(%H|iR5pYU_T79-Fke4Rtmn)<3yLmgN4H_GdZ5oq0Vn{0H+gNnD)FzVC4b*Rt0 zPM27B-NWN~65Vf_`tyGcyLHPB->3-GI}>+`Suut$>$&~?4fOkqZ0dK>x^}$VuTn_m z*z|h@Q*8!nARb2--477W*Zcu_|6)Nu#gBNw9fT;0vD7la1CF2mlwMa1Z|f%!mjU>4 z!`uVaxo=Hv($2g>TA&S+Gh6fEs>rZj-mqV19w!x5V4{oy= zz}OztR9sX; znFYg)t%k}#lTDZDfY(DL1V3zy{u;<_9Q1`30$O-k{9xF1JK$!5@*$^z{R(G?@S%np z6=TDOBzqC5auFfJLDNNpnh*#E!l5af$ttgna(}e3TlMe*QE~n#n|<1K)siPhY^oIn z8xWh_Zr%#ZJ{x{?>`W2Nrk3;O%*@hY&f(m_zqS9~+ZUfx)+yK+7Rg*P1ixbE`E2*JT zn_s0(M`Z945eXW3d>)2JQ64ZP3xy%s=~MK=Fm;_$i>Y(N3UNYj{OJYnt0&v&C7HJEKS7&JdB!Apyk-zGqUuIS5jvF`<^ss{LaS)C0aJ?#h z%F$IMzU-dCHdNc5%xqlP2Y1JV)$struE{eL9}vo_+$@8~HAm#?#%I@-EpOz^A05>& z1ua-1!cP0oeRv%DZ*)PsvcmZ+y1%Z+2P}CVaEf;q+s-Ud6c6?l%4|gAW-+oM9Gdr^ zYWuEYdh?-;Dl3K0d7N6GbUABC(ThC^4r7OOT6Gyc!QVRSW_tor?YzX^ldV}S=vqT3 z?$nw^m{dm)F;T*F>nEY)B|}q$;Lm!6H9*sEpsEIx+hXa(W5%&NNxe+$y`7w3rC$OHRBYD1p7CgJv)bcvTMYkfjnh;r3B?_+$svO@ zg?M(!z3t>4Yb~UAiS^Ln==27JII`LaW6I709FPGyiGJpomU$oIMOI2&9}~03;X$wlBfIkm zvMpq9jZfBd&(1-b=v|ky2BVE1MSkb8-y?8oD59*nuT2Sa$c^E5AmDFqkf(e+k#u*0 z2qiLJ1KRMjarW)L_Fq897kjqn{#{Rf+S-QnM|Ke)4NDQ|`w`l}2}xo41(Y?I+5M8} z8~;jNr*e3N_fd(Bevme}f?)miv?k+zifo9BmHi3$fuMN^ zNI>pyOi~NlWaQIQvr&RTe=zI33z#?GYMXH8a)!jagBSB|mctnBmMF$#Qd%A@h+Mll z8Qy*6tagb@VFelof>a*2b{gPeb13*w(Q8Kbt)CwxKW-nc)R4?Fb~cnrVCDhJKq@v? z;i|TYFIGO!tdPNO7oCdS0hE_iTy#p}iFR&%O5=YiVWOKdspVqRQ=HhPq_&w9NqaW?yVPrc3b_wG{0bpC;^ab1<0 zY78(LD0;jq!*>b3Dlj{zCo?WA;wTI<^6z1u76|fO&k_>8WrAktl_^j`W`q-N0f*63 zr0X##R22aZx_-68yDRzXf|2z6xYHabEi~>VO^_yngau-dsV#q=Rf(D9ZDjE3OpEOC z4X^f88~m%Zw>bvO^5eoDxOE@>AZWPRR8tDdFm+}WkTbi3rIrf;;eXQg#B7i`vFML@W@~b1>SZR`=(H^KAe*a~ zYgu!3%T%Fxd?lKGv^j0z9FcQ%*|j;^yVZc2E$Y;V$p!&fLsTJ;^QdzOi@hl*1mtvQ zJkT!^zj!{Yk5#M0<&C?9OMxSo*<&k@{P=2z@HX8tt)XF5eYbhnOv|YY-I~w&Lj-bl zb#~|IMTSQZ(yW-aR3OsNQQY_Bfl{|RnSo|L7%$s{q?f&ArzyGR`tn9hmL(7FXQ^kV z4*PM(7zN;9Jw5|!&!WdIS1%y8%n0gj zp6QBrR&Q>kZ#OT`PV9kf$fq~C2nmFAlhV!E$NFLPzx5oH-t6JoS`GG~#WD|(xf;@) zsXsI*Pnp-8z>Vay>X%xyrWJJvmOR*#@7+gekVt5#EcE0u`Sp}%?w1<9h~#Z*gMeDx zY|TxJLpwGJFlV$7zdq?DP{mSVkT?N17Fo-)$?ZUVRud2;%so6 zo6e9ULsWXpy|ung)OW0P$~6+_PRt5{O&^ZBx!P}hyj5UC$bI{@)xj>bMb~$qTTf`Y z5N{KoA!a$&W_Yds6?w5zkMxLfX%?i_+;JQ?JYb(@n58b;B>`KE;@ZSh>%bt zXI~jcOvM&?>>mZzvTM7C9xEs1;%j2Bfvsw92{$)rxU7k&_8X<+=Nh4lG} z-(^JO=QC6gH5<7(Rl#l1#b)Z~(yxSwx$sJJ97; zzUc9heVcE&dZ);7NTW}C$|kbTemGwAUf}mKl~mk0P)jmPd+Yt@GbvI+E@a=C(wt&3 z^EQN0`b09#NO=6x>AM$QJV6|5-m&NC=B&MnSEUkq5WcAHI{@bLENo( zssy{TT4K&?Qp0q4vC#ertI_k9MT<@J3NsIDt32z!N4wB!H+?i&aTSNMASAIbf>Srj zSjL|wHR~GcG^L9{#nX4BbRyl0>C|26iW?aPd#Vjz?AB(_?BKHVnVqpRIUf07@_Ua# zCL8_M?tM5HKCBem*cPjrtwCGqK2y|#916-f2KNoR%(jNuZ5Qb&Mu~AGY##K-^=j`7 z7-Z@%y+v02xyG@8`Pdjl%W<4U%wqXZPE<2(OOu{Qak9`f%NPhg-i_Q zty(#eSRW%EE6U;w(u71fHq5(mzVqmfqlnws8MgPxx16)ybiezT15CoL88SW|OIMDD zS1<5exT-(f>=!PXLXbmuh5B|DX2giCe-{_jv8j|PXm7NoJvRCH>5ZKNMNY?9N%TDm z+h_sn7|4V+G2GDyEuV!e=9*pYQs#gdMIxu0RZ~-n*e&>`hN6qywrtRBQx36p_Hl5D z6Ni<2sbRuMa>3a*55OL`p8f6S{avGs)oTE?J%5BD0U9LIQRd^jJ zGh4^-_2PKV+CPhW?CLDJ`KUNXITHFi9%D43c^qTnBHO(PpfYQxTGi zj)3wBHf_4@>hFx>5h2&Lc`W0}J|e-bZl=2_H*n`A)PVUvhOn^j2l~kMx;+p>ipcp4}WDv7g z$X!IV*Z_%`pt?8ODA5~T4%-MxmG=r(j1|nx`ijyS(-YCgD?UB&#{co+{f$5zQF^E@%n^nZs1ZuF?<3<353vkfY&VQS+>Ni*Mi~;SwpYfSW~vGNxxNt zF=s`uroi~lG7q=xWwJzpCl@cB?}a=AXVo-tt#^fgWw=zH5`)QDw1+&;X$rvKCghX(A?2{Gcapui7o6Yk6nnqure>6H^OW`_eRsaWFB(Dn+KE_2IbMV_ zzjkz3{V|t%MuGcHi#?~eGG7@t1O24cx z_dW$@rf#cxhtX)_A%q3D9^GX?t{8E>^161(S9M(pVB~AE8nL8XWYi-4G$1Dxb(&*v z#B>W_MkvCF$+i{bBq>x=b(W{e#D<8kD#P_4Z@JzReQn55?lp6pV{{AMtAdrTdn}I{ zLD9ud`+LVT6QB3OY>D$6Qx_W*W12J7SaX*+$6Ta++NgD{@lzX@pr7~gyNZ%L0iS

B%@NJ>xM=^3 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

(8O#9BZRI_6!rK;oQ*!e2i*{zr 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

@!qCuZ|Xs&I&3;V*@VnNV`%J9btau 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 z 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

@!qCuZ|Xs&I&3;V*@VnNV`%J9btau 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 z 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�ol|wx{he_QAK~Yy%r&a!} z*!n4Q=!xI@sf4wW7g0eqgt^oU_4SzMKsRqX$NC!eMKLgTpQV#ozEWzwX%04pHe`4` zKju`KuOtPF6^SNz?zIABk2Be1*cWT z>ga80=|4bJ_11afM!`rvHas!yhkfEO)BF|(!kqc~+&h!Jxcfl!P$qU5YC_Vtq_?r;RH6Eel_M5K5!C6vH&ZSxEevV zPPvupvOMrv!JtWs=IS^cvLAWFqsV>!X%^`ZFm%ELZNDhuxOcfPbrvCDJS_06Gn%5` z8}&rc;-k(0m$~5ZCo87(U&imY9~ibHyr=xE@nVSMYnADWq z+T>Hk!h4^|Ue10?*?$N-;0IAWqp??+%Hina{nXG$$oIw&~u+Dg&zpWViZ(PX; zxbhObY&!PT@uJrNujXGX0O28g#03&&2`(JHzts;uBtK`{m|1M!Ct}G)==sj!GCs} zOW-z6d?G2SkS-RNm)viBeSZ!Zm`--6?;~RP_e~p36{UO|zY=V(j5QD1O>KzIwufWe zP;%v=G>^-LI(nJ=0))q**Z}*h$K&X5+aPa$>Y@ak>P*9&`Cam~n1~{H@muMs&TYvB z@3qzePXw1D;RNm$wgElkN#OkmiHr080dlDGrl+V4dof>nWTlB8xv7y#Q2_TA>Cp+qm1nm2Pm=*Z=3L8u;4T zPi1TN3+7kX@wZov7e38HFYmO^?$p+*A_JpuA!laNM=GpFu1Q@y$VN?Y{<;P*u2N9y z@lU8+T$RfW9&e>)%yeoZ(O&+n&Xat9d&#Gmmt6ZYlYMF==w&hTS4j>bA$-)(gAvS6 zH=CwTovxY$X%zy<&Gg&Yc*w(Th1T=W8K4>rr9d9mrdpetn^`+PBaw!mD=X)n@L;Lv zBJUHugyg~M!G%SzDfpFJ4L`AVuVNLJWsq>aYzl|@H2wj2nE?<=27oecR*uFjbVp}Bpj)QeLO1yg z&fe}cXYq*n1#o;41Pb`!?@tYXA;xFEDdnsL+BrE9B~^< zp;4>Ikfo$192Xe7RxX!5_fW76Sx9vwzv6NIZI8iKjj$ON9R#D#^ zuW>O5W#a90&raUJi}R5PlAGEYdE*kTpym0C%5dt7Ta(RlT1B?!3iNBudzB9p9+jC> zP$wi<4(C&;4QflUJ>B2RqDao)w}YMB_FrY6zopMf*Z~7K>ya~(0ylvf<0iEGB8^UE z`KLT4rn7U16NcNnF-O#M7?QgcMWni ziAFF-U3Nj>#RjqZtP?2J-z(JF#s>>RO~$^t{7o#cV8k+*f`6$RMby;POh#%;eEW7W9bGO%(WSphjR;0+M%kv$o!*@s|op{U&hP`WG@8YVFmE6JSpbZ zZ#!Fj&Tjn#e4>_WG3#Fs_V3?-tOTFn$;IV#7UCmiF~1-a3<1*o{xvx8{Yj2>`rn=u z^9=$}Y;t<3e9p(d#7wlwhpCC0)~r-N_`aSU{p-S2xrQ8N%YM64dHxq?{rgqIBEiQi zJ}OPv!cYMYa|6#n zuLG#iRwoHLjg%VJ386DPq}d%uS^hN5K4gpz$1cJ~3)~bbiK8AyJR*(Mly6>95R<(` zwFFuPrvCf){Ot|iNrS82wIy>QJhhZ^nEUn=l7@z2U4F}rIfMdiA3O!-Q)ZRf8dc15xPVY5|6JGQPLek;eI&Yid7)%^DjZB_C)nDT6(~Ow(Q%u!~S63Ex>K!yR z0<-UgCTeL;1zsv9a3MMUT6_#88o5a?VkjYup+qoD{7fqTBP0DO zN8UJ?6f#zo7DVmj@X~iEz`axSMHz*0ucLFoF+CAYqmut5i2wSAt9ancFEy)Ai=KV~ zJ*aA#;@3+ck?7H&dga)rZz36@XA0-YF(*R~GVYyP`XR4Rf8DrTJ*(y%s z-(+b4@C!NYW{_TG{)$N*O-o_n{3f?I^fI^r<65P~-(Eu+3v)MbeGx{X-}kvnh&k>T zlj-|s$JJ>F$A$x_e!0|8x{tQuP4Y=x5)cUqgoIeRCL$pZnjZaIC>uXtL9 zjyAiqQ?xv3Aj5_?`;!E-EYaJU>y%sGj^#7CLJKqQR`7+XrhA5vEdg1-DhP-bF-(El zJ=Hz`k1I9=0`KJDiaGsRr$&Q4fyfhNCCKh-l|YU1x{cOnyFi{764Z(UJ0-`VU}gB3yvWxR$+q!Y?I4pLP+ zXNv9lzD~kz1A1>_PP4SbenUtXoa~PakagAn^-G}TfOK%7rx(vSOJAj-2MZ2z*>|>< zhF~rlpdbr!C60E>!-CWo@IHV3%zX9gbnH}~_~)uB7BEE7uLw_YwzrR&>I?yi@voAJ zb_;zk5+IJ`Ab0OMt0lMk2(+mQ00iNrPE85dE2Gqm?EXuOQ-RZ8Ywfnj^&n7NDW&q= zD|C;OE=d_kNo*YX;Qw+V2q}r3)*n~d98uIHuJ=GWMQ-M>L>X|59ie+kf4{rtQ^NYo~UQQ)@V^2;^`CyVA0G>NsQ%+l>ElEtBc4sG}Wm%`ZZ3{Um zgM*JROVjKZ18n#1%z;SUKN*I95%Ikr#`aE$t#h7g$2AV5nKw!ww1@CrylC|_Y@n!! zC+&VbC6nh4OE*lyho<-W+^ehEtY(%r1#-RkPt|V2BMy#hM0tQa9{^ z7=%d_qPc=gqP|94V^LnweHkQOyGKkax{+|h_}aHv3DwYeerHBcm>8JPh-$8waL*r6 zN)UP1Z#A;uLS;(zEF7Nk_{bUX#P$6r)z1YX)1{IYTl5d(B_%rc+KB-KVhi#%cDm>S zyVzBM%Wa_yZS~d8#^sjWTm^d5hwNWWfS~o4Tcr(AXgDpOc!wK}ydndpAdYu*^8K8%n-$ z^{FFPoT@i!iyW$_OGT-GTY;soZ=%-s%6+(6*_ZDj0Vfbs%0Pgsg6 zf4f2rKl*?iN`LCHoLS|6*{%PpOzz(U_VucLw#&y8W#heb$@WvjdO8v6s+wikacs_D z4$>Yh^$O!qH$T{0EHoQVyKzk^?mRa)xA>&7P8&8pNitYa``LZy^2c&Lizgii_cYwP zgsgmtC|W=CusV(amz>x28}(8+VejPRNY9(G1@`5YbAAv&#w%iGp2wcT3m z`?jtD6~fKh@017qKn(t%P&dDvE2WjtCNu?bpxzHG;jZ+5cj=poNCzSPAY?EdOFdc1}w* zm=t>m6CmJtd*IYl0aE7T*`MPz{KFH|_|~&}QhUa=$(h)Gp$`=j>O;;mjR)L{( zLf@x`y@t*Ke1hVkd#(iH@L0i1-Q8Ru(If7<{qB5MP6+7QVg}pafn{eXFsKg!In1d> zpMCSFuE-%NqR~-Z+xu9yqn&i~Khhgh8>B%~p0v7d zH|uTv8RzM_$6z0LkL$Xt<0H5R@1cMl9`du=z(zsq2G|O)i2g)t zsK;AnRed};Xs3$Qwt1-ECzvGW$TvDRYK#2N;_%*l%KR5uy;}Bx?dmx8XpN&xg?9Z1 zshd>XdiQLLmQhUuZJLr6l^cSOgh{gCI>;&M#mRR-rcsYAj}qkjNFkzUw)Q`%zCT@J z;0Im6c!;l>)z28RC0P2-c}P6`lR>@b4w#m9_yfWG0>v=moUC8F_xYvZ$Jh3WRgOir zjdy^Zo-^X$JlN8)VFmpKF8o5P#RPmgIrTYvg@jF>YMBK%a*FC6`NC;AyL-F482vcN z?)_9So1+g?8CK8DBDK0}rjb9gw=MMuk(`7R`?_8qrmt1%n*PLh=B7q+%@Vh7MTNcw zHwtbbJyBSH+m~==Z9X%2a&}?QA@TN|JYi5fa{hqbPBy}4xKiT+UCggY%dunZEPw4I znZV;P7%!hc(@sUr~ z!OFBAdCl`u#0-8giK@j-(6{nRs=u&eK9_P>p{OPWr_*MlF4#AaGS#IN&USandOq_t zQZ-YlZMI%WXLz{6${&w-agjHW@>V!+QlnyPR(na6ehimE35{x+Em;tw;GIGSQF8%} zJb~C;zb`~o%#I6vu8F%dff`n}3mZ3TKS=7ieoGRTgToVrnN&TGwBh0kMV>whp?eQQ zl6Y?4SrzAXo8>O)zMK#O#dlgA@>wz1{66)K0*2|zBc$Yf#YrwNtjzK3aKy%f*Wt66 zMz3k6L-voIx?|@mg%PJ^HngP<@00vTN$Q(JkG*$k%Ov~G&92rRQqFWlH?B>wf4^sa zz6e$m;bx5Jn5ml2G-@_Us-Jg3jAuG?M_ylpsXJrek&)pA4a=OmpGhZMZF3#p*++wz z%0tl&F&u*a#!{3$?fO7GbJ zhFMOudQG1~&h1bdemvl2+>tjs&xkJ>&0|YN4}pH~9#T*r6)qXJs<5_vRDbShpf2AU z0OoMxU7&qa?VRcd%WuotO_4f$`}0eHcAUB;LJX_gqm4vC(2OEPztlYHu8tzgXd&A# z?#YE;jO654nhXv?HeX6!5O^5KPASLF`MqthZ*di*ayj-oEW@4HT(y}`!-4~}9z>fN z1N5lM#y~AH*|FtWH5j?ZH=4>&B+E5XQuop4@hTu8U6r!^W30-<7gREv-~(;fHY_CO zyp~5&0Sv6`@m9CNraB@=++itbiv6LHfnbJr(7P8Z=T=D=#OHarx(l=_U($d+AT%l| zzQ?QK4+#MsA@yL_xPBO)3CEL)y*v0H*p+u_)@R|p9vqrEX)+B9gJ5_zL}Gty!O5|J zPWT`N#r`niO;`MJ(>DXt-}Uyc1M;hF#m4(ift8|YOZ~!fy4}5FG5c%J4}Jx%kdr}$ zlJjw5mT_U#&WnC=f;o#vf)tqNh$*V8)Yp7?dv)im*)+&1%yCP+| zBcG>V`UIYvGoMpczSjqFAy3Nz&IPcR(9rIq~0(NH-tsB(Wtf%*hZ?Zc(`}*O^%Qr zzz!nlbdq^~{O~+6k!=1Grg@Iej0XF=Ws@%JREAqiqGAmaw$fhH-BAiQo!8YJ<$@V~ zCI$|@!5MzGvG}AkRdIY6o{La+WV0BtqDjuX7s40}R%l3eCyNvrbvBjX}F0YF;cVFwfod(Pqjb``QxAwMOz5>(S5IYH@Wb``Iyoc@>cR z__6$kpM$i^Tm`|#^jB4m=B$v>x1n?%ujzzY_i}l|n>%yf7v;QMT3QMc<11KWPcrjT z*WLp==1ktK&41W))wg1O8Wb3`DpG~2CZT!w59x;OF16=Rr zde%+#W`7Vu*Qijqt&V%l4cAt$tVh*o7U~nEyc&nNjWQvtNBc&9zz8T2jPuL7*;-aQvOeQ>19Iff0=9e~au} ze1T79m(p%^rn*Q|rSA|xG~X{&b;c-|=qq!3NRFhdSZ^*MjMZO=UV8<+Cd7{Lg!?5a z`SU_A5&C5-t-Kuf30t#Gk&gUz{gAQ)B8E2bjF9hMsDh77#Mf(guia(t=LX{p(@%ua=yHR`_R7FFuId6r|T< z>cC)=ELLioO2y_gl9inDYl>2Bpw0cMXhvQ;P0z;s2hcz#zq6-M`(oY6FW|-6&o2&$ z>GI{_)FD*T)H+;B#_a8zA5sVBL31AHoH1a_S_w_8K9Ys&*K+z(+9S2~=zM_NDN6^f zyLN6RBS|n~0dYIpD(69$V46xPFN7Xp(f4Ct(;KzQhR(a@7z7%%dovY6xo7w{8~52Z z_rL_ZaZ7u+tG+sviZQ$!$MVPj#z%HzjDuR);jczY1Y zOgK_kY88LHu2~+GCm>&jS{W?0S?vw`#Zj9$&+pj?x{WwT9vSuTu0KraP4Xj-$!V+C z?l*x)E9UGe^-k3t&FWx!Vl})?v4xJyv~v`^Z02oXG!o{Q11@s~f#&rT?RCnkA$_C^ zB49?I3uSfTVsDgZ*A$|P+~^`N?-Cos`XEw`f4KsGp=qeSh^1wGUjaCNxhh|D3%F>N%}(4w`<1 z7xYTWLtXsFyC1EM7TK}(xl~nFPR1B`A&%kk?A+HB=?k3#VYU0nzOSkvmzAQ=C}l)W zc}qy$PJx=&`F`Noa)c`icHG+NgKsCB6Um7dcp0= zghCKYp##&X$Umu)hR2u`ci+wCsng!jt5<%TEd3f0p$9yOkrACm;M)^|l+l-&&X`o) z;ENADUL}aWyrWJ<54>4zeK=!9xg#IB>@q1y`4(q-m|s|Sl2nqXTA zQLXEC|2jwVNTn(}Xcyg`f28^d@hN!$bq5P>pp6UDd=Pk>V?Cs)L*0B_ARRQs5~1RA zST0hFoTn4E;wyY_W!m`7Kn+UumKN&w#@Te?k3y4%-dJnB>W>;-w8NPX5DQN!uvC$i zi5ol%gm6ho$>=bf>9z2favwVQ@IDY^X$3olYC%&f4=g&;?49yTt|-l}gHDm7KaXDjT% zgLOuF=RC;ou2vk`>d}D01l>q76qBrnU~$=6DOhzYBXSjjW`puraAA ztVc0%I{#zN>8&xwx1o-V2c?kTaT#+C#?tJkZ8Yjrf0Aeh483%@%Kia~E z*Uvd_VZlpL-+U{7l{l0<1oIAe5jjzyw0lL8V~2iA06nU)M|~Bod!GZ}&3N|*n{smp z-qJ`toNrvfxIxE;vJrHdrxT)uzQsxC2#3=0V%a>Xt_&6PTFk1b^q4O(q2_m5>h&a} zfHkwp=Z4$>&B-N7U0V3{UFt=*SY8-IKN(ZXYw0deK<-&B=B|uAPIVR3t#;DOF+BDK z*@*@)qyMPVWZrc%P&+zC2J2VAzus5yHO2j&VI?k30UKx+in#yiK$`+46;22rNN*~2x8B?CMNO3JiPMWS zl0h}v$i|)lG4nj27Gw*u(Gvwp#DpD}j>{4bgXqadse{;}2-ad8pj8yvU5HJE$KnQC^qwk+gW}=qMAAsoYrUd|c=Gva__crh9WiTpLtK z!ax!&E3*ldK2%o6ySf+(3JM;R$c}~4?6$UDPt=!@DgOB7QJuT!=zBUw(+>C|3rl06 zQDLDI)$WX6tMknBR_V(7&W%mJ#pBvrmP6C`286>kU|~~BOPmvO$1Odna!(~Bxx}t1 zL|*`nP~NVDJ$svUMF7&L^EpD*qNWD2hV))mBvziD_@fEtIq=EBQ!%vwsm&9dbV!GL;YKOLsZ{q}=iyV9G^w zDWReq3`POfs87~BH@-37`&DXZ;&yLFk^%)vPAGmYl6k4HzFRu3FFTzUE$iN&N8@*q zA>gCzME_xqdZBk)bVJ#j==xQE6(;xOfgu2OoR5ZRZdVvgy7=jv7B<;yX^B)hEc<~W zhXu)n8K3Qm7~>s%|Mvq2<&-l1#J!8OLS|s!-4!qnWtg|1x!|+C$^E5%={tdGH>}uF z?(k`4I?lJmgbRb8UPK)H*!@G&V)*i{IN@G^=dnw>uy+@R=`zo+Gs}*zKiU!}kUYpo zv0}mT!1T@~09+#bSg1^JdYjJNtJwQ<;kuS^QIgO@`z z>m#+fqJk5@eYG4iuRp?eDAHM#)_?EjV*KS7+g{AxY`M3OpCPDp&B`7!S|PPHp}^&A z82?;mp#i``S>qb)W!=XrLW9&OU|rrQl^uOhOfVl=@gj#xW}uQbf9N;$EDYyZWm`aZ z>YJlk0Gf3Zdob<%j8U`PoIwi}=c7kW2qyW4SzgLpPb}A6RuQTG1$%jT?!(jkx^*wL zLlqM_hz}0=e*!!P;1BKDu&3grH>X!sI?lY9i4(G-mFVxm?!5q6?Cd=4)sudG8SPOa zTtnpPSA9$(2c{(p59lvge|40dN9xFt7L7Vwnpj`?bobqRYCf}9j81cCuetBVQ~bg` z8Bqt2?RWF2%1V2baYtWLlIX0X(<5&f3$`fEfoRB0)nNX7;sz;f zgqmC^a#~*1DxDQ3SguM|N*um^lOj{mBs4gj15)_@=w49JHFVyV6k7BqB=>M4Jb4SC z-Pk^E8eE8>;RsuriPG&K)R53f8FT{0HAKu!wY)r^+$au>yAzVN>9{Jf3)egoMK7Vc z69*`U!S2!!deM?a$64vsC2ju6q#Ku3I=Mv_`qdHfG8?XoRO+~{N4gY9p{Jew^=kk* zc^<)0qg(GOQR{^$dVHskPWb4Cw>i67?h{-#wyaxabyhhlI`}ZFR(ao5bM?Lt?_J&c zqw+Spr@yGph=qQmN&lruEt#i>AIdo7H_1s>Y1`XXVQijN0Bzg~uhoHvi*GGTyPGc6Kg##Y}m zL%BWZGvNu1n3d9lKgg?WI4AAZiS-nl{X!!f*3AXp8$tojwd06Vws}FpuJ1b4+HAaU zPniPM4#>|BZ!Vf`+&A`^^3K`W0u?kd>Z5I`5%i{TM#m6?xWo4(=a~^O9+(|gM}$e! zGau_+Q-;xl{C1ORlAv39Ben-Q_gYiKx&qSf`l)*h!~N!s60i2VGToY@=_!Dx$(@!B zA>+OTfQ4V`551)=p9JK6_!(xK_>~)@^9WnT$3F*EUU=PsX2~_ zUj;*W#h|j4H$iGQWw^-w(tg$Z}$e%_&G)T-K-mfMQ>Gu7YjyW9!eQzFwV`)+ErDm#!%2YL`*5Nqx# z)q(`E<=(n-ZFY^zuZ7hx`0z>(tK8LB6+fdqw%>MZs0+iBq@=7T>hhEBnjC&gG-co) zz|@$f$L5lxNu#Tm`4T_`Nj;$d*eaZ5U~o*A z>FBlSk~+Fm_Y%QDFGg?IT)XMo{nyI1^iNFZ&6>UrjOK)*4MsTh0LgZ;W}1~v+uTM4 z0X5MB(#>nw@JAM*SwX@7$J$#*McH@jB`7Uj(n>Ql zL#K2zGz{I{AwB$Vo>$)!@A;i`zH6Pe=8r)bXXd{5-k%-Ub!|o^kEcDWcn=i9jO@OX zte_3wadqZ}o>?|hh-#6? z$bfQkXFsy+rQ6@F>>_dfW!U%6xxV+OkzbOU%1q;D63+RHH|6q}UDH)R-Ed_-))5WZ z1W33$uxs-P&MHLDF-GLhUk77&fbLX#ZFyEsn9#l9L(}G0{ciQKQFkV=ioU*HWBwY= z`BN)*BOzrAp?v}n4VBg9_wNB>$;bKXrkp<6j#r;cD2l*x5~(%YspOH&wx>YCJCYsp z#U*F?lWN|UY( zIp`OJz&Frc=?MkUbl@Pp`#ltB?sxakf#FUjJ9t3*271_myy_h9(6lPaM5zt5sDc2m z0y|t3CAIwQ1}oRY7I~d+zes6RPCKPPkh}m^SCM+bPq%Qbs0PW(T~t zyw0>Jc(nBK_2m3`XawG5Qz!KYtHDeFoOT7Y%={ZrZAcaM>M^umy{L`)N*;3_+dek6 zASeqled47XAY71#As-M3@b68ya2%JeuB&!6=x{zytZf|7awuGr%Onh(oJGkxh@@>d zETCPv+k@wvz_h=bholgzCtf-V3;XMD+UUcYGf~&ODn-r_GJvM|61>Ut6*&iS_vYHh zMoGpTHuhPE!>dU@Gm!iB&IFx@E{l7Nym$dA9GLkD>q@W{l)`fI zMF39U`eNkhu80@C0$kbG7l}WDn&O|VKKSqtk(2RiU#A}daSo>w4Tp_JbyDIu`ih8e zIDcQLe-1DOM;{q`-`Kt2t+H|U%md%@_PB^u>A8Qn{71ePMtbN?!y zNyy+ObBI>8aZKobcCif*d94>s7Z6ALjVORq28{})QDdWT0BvpplBW*kEDl7Y+ctgsb=5#?c8ND*Dc< zL(&V@OvGaPo^JyHt(5b!yGJfel^aPgq=1Z6L0dc?1HpMlEWIA&nFL0}x2Dl#uX03S z;&*QQSE#t()HN3%y-fLLvKhIFo4r{@R0>HzCplfoZxcWtyh&={Aq$#V^xo7hkX}GQ zd^>ly*836wAYni7!$cCLa|i_l1d!7d;!l$;7gBxh1;I=hx6Lgjyt<`AB1C75dPSUp z@Uzd&B;UpQ6FBJ}-Au~^oy6}78G0u@o2e(97GviP?x(q`32;Q+2A9eBQJ^5D2UT(G z$mO2M1jwgxXSy95UPB7_Tl&uYRgp7jg-mgZI1~UBOaMw5)rEXS{K;Z^9r*h-Z{^1Y z9k5qWCNL3FPP#$Rp{QhW9~DI|yEFn;4sHSa*WFpsuK==zh#oF6_HQFodmvBUZYh!C z_l$8AeHNdj5^x!Kg-xsRbJUpWsK`g{9J&{21qkdOl7qQRJx*k5ndexB7QWWImr5?T zasLGX0abqFZ>9m8a&lY3fShqF<4tjQ$`fdwe0rPLRmn^DlM5)l&`4JTN{se;?>k@X zD>?^`Cab7J$|MTv{mtFa{fVX12!;D-iV8$h8E=|+y*pH{7bX=d%F(|RFw^SnuC8Xa zY~~YC@5?0*+cpEj3zxjH&Kk1aDfD$dOFy;klU{33M1x4Y2PpxD2| zlL^2Rbgwu_m$W)unRs|S7EV=C6uUD(HV4kphrJvni%|sBrR4RBC26`lR1mjb70sQg z!on7aPP5l*OCRmRhJ{9Z^1jXPv33=tEKm?C9;4_@5@?Y%HAngs0PB3G{bU+<2rf{* z+BRxDd0%98=%$*IQJTR|f|JQQtA&)FCqvDD!afeys=5~TjTpBdOl9jgJ*9n--we&) zbp%js-lrAy5zKN>qr#FjkCX748jc7e9?FTn#Eweyl7}YR3#!LEhp$f;4R)Zie-mi) z^P&r+?zngXrtXPr?0$y(4khNfE!WOs;dtfW4B8Fprl1}>p)r?dp)MLA?rGk-@9^uVNza)p*lkAk+Q4oHb?mAwNjU5|jYd-rAhvbuz z>YN4Rs>&q%=dBk8wfLCy5&QAIQT$I>%!cT@aYHSYt@kQ;O<}KeK^Cxlk6W7xa)mmXaDg#DC{okT`L{>~R>jL_j&f10B_tLv}xv5=|P4bT9 zXxp*c4{hXmU$5(i2Q`W z@a+$}`~l4LqDj#38E+vZ%u6Kg>gxj~2vFKd#yj_1`w0P8PB&?D0E>HOau?f!B8Ts9 z9$mU#w6O16ET^p;eh=qe7PZ#DqyLx=wDURPtfFlCrxJqjbO54h=UsnPsvYs@a#2l?0{Jd+M#d6lZtAZDa9^6tTI(4cX{n&sQ zhycfZ06?nK@Zo1vsedjVe=T@F!0j~sPDYFY2&Zf$AKxABaZqz0J7K z8eqOTJfA(+0)^Z(T`Y_VD3I`ZsCMCvZ5k7MY70*RZW@d==?ys1tV-+Z3^1ZCR5fvl zAut^r11idO%03=Nj`hI4i)j*{+mXh;gPU$N0&#m5R~>*EB%jV*fakc;Q&8xZCzaB* zaheHsu$?=jdf>Yd=ZZ}8HM7j$x-b0{au-(AGj|-@y*OMf&0sg$CNvjM`n5f;eQ4A) zN7(2%#W=sJ>1Q?}HE*R2u=TFc31}7k@Jkj!ugV;9r0ZkMvvrp*k5@G)r^w%r|7utZ zo0*J*<~v}Zqjw!GlN&y-k>JPuo0;i`=~rRWxAPct2TF8)#=}<7q5^d7i|(6M_s6mY zg`Mt8@@%%uM>3Pqj>}Ozz$0c=6r{DQJgU-be3XPN&s{$!qe~-h zZNZ6pJ)Up=XXroa@dF*pt>i8A%Rg|kOJxrj0(ztBP!w)|PJnsM$rFM;C2NH1Qb|ht7A6X)j(Ge}UW@ zo{bK^FiwQOF%aM5`X$1px8sG^$*z}UyV`RP~uZsh|f}w9%U^2&kCM~f?2Xh6i z7QU*eZ?N>xkkS3}@{o$2JnY5z`NiHS^D8UIm%hZzh_r^Dmy&Q+j@~hylfIXVfwNzN z80bvI!>_JWY$;wfj@82syjmY4DmDC)@JMqOoSfrg2kz#@OZQP(U_N^`{x@*-OV8}?$=xNBF_a`z5 z>_~r~=6-HNY)bk)#gFrjk!CYOmdhhkE+RJ3Lv*Q^vVL zE7&6(!%q1LnQ>icbZ5Y+p7=G+$yPwMnopoS5&I>X-P~|Y!qx3M^BM~D{lPZ+lMJ-R zx1bA~NnQF=V06SZd3PLS!gcbMyN2J}W7iaip2PR4(Mz}Ll8=D1+360BUpwNs>swp_ zh}4tCG2wo2VmZV038yc-(WK#T2JI2;18JU4!Q4~dMh~MkQs6Gz^#^=F zO+imFw*JbrcQnU?zdjK_E%%^_)ty_MXEU8wK0P-xsIk$_8UE4$zpQxg0cJYWY9bCPe?2#$Ng6DQVJ5$jz>pltEei_>=&z5(x6%1{PHfTt^eFk zo47`^CLPd;gG9`-Y*c@B*TT8hG^$O1T>elMRx9uQLkA1nj@R!Cv0FNqB`(k-RBiWx z{dkFf?>g;YL_5f+SE(43%5h(X2nggPQVn0uBBZy(e{i^RFggD=V$>xZ;0_Qqa@y?W z`d!Qh(?6R7jZuC^#uAN6yJnyIP>XNu-cNmQtQmB&>$6byd`2qj4qPu=?vG4@B0TtW z69E`>rtps-Av zDy+g(j0l;cu&))Ic{pwV@~pYIP+3d;Xz&|=^F%H@N(p|bbUhUSXcY4jJSDzhO1#C-7cv0>A?$#ZuuwOHdMDkrW ziRJnQuv#E+ak3=du|8LTpvq!W^np!U4*)ovCEU$N8eg-R4tz1{jxacmdAng+*E@}v z#^W-aK{Jt0t5qnSZb7S)|AJPPx^$BS>8Y^pec91Fs=4Ma|hppl0T5lPgo|?*;@1Vz3(f7(WKTvf`KAsjwb>i@caySzN31zm>99X=EOEv%V?+#|E;LlsvJm)3Y_0wozpZcop)hS1A?``&ziSFye zMS$52Q|(q)0C6(rC$0k2=#;vM@6z;3%h8MRufCn1D|Bg zb(RlI1s$&L@2JF)8G_nHz??U3+{-;zq;Bq<+n*f83(odd*D01ik`wnIQna_X=de^3 z#5i`T4%Na*3C)!`SC5iNuR3cm0rpP!Jke*OWvq@X=6wB0g{1dV0v--P5e~h5E1pX7 z6V;~7r^!Q^p&0#fwuSbT&Ad?+&e*pZmW}$a<@yZtY6ONF{`hXl1-hA`5bg7C^zSPU^-76eAb%V8hB|xVlR~?$pEqF&k{p_5; z>vlk5T)jx~5diT|M<>F#T9!z$E(n-@ntr-I81yhHI|i0-w8Ed{I$qTph^+O+qhhSx z=1Q+`O87<6-zb8<0SNxAL;%U<4`?>LF^fq3IKE{xU%d?#C#2IBbst5E6!xIgW)7Y2$POAu8Tl zUy`iui13PV4W#tqw*Er3(k?$>2TV0!x#0FC@hjn4tAPEN)_@LFM{({!9__PxKms+j zre^(Cm2?+48nL>#OA3{=kUkG0Suh>xfK_SYXmqt)U-Q`T9?XY5!!8uxm2L*+_d6P( zi6wv{e`@pH->Avse0)*2SY#YH&n-T0FiS)dw#JzB)8D*<=7%l=@*hGv2bTm5;5d$a-<1X`Mzz ze!AJ3haFxgWgGjq4uxJkppF9Z!1AkSmUtLvCx8dKjpn=oX|`-?A?tY{k;nraD)TPNnih=`Re|B^8~5@nj6IqRF6oulZq!` zBsMp&lcMZ3F;j_x#hIwNn-YCdv$aqj-000$lQx`r^$WqkkK={IE+=uCUN}H}9n`%9 zWC0XOwSfOSD`y$yA34LP_6PY9NASoQ?2i^e^7{g2IWTXb`DixHw-&ocD7e(Y_C^xB z)xa@p2s>GKc>)C|+W?v|L7_N(vuI=mXn-|<5N80aZ9iI$xGGo&(O}tOb6Z9hjo|%o zyt6HUYmkbil7J~&J%IvzDG^`=!TF{8>E4Omg!ZWkBF61>ga^ZLnI?;W z3+agNJOZ#2XnVgKunbbgD~gt%=tFMbdOWSsVxe^(EoI74Y1AqydT! zSdNvKWcnh%rRxDQCj*Tm##07=QbjcPpVw`mRz|RTj}t{nN*aua8AT>}m?lX5<_AS~ z4WF4!ulMp>gcw0tIP83(ZVbxd7+ZVOaxXTP-5dLLV?%cil9ra%`yyyw%1ceChB<=E zFMWHs`N>47K9d9jG%%&A>;=+coGP56;%$iF6%M8Yq{nr$M7Pr8+=8I>GH-@aknZ-^|`A{Thai%Qf|Vc=+_}J|R{?HWrqG#gdKZq*HcF_HS~8YbVe)zV_DYf4R#Zj;E%B1@5P&V7-nFC8cQgyD%I&ap?JBXzIa;Imuh5A_F;gl|G$Q^5u{*Vbg2A_)rl ziyFOeT(oZbnd%tb_yMSET8rI?j)c=0S_AsRio^WPc3%7|ZTzs0JbNc5zDL!ZC9{HxxdBfdZPZ= z`cawetV~XD#`=XX8oWVl^suEgi$S|4pO^9B_5bmK`1vmcD56mY=G$kV{(5-KsXTtc zyQp&ejSxYQ6yxQmB`yqG^n|CsUsppKrH=r`sIid)_F;fSf6W6+CCm3n_jXo<1xhre zUQ(Icv@Uv|qQwI!bX-O)*$m%fM0d}d;gcMJsI06fX}r#%3%>Uv+&(L{QdWS3Twllt zt((nkE?U!dUq5(o7%y-PKp_tNiov`vWKvLg`vo`pyf~()K`NH=b*LqT%&o+E(fe#G zE0Xq6eC?UEl{o&;V{1%$5^lFBAC2k(>gM8xj0}>ALY2fFj(i0G3L;&}17Ahnu~9hE zDHj&oS!ha0HoCh$XBW1hc`y1i1{$%XdA%s*#e_~EuD7t@v^UMnj~ZtDDrLOIR-aZc zQ#8=ia7@E@YwALiRwl&F7QVD{=U#Zp+;Wi@lq8xH! z2JAIZ4okch9LrVUC;lm&%i5{n!#|D98&LuPe#L;RBFB<#F^s&}MU%30uNk! zK{=ilq+x}l04(dWT;qtYe9_D7cqk~obinGgCcxMkQG&D8cXG(c#~TjB z`)AZVB$kgE4V(emT?LifFX}xZCUlbANs5x6mOk(#^oqi=+SgNs>WNzKZEYfwbX!mN zyQp5e?#=*j1{S61?LFI{b9XwJ({$uhdt(duHy-lyOrg(D^N;tDi^8iUpR~Uor@hr} z7q0Vl*?&LfTKM(Zxt{kq&cpyMesxzos1-87cAIrfqGD+1&(+kbi&EroMxM@NK!B|p z_Y~bteh}DiiZat+o54l$@BG>%ogG6!7T9i~rXnsTeuAWCs^lbFIf&KR*myOIavdEM z6hvF&V=0(6Q`=# znE1b4eGLb2_09OSpWHx@Kf!zjz)>=$~n>%+Ro-E&z`-T1=Q0=30=zN<>c7 zes0@Afaczue<&^kc;|UJXpB-0M5yd`dx<<#YyTubLg&W^To2d1X(cW_@rtl@?D@{o zbRYs~rG>9^WySr&26oF(Mlv%qKaO?DVcVah;Gm&oZqRqRI6A8I4<99?_FL!{_~2cAZ9b+J^+JkwS6> zra6O)xq_-CI__Y-Cj6@-4r21EY^B|@@VY7k zS?Olb^EVf50pU9-2QBbxI_sMoTTpuRk|u3uQ@zxxcI>ff{DlSn@fs-W+WNltDTNN1@EL5;OC~yc3goSa$(u;6 z=MPX_i&N|N8FiQ{f$y^=4+9j5)A7r`Y1R6&ERSi|XPH$~jz5G{LA7Vb6mAL4C*er* zR|Jn(ZoH}YZRUb=18&h?KJ+9cSSL!gBWG%CCD0=xOf|2+2B%FOA9gTk+qis^U&Q^d zTsG{%Wi16T(f+us)Pu|RTDN9Cxa?mKF8h=61M+W|wF^Rkhx=~=9lz1;Re|g;9ilsP zSI8-)N%w#RSpl#X)G1*8RfEf}0eSN6PCrwDLr&qz@LbOs+7`nz7nM{pvS5fkcrR2e8jO<=<)Ey%R)E=uA5XfN0W1 z?(jDElwV1FXNOafp?FO4z>rr3eQ>hcJHuNoq@>6s25-5n_N9KkQ;074#lqV2wC1MZ zNFWszed|VysUG&1%;e3*ul-8*Q(TvPd6ou1B3Bs+*F2s{KV1hV$IbRuY$6~iXpCg{ zJ{zbTldVnWCNZj%{Y!yzAZdN_YX_yxOu=mi>L!z-vI9%FxA|9#lbgfckNrURburT& z)nal_Xg!&YxtE&@6FjagW>)=d4I_6f9LqOLVx*h-j+uO z1DV3#1;NSt2irUQ^}!yny^AQoOfO#W=RW=Y=d%<`pw-tWMKj?69P;42tOgRUdJh!` zE6yCsuDOkmuEVLD&cA4T$z~9wBcvTgzGBQuVG=BoO3O8W7J@8xjfig{+hVO#B7Qly=S&Uey74)%fHUOAnN)5JqV z`hnBmG4$0etTRCLQ|dtG=A1kkHQw@UIDt|fA1EUH@ZbQbj6NB==tqPMUPD8QDsZSk zm=`iyO&)B(ayyxI`$rGOP@|xr&(rJE#b*Zra}!Y8E3Q|VmT}zRK;XK)2aUjl zha(X0kB3-HmB=YYN58)dW1?YZUS53lbn@?d?|1C^k7b1>8IV~fy!-LDY5sk-xjcMg zB9ARp;L~S3B%&Fvc;){{MAtYT`^f2$LoN7vT9q8#hUktvgZ4AaChn$}>OOE2v)haZ z&s3VX3qwVd;a7OrI5`TmO;$iAh`_OUKfT_gELIwfW8>yn2$mShn80_?@qZRt4P>ld2uu zVe2l-SXxSsQhKA*TRt><{EMA*lYO!>8HQq?v&%qiy^cI^6tR4G{_iS{dxyuspd>Ce zuEVz`_qLzB^+f1jF7v-#ep1f|8z&Yx`yDnOz36%D*YMWO<-}H6zO|`mgkhM>A_0*$ zgnCg^ct8`AmOxo+zeMV54zTxEtx5F>rj#X{mM^IN^H%YoJWIr{54be^9-bxbw@ZATB^daa~rUWDY33}9i zI(WRN>aTc^E-3R1iIP51%DWhcmxDAcXj4I`(d=|@9krMRa<>yTYw0m&e5;7BA$}UM z?<^h7$#W)xIq^?F3k>NemvQZjvG&3F4)sq0CgQM9h)A~P?8iSZ!7gDTJiib62cP+$ z9>zecW%DcS`_n%i8q%O=Yt>7zIx7+f({e`?OKPHcNmvx=sjdl{nMsq*{8=L?q+l}~ zUnH64RkrNg@{g18!v*GOAifPG-&6s2p09YH4{2`>eeYwKDz>i9IIc1LQk#U1QX#y| ze`<#R@k4zQgi`>%51&&PMf`23?xBJz+Fl$(pZf?+<^%xBT>v&TO zVL9FJ1^D02bv|OTfEdxElH#;hEX)JAKUSPM(q;?Ry&p+*6PHmfYy#_#=C{0_Ge|Nt20T*`*W% z(9DmB5>$`j*9I|9a?|ir1>`t0@D^Jhd}f+0^@3K@^M~UWN~a>9p*^kx{Nt=xh7qK{K{{rfnaSev;W$5LJd_SXaYv~c9WRYV0}<0INT%+k z3A2k=VY*QA(1DaPO0H{zHFLuQuEsR{0UPx3xyQorm86++dClY#G55x82=nVJKq2P8 z@z#I;E7FXIXqaL9uI+a;1kOFu8lYJKcx}O@5n(2%xhNzVO|F8*ZsY4#Mz}+cSAtp7 zoY0pcWtx&94{}H`HmYRvM?S0$XCEA~Vww)@N$`!#hGu%i7@lM6u2R#<5+Zaa#+IM6j_P?*`(l2BL zM4YBO`K?F)Rg72sj{GG+mv;D=-0gROs!ar}wK?&OndA3&#(wel%`avRAw>-evHs#Vr%U(ymwED0Yw2IafI0kIRQB5g8opdSXTx~^ zg?XS*0%;)XMl-p^KhluKhdi;d976-~kHuR4{h=-2h4sKbJ6EE|wJ9q}v1~fqHe_KA zn<1w7@m$M%qW zpZ_A`{B0^d1PBf?M>_evkAW^zX8}b&z4FFA*!bK&;qeGU*a9pHd6C`(G(RBIZn1E- zzYFSt_4>ucs1)qydxLF8W+$kJyF0C@k}x&{hl@ao8g8kMr~S3bM_LXZ>3Fum8Q~3T zbnAqe8_@DQjwIBN@}V4;ct@v+!pGX4ACbs{N`N%rh2(P}E&Y?3{0~o}N+0sS(i*(h zKaI!*(kN|zvzlDg_*xLc0GX+LbVIJ`q*#&;HR4_j{fem+yL?YzRQxX5>&kJSGL_1f z8q`6z9Fzu5Jhi*Y!$$EZ-6T2YS#(M%fj-~?4@{vm5vGG2)a7Ha2Ej4=#-=mwv2%RR zD4R>TytJXdt|n?J4@f_wTpHRYzjm-8$ziBM&B&-JmN0fK^Fl9u=>1_hSd}~fMbo|R zGX_1pT$OP$TeaE5dOmDPkUw8fXUNv-A#_9`g*;#VCi8u@ggG}RzJx-Hcd+4#vQ0|M zK$Oz$%$^t9k#xdo&5W-thFS8BDI2ZscsTzh`xjg|W^N!B-tO5A6Al+&3v(`KbVD6C zOHG?c@o?FWgWI zGlP-Cfdj@NrkmJmnVI^-iQ8lChHccIBmx8|S373b|9n*cNif!IAG!*McVbSz?_3ns zv$f={+ zm$-qW3%2-W(;5W5`K$*_asp!g96D-|lgtnn-@2@UXOq#(7*3a_FdGj#G(mD?J_5^XHYr~!ENvX{0xrlAZZWgzFd|A_<5JG+RV5Ncb1VSk^cc=RUrNs=^&ZATH_eIvZi5>~L zW<0oWsU(tU7;@}11d3W@@6((Ev9QFN)A;AP;o5_?sW`hm+pBW-^wz~@%RdV~nz}~G z6yJP5h8AB{oi8+87N2%o?}Pa^{_h+-7!gWV7q|8kJgTa;k8db9+i;v+Ghx%ms>Zbi zhSM*uwQ5bAW|ekXv>7!e)q6LcJPyxrO@Jq9W_0XN>ftl5BNUqk85KTPO}Uypt+Cuw zP?1o3AGCi1SDLB3NX9x2EmN(-+pTI*D3LRn&T*U2$9#VRc?mv~U$vd;iOh`{-MGU* zO~xo2D`V;0NRmOQA5B&`$P%W%g?mi6UmL@@tPu%^w7vV4ORI%;+__Lor}i7=34ZBh zeVaD+*oS@CnXjg9z@bu^Rq~{{)xxS_b&-DgL`DKue0E#+Gj;J}G{28Ix!Sb2{_FnW z7G3gQK;RJnAI!(aY7N%-aZYkl+(hTUJv7t4P8&H^3$*C z;L*<)?v8R@QV5-VaL;dstFi8c#ih>oRb)5EvqP3e?bH(+aa2+@?JaJYrc`FFoqo_Z zM1EBBJ!AUMEzGg|^KLN-Gs$Z{Jg1Ah!0l^a)^x%6*9qvqPlW#C^8-d8Fds774*W?u z5Mv%vj`@yd7&vGAw0Z?ptk`QkSS>EHfQ~z4F{-L;(@92&`@{CSa{mMNxzEiD?{~Gl zd?PIHyxBTCauoXw8n!J|V;s)pUP4W+eF_!TpSC!$MH9Q5ljydz8X6F{wd&+Ox#OU~D&Su+9}DHFzx8&0y{ zwwqU*JUtj1l}1PQuQ-S)2-116;*Zc%IV(VR5RI(w`IZ{ z_Udx8SpDN=_G;#`syACJm6Au08LL`T(#tUA!o>6Mp*eHgZXfAG`t7AFaI1pF!Y}FK z8D*^rE=PlHa>k!C`Pzq~r+&>n>JfD@kyrhJfahu!WQK%NhYigNUI#23HxzLf2vHT$|j<9>$ku-UY4AgY;?cpEKu%Uq)q92d?-=}YaO9#NH_3GfH%j)-Wt4NBxmatU!f`?bTGc?os zy=c6aJkD0VY>D#+sjOl~Rm<-jKBo`iv*e?eX8qhY>hbugFA_~mXOeC*lJX!5F}6Kl zbOPk%p%iYnsTtfQ{LXx*Cv@AC!o&PpN~`(J9DO2}j}hJuOJMt{8I@dJUP>Xk_q#H} zs-i;~y#smE41)6Bvu=T@t@u)TC9lU}c3kmBZ%&!$OR5s#hEvOCi#$bNYJxV{RPDWw zbe|1gZs&GcbpcMKK$)!9q+u|0j4)(6w{K3R$PhAZ7Q z(vDYjdzJaAvkB%|(C0oCnTUN#7kYl5b(!$AqeSvE+OWi%3b(71a|+!0pwl`U@gi1^ zvDdh&k?=i)eLkP|uf8isC*#}jzb0~zf9g5~bat7pG&}IlvK^~uo~&-JeB5o_HK(sN z2&->?pX+H3wlGNi7AJjA*z^P8A`xai%XweQ+rF|B(W$YQCOL~Cri4U1CCQ*SEn-PI zClN4D*gI`$P^^c+_Y;R?GTXugb*%H5%aM=Ig`AlIdj_J^2^_iM;%QvYiF(3GwK7;zhw_}NZ&usw`G%>M^dBh7f2>Sx%{w>|zxN5rpDl++aws+CP9 z?7Zf?W<#k)6&kD*Gxz+?@Va4K2FB}RgFCf6Fq%Uba@Ok)sdSkIg&HMlzvlR)8!4ud zoOU(KX4ra4Eq6q}GUJ*-S16jhvNCJF=TrZJ*tYA}Z1xPc&Oo@@9gYyWCLwKaG*!ll zp%~V(llXRGOX+Z#6cu%RKz`@+ohw6_-n{0Sg&cB7L8Z+m2%rDBmc}9e`k@3F0O6Up zq2joq3phAR?czbbzZ`vvj2KC{n=;4d5y#lp@t^lr$(PR{vT!q3D$JxB^n}pzi07Sy z;;+RBQ;-xm<#*kEV3FMMO&@{Urby1}WTkO#wI#@WYJ{5BC(JF-o_A=^#_OYv2wN8t zA=D~DVsgDldYy(zTBpX8icC+c^c)#T{*37(64^HysT6NUJZb#IHb!OU()0~}RAvv- zx8eHLaMH`fxK(A>;SiXq_H`83ieI($Y4YCrY^QDg#iMy~yZC1CO%kg9u1erkUY!(y z^%~;FWDCdZ%CHi#*DIDtv?_DqX}OjKHmAO*S@%Pn?ToYZxE#|o z$2V{FaQefO<~s~<@{Pv6!uE}YTrTd3$yVwDL8xpnb~ImwP_WjgiV`(sT8T2O~v{M-(iO=aS=(o|s?E5oc? z(!vd;sB_)e)$IF|Ec1E*q@IYOcsj%XzFvZcZG+uq%X=fOonC%oEwx3PFkPa&9U?k< zKeBRmGL{3n5y>;!YJot9;jtsqI@bcYHEL*#MLYbdo(ZO9Jf)bvL0ymDn;0X4rq-*T zR9=Wy4t>#B+YtvSJF0BFX*;OgR9^CBvVoAvfIRAor~D_-6!!1Nv+W#BaZx80wjU zc*WEnM%~AKxG=F6sBd-;MqKC6piifCo1E5NX)d5&VH_f}37A7~7efFe<<1 z48WTTG zYxcD;=JR`u3r5)4?vYp=f8jD`W^hfe|p&?*9xKhV$7F4 zDv%pO!p4>TbU{d6NNYW2BSB+4+|!ifdt1O>14hdJzOkBB=y&F^X>+dgp-pvkC^_4Y zl4t1{K^@fH+fPBf6JJRNQGdLqV~Z}Jaa$UP5x~2VE1e;NMe9`1|oRLszT}&h1fQtlgBj|x&*U3uL{)>^S*BPoUlfK zs=>+hh-uNG(npP-FS>-PbWd!Y*$yxE@NYN1j?LgZ!Aa0)6w;EPDiSul5qRf>*9qZq z!of91I-McUiZ$Q$+r0)WYkKWUrsPiL{$-0d<3$>CUG{43TMJ)LzV zPsz6%UlJZorU@hOjQOa|q7Cm=U^N3<$$^}HWT96qr26NJiz5<_fU#6IJepft9>#vM zT9rW*UgFb)_wM%8a(BzT>gKC;723aIY6|HLj>{qCz`5=XP6HkBUd9?#+H`~1TEJ^z ztdQw5cU{vh*_2

i)*|A_-~t(W}Kn!s}yrtNHuEP2ezw2FUxc&O@w7`-4pPQXbX@ z6+AG>VU$`rMoy7%7MsmPJli&molqJ{bYcbXm$KNNGsmIHtA zaEJ+lCCKS1jE2^R$!DHvXni~6Spr5zL~e{wz{iQpgh6CsHi?Ah4k24EAQQLDgH6y;0QJ=RTaqPjZ`n0Ng zvxMG<*@`ebg|{t?!-toNu=LRmir>ozMMn__Xms-dj8u zX8t2xkqMg}j34yM{7{@ZMTO=))46TGzpfP^f^QMj-w?!mVIYU)@gEYKE<5|v?!$7Q z-Ie-k#^agojU}#BE@zY52G=qtqKu~YTKKmav~zCzLh7O*A%pRG4m8o+60h}iIi+I-y>h>>zOTx2znbo>O_bkN zd?iN{nt|yHWfwA~kL65Yr3b4?vHN3&@8~5RSlP{~pp>>|PaYVRwDD5j(nl(f1 zw~vKe;9zEXOP)?E1r<X*KBf~1)R0+YlWz1r@s;)R zo`kK=Jn4~BUFm$o&I9SkJiL&lIuYj3VA*WSC$0tD5h(coj%{WP6G2=rY%c~{NJ4D8Q7HQvcO|Ld`Pjf(6bYACeF_0OTRJ+7++ABmS(a^p35`U6dij?P6{nq27l)L~Hz5Dd4`W z-O<&>jeX+6JS@d!*p@9MTAW-4Q(#*slyf( zF8naoUt`v6(MJ*O9MjQB>bV*PLIwGybny%a;@TLZqtj4@k$@vNl_=|H>8#26gdK%( z_IYxiu&Rf

+|wcOtH{%nx$i0i=c^q_`&G=C~yX2M%X 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

4X=?7u;c2E@~~=9u9R&f8B0pd#c3HFV>jG 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

J0sUs{|2%fx}8aZj2~YZ)|@4DcV|_RU9ZM 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

@!qCuZ|Xs&I&3;V*@VnNV`%J9btau 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 z zQ$`?@DfzRpft>QwgOBb7+a~0clC)y8{?`mZCPR3qf1(d1>aJM-Jo(mVY4Y(70gT}X z8T#jEm>}>4HGUvMxQfH=#+=K^?s#SW^#g0(y8@xyQs{}q^+3;x}Xn%876nU&Av>QYEAHLZ!8B~S6p8vYb$iX z``Df+tz~2_JJhV;$1zW`FPfUy#ArPOzt7a_;P|q!j5N-5@N74B{c@9R*kb6=mx`HW z2(mlO&vRhq@?b*v?q(zU(P|t7|E(9bc^&hzcVO9u9t@&5m5GT+z>By5VfWFl&qRus z?xQSvjn9`_P2bFIG@-VB59B;J2WjRL*b8oGOU*~=53Q9pl|4D?b_uv1d;d&lm_ojZ z1*o;Gf4mw5Aw6fS4;LzPzH}f*0AK$2^m+7`HahnrhY$fwxk0L82oJu(Wss-TL;%MM zo`HM`W8bB6m={;e?u~NPmCZeKhgR@8tiD|~&-Rh(hzl82x-TZCZ-=Kk@jw*~i@!?4 zT5(J}G9d25=yee9eUwi6-sb(S%N2y(RMFKpV@gb!S%Ly5elPo-iOE>6-d+>JN_vq8 z+lbZP(MDAAcluNtzT4+-QyMuq_N9l|$*SZIqsY5gW&NS>^C-|4gRa+S`|K|agbL5a z{d#rY@iVM;B54-XbOPug-?E{6W$ufALl`gZ@0Dv3gZg?JHH!itm3Z79s{FOop3PUf z?;gI5h~rG($kz^`I{Ka^QKZfw>q;t{xK}7OkT>O^Qt>9rTG(AIQd)WsO(R}aDKhTE zl_HlczlqLSM%)Bb&nFS>&2#lW370PgD}=Q^tr8WaI`*qbmMHL#fQFfq2d=@WS$&1} z&FJrFz}A5uICS%{NM>1vL=9ah1!AVeK*Xz1>T<(ELKf?Lm4L(}4dqtekGrZco0N@c> zx($s;S)8BF?6E_8iM5842GH08nCq7rxj#V!;4J`w^qGT-$q(0 z&_JwD5HUl3d6+@?Mqd1<3+`nc3gBnE8t?hW_;~kGaVytJMrMk}OVZ*lr|pwkY=#h) z&Ei!cRP&vC0-0H>N}}-PHP4cUY2hkiU=fgakeY0tvK(pP|3#1_>Sx>uA;y0krb&Ct z;GBhrKU4h{Qtx#pak#bCpOdf&gD;RQ)DShd7gN-T8!5^ndWsd6 zMaN}cVwWc6HK95Q~F>gX<-rK{jbQ;dZe2RjShz7n$M# z_YwfvLFhz0{D4b2TOFMNMc|?x4#}=MWK8u6d^%`9j3MEg;@vf?}dC2fQUiV z53~WZHuMGp)@Hrv?@$yeK3vVOHsrT*0vSEKR$ix$h>t_dD>#L}ebf(-|26;wQWsHK z8a8n^XnGD|$+fZC@Irhd+f>j>EChQKHztU13-6^GLib%J2i<+ZaP$ihzE<>(d0))x#)I ztNWA5p3C!|wgES^)`YH zT$_I8j^lPwxT%23PaSJ^$yze+dfwi>bW3Z@1c_x@#Og?Q?(O4YfyziNgS;;_^&TXfB ze#33j6&n5eSx_pzJZy3ilY5~esp$$74)zI6s0gfNrEizXbZeG1V?QT zlsHi+;nM3jgLLgX5VkMd+<&YKsP;9wKn6iG1{|jYHkw;NV!qsmP=djA;rIOyNNIXR zU_C+}Ab>r#WGcyiNipF4GOfr-)B{p_@jdv`)<7I%m=OS+dS-k*Q#3nbp zF`3kf88J|T;JuKuZ~eO5(nM&PEjTjdUhcF#9KUijj#d;^AII=ZHEf2z5!3n}Ljehx zH#8W`A*8YE?yqsGt$v>$xkKYZrC-j11Av|D%oW{d70{Sb%JXFRb+;Hc_q`>qRsa}4W*Siucuxj_2GCU%fy1dkY5Sgp3~=bxixaR#>%WR#KXSI5fr&yp&BP${7JnwX?mP>k7hdgRu9FQmZcFzuZM@C-0CW9xQUZ>7F-sTR7 zKuyu`UVpojN&R9v?D-lSx;__3z<7ZfefE!eaBn1t_|gCY8ef4or5wMFhD{9EOH~7_ z6%tddE?vM;|AL2JA)PCUW3o0cs?p$42XPGv`bF-^><{Cr{cM{+%k?`zc#u5Jl#Ksr zb8Irg2pBJYA8LkZpnhA(GU8?=cm6QJ*n~D}ejf-l*Jr?AgEI5iLEa7;TH3%q@o?O3 z-Dhw`8tTgCs(f=$12w%1WQlhZEbDC;L@{Lps%H23Yi5Kb1f~0;ubMi;fcj%5jdFXN zfm=zC{fTOyU32B_W`dH*T$L$IQsc$?+mEJ0?{SHVnSiDjlgSG)tQKQAqE}V?Qa~`w z#w@=*ilG0#OhM|w2tgan zl%H~|maN)IXJcI>m{Mpw)o?iFmtoCmPe18`V zZhsg&uFJzqoZ*vyQaVLoQ)yPGXR^GH2BetY4V1Dc4ewgT7PV@OTz;9E@eJlqWn|lz zXkd0%Z1P-``yGFqd(qD5ovGCHUN_I`tsM@gTbxUK`=~>0b)=;qd^T!#wH}Ad7Yes@ zyVXLyp@gj`nvAM)bF}WgYHjC>KJ^lPpD2*Bf)E{pt>l1{Jeql@7 zSMpZbOxlAzi72-^j`=recVEwt0Tc9{$MNHAs`=bh#hAOqv zSE86C0`x$J<+JYRv(EqJ>H7`fW5|WG%vUtGSl*RB`+a8blW8A>sEop+W;um&$o)cD z>eqz#R(XBArteC$wvfj(s&eExC^heMHc{|`aH6G$V8I)doXNA?{BCB+1HM-wCZRcz zy>4m!t+9|;gx$nPXev3zvVOC1i3AvG4hz zqGNy%G2EYL_~W(s?Y0N)Or9tAyTS4{^}ySk?vU912! zxcJ{xZ0Wk}v6HD%`$nDG0tzs+TNGAxpWCa`XgGg->1($=u`=!2d>~8SY$Aotcr%C3 zm+kM29+JVP?8Dq5ApVz)`n%N>0nOs80Op3{dUr&#D&=(WAEDq6UlsB|O_7&?-hGsJ z`f0>3MF@;nsbYLh*xYGWaqUr-W|rRRiQ?w%CMpO9<$Aa zz#S27fSJ7WI%tr_#l7{?X~cJaf3(n+GnLnC z#K1t}u1acn|44EnJ2c6~FhT4UPy|hz4_Fgg zV1NAh;dpcLqgn68bj-hOiTs1cybP>|0y_du?`3{jP&vpF7mJycF?Ce0uOmVmll3sp z?ao+0u4X1|^+Q-?9wf8AgI zcHtQFV0of_>JkX(^J>z|QT>Xl0j~kN)DK!zN09(dki{!U^Glkrz?VMK5+)5ZH;1F? z^*uLN(y_*^<~8iW8?PpMUcB@vdrq&lkngp@M_~QGBq;K|xMyq|!%;04FxCJ?F~AR{ zWVQO;L2*e*p8>cHN#`qm2AJeR)?cQ|^>pTIt#($pf&O-h2>15KuVXBdOYQFq*A2!N zQoYgL#S|u%|9_EIoH#s%W3O=YMnE;kzwm*Fn6TK-w-kW@p&O`L?f0>wSG!Ni^aa_q zoN5GE5Wc=V+ByRKyGYTqpOmRBr;3wsc%RVH4gk~>#q>NQ7Y8VvqySLyl5Vfhkrcqu z|4{AUh5rA)0BQ^Y9+OGw^!Ft9SO1)W#V8--X~Wlo^x;vU<@CVSDI`dGvJ4>01i&3D z2lSM=b+|u?L+_ul0}3s*=h^pF*gwniZ#?clzYWd=ROi>ygXq7|bAa7H!h}K1>T-KZ z;m!<5s_vei0YJ+fer~xol*#)`_4-!={~xYJ-T;rH7>!>4w;to+1K@E9{Db=G{)b!t z+ngUd-rsqI=Rfi%wi~Db6r2S5c+c_u2bTDkTL0}Lpi>06v(r9t?yq5A15A{;CM*l% z_u&6_$A5lH&w76+YuG!C-=KpqxH2#93t{9zA^)8Be>+zH>Fp5#u=vL_Ka6bt?gzUB zFc|upk;(t@83E-k2$KYo|wyUYLU;>U^D;sEEQzQ0=c&pZN1C;)bh zDPo56f2aAf`nNDnSZzB?|1*hMLR&B=G+*}{}4axJqcIB4Q~Hm*Z-l| z{hggbqjbLq6Ir7KR)39m+M412xMCurw7{LBf>qW8f9~|h%~?$?g!%LKza70U=UUM} zSOEWN=9_M?4fO7u8)3+T@l!jx9uw>P*#j`jSpsP zZ+LXlKfo93*&D~a@9X^i3puPfvsD)xos+tCNq;Ez@1Xzvf+F_*ti+OHYy8nfQK|0d zyskXrWs|qc`<)bTI{fE2IjcZ=O2aCNT;0E@Yyau7{u?DyWZ(ZzHfg1|wjMyEUjvM5 zf6?d>!adFQyf&i!pJ_Iy9oYPab~0_QKMVX*0vwNirtjy>U2UKs*Q@)5JVQ}`e?}Li z{kQ%S^nW6TIFU8Fd-4>5S_}TBs!e2IPEPPnxh%nfJ7RvQ*uSU@P_uz&AYNm)`omZL zGpnTtaK4`bGnLdovXT)PwOTgrtN8tKpig}KXT{m20k%2pVEkW=y1)1Rmy3X(NkRf7 zssE@IL;!wW{@vm0n^ug z73)1(mmav2u{HAL*QluXTp4ZVhndy?yj>I(_j_JJiZlJ^Nl_{8?_L!h2~q%P3ybWb z#xE5=r~RI`+DT-&{x`Hm3k-6+_1gI3?Hj?0oYi~US|!t|`%7E*hxd3mmwpT%pe+${eXd_hF-7wI&JH2@_xvwti}DGuu9U(s zv);dHrXL01jyv$C??pQ}z<;)&UkLcnoLp!7|EUuGn^G1h1k7u~y!-KAS*CTrd5>V& zJ!Ak7_8+b{$HBrzYU8`2h1T1g{Jx+-QZqY6;%%$2o`2~7H2pP z79D}>{5Ao@ZBARap=#@+^Vb9ui13|^^|v3^&zN3q17H&$I&FSW3!ChIyfA8~zvKNE zLjLpUzdr0I0iKDYy-da=@wwHq{3!1Z34>N%zKnzfqDmnSC&P;v5<#kaJ9{{r+dz?q zE+2>Y+*MLGSl4lY)^YiAXMo{J_EVfe>cqJG{keL-wx^fI5l?~Ad0bkCL=z8YOn76! z1(uYu`#2){Z4wYAN_E|8h%^%qVSY0yllI*5sj{;2Q5Tl*K&QbYGjRqFYB}Ah=$e+D zOt-9}F#tWlWIRvu@}zV`sK9O6A#Aryj!r2x!zYAw#~CGfzabG0oNJGk<$wvKQgP}@ zg;%;jG*X|>@oI9UGv@~$8Ri4s8fEsiYZXT7?CvzVtQS+tYP*lA7>mQZdwK^W)tRdG z4EJs118@YSC0@j^ezlL&m`d1*5mt0D3U;>g|P~VvvK|$?uY*$V{aMN z*1vTN|Ethapg@6QrNy1%5~M{M++ABNSa1*07AaC3Leb#vL5jDuxCD18?iPXtySwK( z_Zj1k``+igW9-3)@FlYM`pq@xTyy>XcBR6c|6djOzh8e$@=364wwuCTHHqS&l^vL{ z?XL%-!S^ZtN+t4Zy@`yXqN0j>q0!Mv(Al~kz>UvlH&NcBVY2Z1nHVfAx5^)|n6jO> z@JBw^U#xXnLZMHD7A?ec?7OpU;`>&^tp=(Sjz3=F-YFG`Xs_m-fQfn9)4VE|ojV$vmzhrH1uf?+xGTeJZ@2 z*(pzah(CyLJy>n2XgRnma-ma7JM?@};mE9mL4r$S^d1Lri@y`tsJHBLWo^okULq5d zJl)KpxO>w-l*Qz4HELN{`7)Nr`r!xELd)AzD^z}OBAa|9rGWB!nCQ86N3XWarrK$^ zDL^H$CbH@9S^`pB4=|9jwpo=kJ^JHi1KItbu1Xgn8qK|yY;IgHa)T)rpS3xbQO{!- zgHaUVu4n&sfB(I^VIQ6T;~ASdMDqQnaYx(EBZ?a2qm|!!tWp<|fs_t#u{>TM`R=@8 zF9Mgm#>D%A98IRsgK>XE=;#c>5%XZPVpC3{;XExiT*om6c`;|L<@$m66?T&(z#GTB z`-m!0i+6jm0+GO>uaK_{0}I+uJr(TIRV&dhfzSEak&C#jR(_=xU`wQ2-Cw^vXi_aG z;-;td!(^2j)G82E$*I|K@ znBbm3+MablqW5`=9c?ibDpJeJ_RW#4+dtavhW~e82jff|L;m2sN2X%Rn-CaXG6%zOM4 z;XUD;Rdb2%Er8x4x8sUP@*sr- zhN;G#Ex>ejDjrp=`8ph-!_x~?5&Ps7x)nOgqJR-HQw9}DDVQ)Jn*Ld+)bzGqX|xUp z@9%jLcR9Q3cR}ID6-+O7x@kUrN(~@`jr*wa65S-W#FB5C07ppj&dK-uFv}^8?$t)D zp?f##^9CKWc9I6fL;aI$DYgD(#%WHpTx^^VH9a4Xwo=^b*fL>n*soiKFaszfHldNY zEud`u(!aYahUniw;D;jc8*&qs|Nl6_2g5UdaRSlivrti(7ybphk9%!WHbR4X5U|}r znaBlf82}zM4$y;o#_AXAQjwTs#-GPM&^9&vcdX-^#ZwgT>We=`emtMj9!F*Mb_&^U2K2%vSTM9Ag0W@sSaKfl4x)Vf}Ty z0mip>z7Z5~)Ui>$S-+?>pH8K2H{I&j^c4|vYn(Ak44Mtp9+E-PfZT?TPoAvI_?-{E zvYE>bO8|sv|Enz=AmOUj#>1aTm^|!j9GPzIP|+(&x#8@N-B*2Rh|!$0c$a5)MH|=1 zPlA%_G*b`Dr~8+--;Z7E|3XG0v5owu>Ps(k5h0`eW8|L(nRF_~^)alA+h`Kqqa!x0 z*3Ku*XqSO*Y#9A*Z|pcaa~g0+0OJ zzNEF4@8P;;vBe`+N)pcJ{LX)dhz=Z({xdy!10p`>-8=v&h>w~Sh|j1up$~9eVDh64 z(5??YrP*(H9gN8^E{DrpOPzPSI`%Bw!wH0MEIiNISdnKIK~{dRH$U9WxPJa;>3W^w zDZ8O=2}E{mHeS^Z=~dfR&R_jNCN^1ye_Fo$ud*nKWKOVNhCe{jS0Rl zw1ZWl^!^jzry5B}0y;hLT-!wCAji6$7zb5eJ>UK|e*sC9*4arK$LN;@uxvRWoo>y~ z3P0yIy(#c5jT*?hA8G~i*k%Dzr?`MjJ-G8qXOT7iSrA#)m`IDTi6?{|8>K^a^LZIf z9X>Vf!p4%l!9t3b6#nxzER2=S+~fs44&jT07xOUO7a@*q;@X1Sp_D;abY2dljfwpB zUa{gz)98yGAapFr)Gv|K8zM03w5aE-L0*H9o_7&29H^8$^C?fwZU-zm;C9(cPB5 ze%?3l4Q7{sS%sl{^{fpZcHp0tdhFR&Aai7fUYkX2TW|pji6M)9-9nOXLIR3?eh1BO zMNJp`S9zQ^y)L%S+Nu*wbx0;ljFp*M&p-C$8&^P97t>*PtApOa)~CR^W(}H_Ycm5Q z(8KPJ*Lp>U$Z#b}o*(uBo`aseKFeVAzFo9@;^Ts3=rw|xxs6Nt#cQn+1KF^zUt^%4 z(_Wrvxq3*F-P)<4!8bSPfv?mlt4t8LC##8Gl776gG% zuod5X)s`Ztlubv!_6rq|khFk1pgljIA%Eb{>S#M3_#h2o+A6LDq=T>_P`An%FOF3z ztzS6?;-1%ND)bypd0jv*_dmLor3xf4?;n`eahkTM`$(i+r8j$3W%KS&U*<(UPKQp_ zZhV}Z@(ayP9PAt@NA=e+H*IS^JJo|i=cmbZo*HHF(RtMEap7if*lL&b(s<6X!p`<%t14QU@)Y0+fC+;Frwd5B zR97i{$y4@+R0=jZs*p-^`H8%rv2ubq;AI4Ad!{xXsruS!R2qxo zZmA=$le44)_feajPM*T^YdMQr1s*gjV^Mp~RaMnym2Xk94whdCjk2RWfpqfS+ z8rh}#NS)LD*;LMs4G3^P;^R;;T?SBbS#o))(Pf)`<`r$dCKqX4Gh{W$iv4|HNFR3e zC9l81kCCoXX6PI&)SoCvs!Cqs72607U~~or;8AiC3>nOhVz<#1c)7+?fU zmGH|>LT?w_*cUmBoIH%ZFNzlOTU8_d!L52vMGI;u^>Y*+B=g$FJW~go1nDyQ(Tz$b zC+Wo5FY4Z605jsnO@0~(+xBut5Q@iwghoWH#Y%|IhJ^snhTJ6#@n|ZV^!xLAd!J9! z3(z4s{RRi*lg()p2W#&l=NJ1^u);+OYyvNHPg;EjuXA8+K!1G8TD$9Zz5!f*^CA$N zm0=TX-nFv2v_xV#JTh)0i?`G2daDWUlo*{{y}*34VN*D5q{HDJoX-gS65XpTp7D5l z;mOkZY)(2%)}Vd!PhRevXeI>IP~=WRLrucY*(CPtX_i7qHLvCBo3P>WfjO`Dg10 z0bp8G>=#l*zp~V>SWB?o(p3Jb6qP9?^qV_{8HC=d(|`WGQM#Y=wRf_dN~_-7rL(!| z*STvsW!#Cq3|OvNhXSyNgDV;E1QusQLeqgIBy0fUi4VBF)@4#kdpeXkh9(S6h+x+* zGu0X0kQs%!9h9roldd9B8@&f@+&7Xi$ekA*>Us1iq`*K%YvBujE`O&RCeDU%M)^Jw%#7Ixf;^U4!J*zTfe1V2}DVb95`+tbu<@fVq*50^a=cW|*i;M&B?d}zh={_ig?aW;L zNP649Kjg@k-s&VicT?I>DPM*jD?jqI4Lt!x<$}&=4K2QtVC!=#B>K#E?T+{9`E9Xm zE6%>V77BbWZT*OgtB(jog_upgE=Fi6+Rv_5LWAi>0B~pG~H>Ke*YDq!fPp z`yzCd7~YM9sDPtIik%jD@U#PeM-gb1I=yg*TJ?N;w`RPKi{kWA3H>gOH*T%g^2FU< z$M|F-b5yR;kK1K3R*)9@oXt!SJSeE@LorW0+%D@&e&?n)vT3Zj%jt@M3;aEx5s?0>j z%uVmwZf^xfHG0%h<7bar9PbDQI7yqtmkgx%cele2P;CeDp<|D~ejTEd3Vh|Uy z8T(dkF;I*@|2@$TBTYt**pean2($lzqWo6LbRL)1IpCiBS|!v!9~m2j&gpX%V2Aym|#{5Us7K z;5Pp56?=7k-A<*@oEVmn9iI@dslqSs0Ck`5;b76!C z+X8{3KdrYuzv6Au&5#Hgx$pts;vU|qP7s7cN zNGmq9&-hD!zIg$ct#oGiB3a%iV@j%M%L1kO3?|pTnPRf>a%^OAjxl*yvTG+lD@%+d z`@;9@H;H+2>+kmEjSCHempie>4^g?~+%20gz)`1uJ78>R2i?U@)yiwq!KC!Ld85ra zQdQCuefNA=tiXJ&eJ)lfv*nA5W}7pfd*1Kinmz0FZqtNrc7$<>;GSy5qF0Hiiv)p;@~=2PxY|D=j&tH;7IBsbObMGA&hJ<8QW9!#gvwtVt^-5Zf17GR?RCI~sPerKsb zCTIet7|BG9+hLQ%P;oi%J29N<}F>}8+R8UfWK(?^Ki`?%$XAh3O zLu$hM{TO_XABlYV!0od8#GTQl>7L|ymND1`y1EV<-Gixaj?{ua3^G?w#$HU7Zar^D z3Y0zUynFZMKmX(P9(sRwcehAok5>DSXl!~Cm$8F0cl*eVyo|q+%-TSzfM#Fi`=xfZ zB>L>rEWyXjB<-%kPW=(>BtK<*$`>>5Jg7XcbQ-2R&fnJi{T6l;hz4S9r4ns^?MRLh ztO)bvuSD2fPGva2`}MW%JA~O@UFOOUOBf>-T6*A)CP*t(HUKVVnh@u<&xz+R1i+pd z<=LQHy%I8SuT@RyMz<}xGRrNISMR)|igrssqj0#Dq+&8O^AtKvtA^mRutLLlg2lS->`1w>#^I6^I};2SQAJ^(7e=)wSzmpn^- zSHSh{F)EH5ZKpv7M;W)s+SR{^;UM*{cPx0AkYs7>=hKCVXCAl>6ttHtMCHRz*fb-2 z63-fSND5kGZ+?pT>KVjGz`A0`Wx zx2vbgG)QdKi4CoNOsDHXB^p70FSWNgpr1mfNQ1%h;*8gwhF7zs+(IpE>hhjq{wasB zZ4V-NTcodk7#$g4qt9d*i%e3vN#xB{?pZz|nekkGB2c6qW#a9P{5XrsEnoT(;=#oy zBP!vvD`ts`gY#~#vuzkw`Y>~v)c55=-PYO7XPbOVw+j}hf@{tWZECsi?rMb1QBl+A zgN6yq9#XBDg#Bs$aQX)5b$TJmuqKIz-c1V0W@8na(&M=fUzQY7Xh!y!+0ITN20~1; ztaw5ry~>xHP1U9vh$wumWSI!A_G(u;cxx@g#-^ZKU0B+c_a`HMOF0~E%k6gM8naQ8 zvPS3GR(SziBV?(l!}ShBqtkf2#clu>Wj@-9V_Hg4XqRUqiN?>(szu4@vdOVfbCi;4 zhx>%^78VwwY|_c=)V=Zf1o=>n5}toh{hjvkrsa`h!_60ElX5zJMHuJShHGj?Vm}8) zk&@SjVs9!yswBS-uhX+&Zkl)G9$B4TJ(Vp-JWGGswr&=7T%o9T`0?EZ95ig38b9Ov z*f}RD-3}LG#IVGy`ea>hfRu_NJD?(c+El#erFl$MXkoLpnQA%)qys5QAZ z3B0lj+N*0PDeL{ozszDQbOgrAYD0&d-A#)$n*`T-;*(SmqOz&=4v!M$eJu=pZs7Z> zD2BQq$hAoOtWfkJwTZD`@`MV4Jl#*x|4#y8&kOJ4n39sWmFQFdU)9Hqa9PQ(HyDMd|&w@5S3Y~2ZbaZ^}3o$|qX4jvcA~F5hHcqSd zu2DQh87Cu~k%olUtC(>GY5~bFH+tE86&VYYEXLu5_I6ZPptnvPt>$Fa|JcXaGuj!o z)oCpsH)9=?PG$2G3Y+PsQwqo{7Gk=K3}n``=2JDMZ%KJ7tXzCA7tC$vVZ<#*r|K6) zam+cA>jYYtc$2%?BJ4L>m&D@U=pP=dvFu2B*!9oV2UIrW>wZ{{+FMNkoYw*1yzQ*; zK>|ZnAdgEmE{e{3J6^7{kLe3n*7iouDG90~0RMwR<4XkKt`>tw@E*h{YWr8kCRZ@HeI&W`09B;IyuK>yLU zo-*udUBT96aX;SB82PRhXZM!jy?hIJpdjbgIQIo~M{Pi1>9+iA@~7rlz!lxNiV5Yl zT9oJ&rbTpr$n!C{t@Q)Ps0U_pEE@V{rSN9Or+%I8|?CNW$+O4TNaPx5s7xTp|8*IF_mbQk8Ab@|y3Tq$-^4ydmWc&|lWxWe3w zUwR6r@YV!|>2Y0Lm53T!$?GzB_&qypV6PkfECAAbhmt43sS~ha-r?NZ9%u@ew%*G% z%1%VR7*C!%Uka^^3*B>3mJ9FwTO?wSWfIeCj=GbB*Ig`j598!e0<%we-c3gJx<4~% zn^1eWG)<{<$NZl=PygquQt+-ba2hsqZXx6Xh#vJ+8FQJ3DugE=Uj2IIk?3ybdYCM0 zENF}G`yP`aq8T>ulfr(K=Y27)Nj{UQCxmIlJ`LbgC zD;i1vuO7Q|HgORDr_(nBvmN8kN?qimr&Z!8B?>;5XOmW|J3G=ql2Yizmc0nC31U&0 zjZzUjny^(XkMav?WfL94nYwFLQE#-VK!EqKA_`EnU-u4mK0f+BTIuiCn?cVEojb=#7x(0v zi~ZivsKFVvnjV`&;kZ~8sgfp4;c%_0?4`25ud+8=t7*C+;k~WpbB%TX?z>z(G;*e` zcvi6S-eyU^{O4ES#VDml*jf3}EP3`U7w^WSil{sZryFchWIn)t?IeF{I3kaAG+e*WXK0FQ&Dq z{4jGGrli?KZGyTN;$Kh#?^2+%n=tHFmkZnNa_ua?*|q|@`7*SX%@mqbx;pB>%`R4byjH=rTBpYRfQT{W|6&aCX zgdWElP$%=%`E*J|6fKSx{mUy>O&05Kw2GW*eQ2)^HxEq)irkK*e5t!#P8?S^4!8#* z<>`n}W(_*$5qexwzL}w&qWXrkwFY+I9drWX>`YewI7s6YN)A#_CqG{AQK%jS`k_pq zSt;IW;0EV$X;xR-vQYmBXGD@&c!baNmaYrZmp1YG%TMIy)Rv;HB->=H?fVYyrx|5l&ae6ZLmm3( zlh>=KN!3WDA&r}`hwOF1>!H}mPNHe(*C5DQ3iXn{BHB}h=Ud`=rpNiW`c7YIS=QLx z>OA4|gPdZv11baC$S3Y3DTi}NuqWBexaSXPuYeUMisoIxa(9@5f8tcJrUZMm7Or== z`SL(%$B*9C`kTR>ecX1+E!MV13x1_@m zB4zBgCwdvTk|+=GrX2mE?9h6)BmKqw%+tY|^E2{-dKulSQQ<%XC{u)Zt5o_gCG8{< zyhI4>Zq|1!V|@97MLR*%TfW1~vc(*wH&W2&9ZHILD0MNvZ{wWTKiNu2^tbOpK3!cz z#-^LL_$wz}_?OCm{E$9ta4b6mzbt5JdF#{azaqK_rtPx+PTO?2d$#)I!pC6^$BDY9 zObz67I~cK$hENss2pg}8Y}wjS{X{{sq(8IKpYjQNWu)3u>Qb5qIztRyjf1Q=7MX$W zdH~MKY1tF=P8KT;VBGTl5WzvJ-?4`CdT&}4+McA9_hO`Wt44JT*%k8)inZ75wimEq zcdv5>@VyrjhV0p$0)6V2Od%|7G?%J5w}Ym9VG8WoC834U86mzI>^j1P*MmfsGSo;vpuRqy|J6k&5Fc{|)XZm#XN z{+0wjR331{cbsR5JnFbbL7N`}qPa;M$9hApf>r{Tq zhL@35>78HyUT(~&k_qKfACuOunD%)s?r-H4>+R|;#RYBL!vm6_Rv--l=(}7vS zB35wY#D2ZJar)K{H(ntYMwq_t*y+_ba^(5W+w&^To#W&tr*}=(V#=E%SaGI$12;0Q zPGPSvLXb9g+wdf%FbIv0#9_<2ktACORlnvg@;@0FE7HfWt&pvQJ6B{3Co$Rw&T$TZ z7f{hqZ?lS+*w3Htt1mu9XB*#3NpR%&lRj}$qK0fF)z(=yOe>i`mHK|6jKiXk1pkV#5s(&-an)VTO$ z{tEG^M3>`jTU`meY;N1bY!{lMPMxc}OVi=xIMVn2BOH4E3798RyGOv!sxr{2oFC96 zASr)hI}W&+KCcc8P6KYWt)9_u-h}JdskDZ@lEc`@?o=Lb$AwY~%lBa3W`;WlWE@6? z#oy`)D~v6A0q&JK2^Zx{7MmbV+~s5i)0eedS7ME486sYv4!Parw!}VUi$RX5i_3Ex zsS2h&@fLi<)y@|L`Grkx>&%yf_?K_K5VDyIsyjmWR8&=mf$Vr@Ht=4n@}R9u@!jJ>Wh?Z>LhDQY2@Et~Na0k@Tq zSKDS57LZS7k?pPkg;V$lwbc{f#cy|NACevxbIXSrct%K@=pSPY-PFfr5uM*5yfBla*+V^8kvWA zW;f6sEh=TW^dnG#Y3ase@Av21!1a!cQNuqZtd>MJTO?Z~_~Jj`ZDw`OcS#W5OA1e% zY-qqNoIPSxIH3@+EW5hX2JkE+S)2jC-p(JiX-heDx`nWm&4lUL&ww?_9mWX8b?#45 z>yNOik4>}kh#W~<5<~0XMvf@B%-5X>(Swv}7v%R8Yk&YG-RHAV z{nrV3M&t&q&a}#g7QIRlF;{7pJ2TKPeot%9nWM1m>Yo{Hh_Z7)rd#Iwo8>_N#n(3o z)AL!#wlIoyaXd1ja(_`~0agB;2;4fco@+G{39pnN$BT~W0?&i?ebZ@LF=y62v8QxD zJss3FjX|G2z16BZa%7T1N|+t-N8L2fabR7+a2QqPD!V)#ZN!uG5%D784Q-~jIjbX+ zI3sh`_@*MiJ&yycuBiuCy?lS3`xQ z=7mf7xZ&yOB6x5FnN*=X)A#cra3&sivZBRTc>C-n{AQ72r#mnaruR50*EHbTcftYm zhGe5u*S*mt_s@(re(Z?h2{xU}q)B#04-;E58WC<^YR4hP-rZI+kpk{crH~B{_u7Z!(GPiz-7K>fO-Wq~f zLpMcvw}u`Qz7#WD%6>2RA2`;3?vgRStVRk4ad8d0Ewy_av@JzDT~-*>vaNMzqyrI( zG&|MEC->W37f`?TqjX##OZq)M_P~)b#1US-*&9NzCZJ~wH#U^e&<|-`7AL`J!(a9t zaEFU=F7s^^KNOrhIF?i>{&nsjR;s64WG2g|)Bo~~wYh}<)$_fn22IctcdF?dX(%;L zG7pWZ(rnkyXGQNneb&l(hfkX2js2Ruy0%8THJY!K@p+~W`b(XB&$=Ug%}rb{CDIM& z$cU$ObC8!K%y+H?!o7f(J)F}u)b#P`C+S`isRRi0>%qdsF}5^w_Ue9=1TdEl2P_)$ z2a7nBrL8HJEM2(tAjQl6WM1{ahxq4q4J5I(UH(-DSoaLBKFY?NtukE_9~l^LV0g(; zG~UVx&_5k?Ql^?w4jjC>@R`$Or46om2BL67fx`CBJ3N^j$i}ceU7b^t6 zYfHxD)y}r~)`W*Nxueu6d7ycX6$eJ5acObFBc?d2>bFNBu;5niGN_)Ra!ewE=(x*0 zXKwn*S^lxEm`I9KH>5|S1Fx8iAmjU+mUsO;9tF`c)G2ScNKZc3lkMqAc6JZyg0_Bt z+S}@DZ;)r0m1gFu{xkEA6hFBJXxb&SPRYOSs5BrU3}IfrE2sA;M{a zZ?J`zK3G1*x18YI^0aVJA+*(b=Z?UZ=(|20L%-iapFJ_o~N9cHZibW5e4C#SBP-8j4Of^$zH&(?s_AK zrxp#40?k9t5?6a_8+@@4*i%v%G^wGWG zcmDWc;4(_TdqcQPV5tlrYRa1?N#&yD67@&o{4B4Nx5Z)+g1I{rF!mBl#pXMuvOqF( zX}7k1&2Rbk{FYA+8#d_2AbK1|0BX@IBcBv_-^OCQosr$XO85AiLO++v)MC z2O1$y=xg5p*a&?i8R{F%5E8dx1Xe;~98?$rbe+j=&zR(t}*ZGpx*^h^hILWMBQroxy?tBi()ZUgX zcLw#@6d^mn)t1YEN)@u%LR)5OBWIcqvq5%&aNO=s2lu4Y4W&ZS9A`;Dg2&Ni_3MhQ zFC)kVU4p0~&Jko8z9~LO^3^fw&I~Yw5%SZbBq{yhM6KXLy%JmJueTBF1FU}7Cs&xE z$BiD>qSMI35qPk%Cz)r3X|{G0@iFIug^yA6_kN5VbT|vnhuN zo-ybbtNkdU!tAeE#+x<$X6>$hPX*MZ(sT>8NhYnORMhy=l{UzFp?GgBG>6L*H>#22 z0dd)Rd*ZBu7?*MOYetvXMo3PWN~Yo@e)dgiYKa!XWN z6qiwpY+1nde6G@}cC6IDtqf|GBseuW+!3o;1>7c@k??!U+kKx*e9~LJ@Hj8c2`&2) z;BXbJ_V_qBcp_-K-v6cs5j=W0(mW2*3bOH&**@G}T(cfK5oW7}KVBVthkSRPO#nt2 zDW`h8mz_`kk;vQ8jXI!7guYzCH~S#4eLOBoJ&{9^$g2O1VaB5qQ&jk};*-oV z^t_Md@sm~4A>qh_ML3|5CoyQaw5BDq5`sVaAD)Yh@4Rkby%sH0G%r4cs*_HCSI~?_ z;rDzxPzRI^hG~as*PwSQhIyn#Wu1E5Wp<=83G-EM_eGd_NJD1@u^Il@syckQ4j-ZI2iHfhuVY*{8MSoTAA73Xi5NgSwgU)tP1o z*iuP|2K`iicZX{h9`f6q5A(z0dig*b-BvzaoSvDW6AVpG|wnCtGEh|ma( zc}BJ?ZP=i1_OJcEc5j>IA9c3f*Ik_1Z3OAO6s>hu60QDh*$t)Xa5`5S8}~AAyrtoc1ny9=Ah~tGCEt3{#LpIa7Hd)-gD8@a!`=Q772uFh9IlX!ea3`kFw5+g zCpMm#WnPUwHb@7mM~&-mi~q8XD0RL_tRpUJknLNi9v9{jw+OQbVq7qvElVpkinWU5 zEV@_cR7U*a=7g0DsWBQ}!|C)OLe9_VfAc4?P_lv(8S4t27D`f%ZZkQS5#*D6g-Q&^ zB@W?@H0*3Iex5MS#6tph`UJXAlN>l<=h;SB++`DjdoJGS4*9?u+8Id;xl%X@C+!^t zwz&&Mtu1%pQ78H^d$)K?kC$jeD4L({Ewn@c<6^d@=B*@)0G;BsyxbbcYR+Wad*&GC zFAkk?>*({PK61C;x-e{%6i=EW&iIA>k(WMu6{suI^`UkYozql{!BK%QL(uPSrhfi> zi!Z<5BBbv#(WgC3V`pEdn9!}>GbkU&pkCm8b0uQj;*)qc@X2ROCDb*~BNS#Ky1BwJ zGt-mS-)hXYS`{8aoOhGfJUF;cIC#gxJSoUtq!-x&<5GyLQmP5s*d|p_>+?w*KfxS- zEK*n>M`)h@Zy4Tdf;@4I%D*HpOI}E#rlCo2nzK7MYV=*07BbxE~r+dM6kvnflKP_Y3X%qG%sP;A$K3)N%duUHK)&9! zOYr)_cPr^lQ!{p(6r$DO#uG2PVpWlcKTBwNP2OPKmT-etDXoJX?S%&3H7UvN*YaIzHjd?wG*0MoXYV{PUnBuxE4Hj5!erT=EfKV;aIr!zqLKgZZNsFqsWhM+@P%5zPMNToCve0 zKa)xqf2mg~S3u(l&R+(@MpzcXxzYb(X;UVPeyi`|XM2?iN^cI2k~3-Q36yc;t*~w_ z9#0l&-WD-g&b;-SjMeE%`3p|G-Cqm-M{u%9EXPuf>_?5b!>X76J|DnRdX0f-mzY|^3EbC*Y1NS2tq}Du$V`j`qiuVwnR#Ar1v;p@S2OZ zeyfY_V}-VEyy4pL(WzLcbDIL)Nodv)PXwGv0Da*FC+1?S6r9%Ho#vA?#%pl&!StJt{ z$MNX$OGC&62dIzw*o9$vhGS{5)h~kVxP_@GmFoKN7a{P*typ!omh7hH3??ub%}&I1Nr018$WAXwMC!=@-s8{Y-1!0({;~u!$*Rd_Zt6 za)36XbqG?eOxB9}{V7k%lAdo1N&Waxv z!wODobKsfQ7rp)#1fepN=3o7%Vs`cRiWrcSKJKQEvU_B;oG)CaUhUH|%>M4_DSN|y zV{cYaEX&;P+LL{u|8iAAcu(|@8~?^{3uiLXBzG5N^$IU{fgd`BDjt}Da#bN&zzvzI#;e5ki|DLlyK`2<;Ey=*X`jtg7H!<4f*c1 z#HrninX#LFs_mI-_{?NPcHAo$$Fkm#Mb#S#k0=$>?<&TIOpg?cFxm z{p7Z%N*@Xoni%Z$^<9Heg*PaAWjdkM$=L2`_Zb3#@R<>n`v;Qb`0>UgbbclG{E3`z zCQseRKm5yb${47`MbQ)AIK2KKPH${1Y5t& z`n^=G9Dv6zE+x3mFBafSn5{fCF%3I#5wl!+XV74S2zQxl=pZca4cYs$In;9;vVBz? zjV|e#5}%n^-`NaMh#}81^*0?V7@~{Y*~p33Dt9c9ou1eb*y0UwnDfu9{+H-o`H|CR zb9Jr8Z_&AyoBP4BmF|H&=%zES3uSVIB@ha~q}m|RxqIRqilgKe_U+h|R1aqfrXx2G*pYc~uhsY!E1wR>1m~w9YPeQuxTJdU6Jal(r z*zwgxBW=&{0#f!uf^H@JFOG3gLQGs$f+a{>S`Az^mke)BVm4R!;0{q}cLvw0)B8)) zGrG7d{~5rreF|a#_04hYA%1IFJ1mqYOF8V%7b^LO6$X@3oD{v`f@+PoXCni=b8RTcW2kT7} ziRiJuD?*pW+2@RPyT%Impv>I%=e#4QXFcuBKM2YU@{s9GN0H5YZw%77?RteWWYJos z@D~-imk6@i?Kd}Y_*31d@uQhm#Z}L+Oe2ys>{TPbHnD+=ZknytqXb){b0Tl0 z8N-t@UDkSIqoajrHUw@?Qyuk9m{Y_dQE{o7d2;g5*;;zX10nvSv&CO2joRy7|MGx; z20Y;SRx5egpj14iBYeivi`0lMm$X=V?Jsa(b*gj(8MlV)hZAyxCP4kFJ>;Nswet63 zEPXcKJ@ny(WZG9T;Lq3~6*+O0NBKAV6@|f@=fRMQW4z54l(dV|B`IT%#Zy6P!-&iu z|M>V>k%5E!mF0PL8M^powQDzVQFR=0<*5Q6H45a4vBKV`Z1N0ih8!GBo}PIM9QzZ5 zaLZcj-f|9phi`mp;{oTZB4CS~zK$mZH8sKTnzbOnL-RPV2v=$x)Dlz1i!!%$9C>0gT703z#yXEPD*uSs+&uI- z>P;1MvC*}QNH6nYT$@?zGj@p_= z#FUONG+*LEm*o2P9k?*&;}u1ES#!mkkHP&83+8tZaAaYvGa{H+TSo30+uP9H(zMDW1uxf-()*lIxF0`?Hx__b!CSI_Kvr7*vmYingl*q zhESEub&1cR~g!-v?coUMM( z(!lKgNc()EjlAZ}Q>%hLIii*s7d6o;^_=#9w!-6ne4~ZiU9aV7y_gXwBMQ#bFLXC; z^N~ev46ePGbd=_-*UHbkjt>o54eg~*(N&sFJ)@;x61gD6xj^luZ1)HFKt2sV9ZdGL zK*Yrwr@5|o_r#{-tFu~uql;bu#!POm&m0h}ZNxsc8V$ZTBE= zJpqkqWehxxj7#s0=fPr*3;{s`NY|mU*Q^zRpamQ}VXf!c&uK*6Vs2)dCRvIRAW!(s z)OYnpxz|OI=oj054M19TqpOfiLd4d6V%OhuR}avd9ca?-!G%wP4p)JL8GMOVW!z87@eUl_x(r03kOhtRIYA-6h>_Q;`Ba3c@0l!N%hH8E_;dhvr zm@u(>woGxv-vI(;RaH`Bp+>)u@qKgBjKI4Kadw}`sB5NqN{dQ-Z^?DLH)b9x#O2); z$-gmLlLdRhLpmh;z|ubauQnK7A^fzyG$wgod3%gu#ybnE`M_80>XyhYTi@>`(Gzok zJGEFN|691IVb+o(({S*YGkX=fY(V{%*7o1F8yWt6XK%BQ&Uo?NSB@2U1gBIDSM z_7fsFq77}G9fb8d2jl&*jc?7gN5LBOG4M37vEQ)>%1LtSTu~_7>kRVFHr8 zOAGkF+^Iz4>A|=CX0|HYr><=_Zrkkw@jiej^zLrj+N|}`OnSoCy!A4?FU4$te9}EI zE??qMO*-A&btu9{jC}Ujmrrm)R2pnPPw(CH&v2_&vX8RdZc`>vIuklZf;u24k6nUrHYO z=8fHYwH1@&b~kp50U9Qy=74`s%}d#Ovt!9h?dnakgqKDz6`$@{ zkg$jgyK=|0Z(mmWrH|`6#A%a?;$-g~Oi9#4&!`RtpmW}2Umps_L8LpAMHHp6k(m%Y zade(@;cWIG*f~{A+1vI>D7BJj4M63an9XMVQ0DM_uTsxH)XUrxjrn*F0pPu; zRmb`-n}}mB$oc$ad+NNA2_QZOGq8Tioh9Xq&)qJ*H@&_RH(2q7zc=74Uop=iX&7m9 zUgojgd++6diFjTfHm;*KuhHvVsbz-V33#cIYfDY95iNF2r$@UUYgh6%{w=X!09ko! z^GB1{jgf9?C);)WI!X%axRRhCOmGPwz1(|mnsfIT{C5WqHUUqiD+l+|klFsvzu^Zj!LcD1?_bG=nZ0JNjA{j4mBMD@pu=b-AF9>dB0#I~<__|3(*#oYf z18m#_K0yRsJv~8dWBC$byX7=^BGCBt98V>xAdLyJ$x9T=6pa->s}%~*b~RR z3cyilZsbA}Yq%X99p~;_b>j78v7-f|=c+779AsxLj1qsEd$RXU#~xXlBpg1GDBz zR%^6={YqZf7vbE|rvX70JDH9z&Toj`tY?4!49pDqepW;2LE2z~#qN$_yt&D5pKubQnG?7iYDmYfYWO6# z_VP$$lCvF#H?e`iKz&z*?>?STc$$wsNi52vDDE_x{*@#c?tGO|B+OMb-ZG_ zu6P7(&t!8|F=T`xnmpjng`TDtsu1X<-ADf9ofh+>bxPTF9|gC1)B)x)ywA?^%Tu#` zD(7RDrsQT&FSf7Et!=~U4imA4%2dFOv5nre3LfaoL=6nZRfJGlBlJi;T`g9N)8`ab z`%|>C7N%JdFn*3QGHJ!BLPRxKQ4#L9L%oJir}^mZ8Fi3b z4KtB>oSPEG4Gkkr4c=q2-Q|X_fk^K8*X>nv@l`DfBS7ckN_fqFO>2l#Ql!f}#4&jc zJAT?H{#f0S0v6=TB!zcaDWE?IOCK4V&)JttY0e@nyt5Wa@quKOP;H;d+bCa$^ufbh zLf8K7KXSrb3K^2GWC*$B<&&*S5hd?OOdlGaG7<8($>2dwX>pEOaAG9b*FRTrZ3~Ly zBu6Pv%W?)x9m!?*ey6{)?bi@k1o9AyA(p}&QKt{0ETrJe*Ahv_-x*i)Tc1F^`jSG> zcvfDf!lqMQO82Sj`}_LK&n-h?2v5r7(SqZfOMNiEnP%)SAs*%#m~ju}n|7D>ftu0b zpT+c5M&oO^7C%ZNW_DzRW(BhJN|z5Xq@1^gPPxh|%hTx;X@>I0vLg1=dboighQrz( z=IqhA$?yuxz$Q)KgqXOqED+-n>VYv3j1+2yrH9RaG3bet=#(!SBjv9z4_=XsqLoV< z0}0V)=v$ddEOp1F3lsZH53mHZ`EG4r#*zxSiUL|C8xqH?UZ4y4puc*W2c&Hg1OQ6J zXJKcd!x@A>U5!kEAMZlL%cJJr(akl^Q~#V)KB{WzJCg<{{Z4K zLigd8p*A9$smFOUX^Js1>1<9eBSgxymWP5)STO5~5parZ^Vz6Ih`6(z3HY|tbfB$Z zC^3vz_25Bt^3u#HHuzHwQu|2^xF9sceekDbn@03d$(ja*U__uaZ(uP8??esyQAoUr zf602gE^jnv4DU1)wdmFPU7o*~S0cCyiFiHJwA-J!)buIGps^doO+-PZ`j;C5FUw^# zcpVpMFhO3|qsJv@!=j6}Yu{6AH%H)9y1BaQO(+LXX4}h2cSY9qyWx*f@{$Jh!F-D| z{lavuhj$(gaJ74tTHo!O(o&{cnmi-R;+uZ`rV z-x9@1QYqFE1JVep4!$hSVf@sOS8Hw3#iKdQs?^j&6S>rCv~fzUi5O_Z-e=EAAuyyI zV@scItg+t)vC^?OP3R7nJo0!?JMe63!lp9? z*u!O2ZuLC0L?K}$G^gd;^JFafWU>7i@d7@EcN5kxB7HAm7K<*HJiK3VB(hm60;k6; zwd+x;ZT0=TOFi7qYcfGn2ntO@cx((Ir@83NjFs{Hc5}y;Xxex^4WFRLPEuq&Z8p&K zc_46!VFe>7GBs0)PC>!T7fUjOwlHM4Jo+=i1h|lnnSB)sFrDu$nyfU;>uunM)M`|k zM#orbtYMjXzPh!e>H@@O6FDtszK{7Eq={?3Rl{+7$HZ?nQ6W{CtJBCM*cR#Em&`Ac z$Yqfw6x4{OBvz)PdNfSGgz$!C z0r+x_%P(FMH5LQbwhP8T04Qgc`vShW=@bUEDI$TK978oJ0=SrO{Vj9$-Co zt-}+oUF;leQUQW+MPMnF`JsBjPdQkpILQ=KYxnq!`plj8j&?fO+rmtlDEK{qxEu^* z{&^;zE!(7LnGpjhY{Qw{RiyC=dQ20>M;Z-=7?xFkcv%$HaCdvEF`ab6>0$${oTKKc zr9FLg-tehNyV(V>VD-U_JYBNTJ@>hJG54R}X48-?+pkIeyJ5Tpf(z|(jW%^Q=sO;U zk4(5M6@>AVeZpaOJholR5>g29_nrg(ouD(XF`*Oa=?ZsaW8>tHrH(4a^4-gvS0Sut zaLS9}j2^XQotC5h_HQ%E%VC@1p#gXUgIF%cLw&6g8VTM!vyw6oV}N(RAmQ47Xr+9; zacgf7?SqLlIrkL=_2)0u`D0yXn8&j!mFY|MU@43ZrHc5i6gRp!fLSJeP{g<04?x&4 zOo|Ej@j;S(vVEY)TN2r!!epr`SoakM2oTBqkkf;$^p9T;Q&obtdjX)jLIg$1Kqe$^ z1?XHyb@?G8r~%gb%@fG_N|Ta8SBG;IiNzcxT;-@`5zMY4+iUNM zWt$}R(&WdnnkZ&lJN&XCusr%TJkLIC&ku8RaClSeN-dDrqzXGspMm+ zCv45L-s?VI@B?j(&;i{x`escZRbwAh+0Ute9sfc7yrV)l+^tMYAGy-k5s=oTfA)mI zbKCXB*LBWg!DBg#^cf6|U-Szf>44WLi_iMjpK2~qHn@*gYp>shHZDPfIIX64ZDa?{ zRRE@q{NknzpjBSf&C_HSsqG&OjUJZ*B>c|3?;~K9J3>yQl5a7u#!k8BNfm&n2&lYc zT~6uP-jJ>7dO1IA5}ue|w5Kkt$-5#{q8KZ?sf4%%_H-X0(ExG^n=AX2|wR^60x5)WC>deC8 zz5a5kg_3YSqKJ)h1XuB1IbCGLkwxA82e#VZ;Krk5y=O1${`&aui_h-GUGqj-?|gam z+syuo3*1KY6UB+YKXAqWUMlggD`|4qTI}}5Q>p(v)sI5Gz!@0|7TNo|O8(Jx;7M_= z373l915VF-;`YBw=u>flhoHyT|MaIg0kHGmaezT=ZV_f*{|iL!DHjjSQ4YGlV7c`u zc_Eae?=N{ktpY1^wps`_eDEjvxOQVy^xFSh)K7LLTV$&(8sinfN{oMc%l#J+mF&sY z_anCNS^o%3B@h1zJf^HQ#P|B|&1#{%HV2+7R2L>@@kV;rm_B9u$2tlLKL@@~EqL6H z@#m?M(O%5}S@&M$*9_h&Uv1Wit!sssC+ci~iIL{cKSp_b`|A5|6mNl6e194ig@Few z76!9G*27;vwGjh$S}WqB0&#Qhcu2>im-HVZK<;?8soG5|B)?_l-}q+au7D7>BE1y; zPG@62`iL^W?!Q7I3|yfU^}hdWYL6^{&*>o#v0nX~;eKBN2?3jRn>-Ek_pqKoD|e6&+H&=-wFHs*Df*#^{Yq@; z|1qkkT)Yw$q^X%U|n=d++Ld z{nVGQ|2)+r$*Y-365tQr_;qhHiZ2)lu^=}CnbsDyKiawf`vKxEhyV+&GR>{%rK{Fwhs z6Ji3o$NbgjmHWSCgxnt3GZEw`t^a;7Pk)Rbi=C&>DEK6LF*yEyfcHW_Pcko+%tW0+ zuZyzZ{yqEuHI;vHLr=NrD~Yq8W3l-43x5bO#f3=DzT1C#vH#bbPeyR1KE|BibN*Hz zF;{A0sqF2WKdXs<8ZDgsO2Iwq@qYD7aSOH30E+BgF_}2_e?74sDL|-Q2Rmwi$;MAS zKq(&MsT;q>`@J*26~NyM`>+0Z?+GlJ+Q&eqzvb*TAl#fwo|OM$iT}-(cyAwAf z+v2|u)&G1hZ{5TRLbQ`8(d2dZR%-ce-~Nd#?SGh( zLJe1jVDXWS?XOqli2a_Lf>WQ8`z`7o`OvLPw%Bx@W&`=!VsF!jH#4x1W_ji2)Fx10 zO6We+)sydX<2979fRh#w6VFlGEup1zdxb8yT2de zN~@w(4v>`$*Sr(qNJ(yV&;0sD2*_>otFzkL*kr~P>qNwjnFZ|=!9vZ=&0o~I*pBQ~ z#t}5SATM8WG4(MmuB>#%DL>-(*g5mE?UIb(^Xc|jIQKm}JL`-=a@ow^l1^bFkx3Nr zs=BD<7aJrnZw4N2J7uBG%zVyN8Etf-*@Y5=H{M%Q6vDB{aoHgcwd_ zkCvTaup~O0`R|LHn=)4CGrsD~S+~oQo8^e*fKFn_{iMG2<7}z8wx$>2vu>&}wu_yw z4jdiXjkdH-%(iEKuD|8ey*tRXJLV~cEVX`HBT#6iRr*rd{%`&IZ&kw8CWe2!I(LME zd{Td(JHph!{?rPsdj)^C6EV8Ldt|a2=a)s`ekd=#XJ9`^bYd_s7n@h_pGl33iim(a6 zNRptC=Uw7b-zKXpvS(>!9x5kc<(i$lIIIt+KHQu{3wh;e9S80Spc=*Qz(6Lf8r6;t zFL{aR6^oK^0~iOP>^yX8CFC;k>{4*M?qQP(%kvX#=Xid*J3sr8OM32h zN2AIYXj$ zx`-v6GEodd7FX`-hwhJr#un;7UaNCmWhD```4r2fZCL6s45OHuUV&#*A&g!enu)A) znSbe0%<_hYwqX*y0jPIOI{LKPZHIGSu8U=To#{(H?ap`sfEDv`yhpk zdm%(@;`~QnI1>1v_X{rRyl`PFIT2sP;Aw`HU*vojD3$L30^EZzC z5ss%CPV(lF*%BU@hQd$uEX;sR^SI+ixaeoa%kRRt&7CORfv57n-4pUhj5k2sd6%D} z+39hNZ{EB~hdOt0roB8n@0vxV%xJ#ku~KWT$Ute8Y_i;cfJ#TBn^Mmh52Fg*=HJMz zJDk3RTCTqb*;&g%poB$~M4B#r3)mFxl88I2$1@iZ(VdJpGfy^Xovoc%`T5Ixe{iz$ z?j9TMt;p}S5s1O_h)%{>#mvt#?c&rzxbtBQRaFBx%9L!eWM(62vLqgyDx0H?ch65} zJ=zy)W^5cB(nE+wa}lK;mu?^LJRsC(y@gZ3Re&^;b}OPLWU+m`IaS${Av=<%oU0nP zMQ^oIGFO2tZUzXr*(;2{@m(}*NHVAvDd1L&8ecTjM)PZO@;I%$+}|_`e^<#W!;bvG z9ut;fe6h(j+aLbTtAgoM^@-VFNwd|gd*qI~v*G2Is>Ykd*Y@dKLOv;`v z!d2~<#&sB)7yNq3PqB>niEwU5n|Z;^q#y-AtCjl6$9Oj*U`-2=ESN1t+;zOz<)N&P z6egytfyDJiGgLX{UtwE2%rMp|D2+&fJ3yTaq=mg?z-rte|T9>@p zG#$;8Vb*q=7ww9Q4cPtcbl0koUXZ1oH4w{jCXiIr|?bUSsFJ_rdUFTg-V zWxvi0B4Ex%*VfkNbq?>ZjXozJQ0>D^gQ5xgBQqh&P^|{zu?W78Z;D)fB)dkRrxgW% zUKtO>%F&A%=BP+yS zXjVQWo*w6X{gWjGHPxieiwjj+gg+$V9R%X`ulr&+Ei^Q$^jXGtxOBZ~$|uGr&PG#_Zuq?ktXgnC^Iw~DS!vQVNxIoQ`NCPxN05O_jDrY#*fl?Toj9+Qr z0z41kMr)N)tY)0bSDXi4Os?_vMzi1v<}3p^tZ7OQ0I0=~J-Unq<8ccFj?BH05qJL_ z>38DGGF!<>fsg5c#EF3Ya__TUpmnmB``$C4jd%KO;%PM%1(i3E#oL;BZIL#{7TQVL z@gnq;cLS=DXyq)WyC*UE#sH4hr#vh!SawZkq}&c`t;bd7Gf6<4y};RIw1FBrv&(+) zqh6IcPpg)djHsv?iO}s215rcR9T*F>nvw>yWLj}Ni*q}_YPh#Qc-9rsjI#tZDmHbO zilWJkrc>w#nu^jXcSoBtb_A2;pVY0c=2k6FEfFd2B6}pZT(N-4><~VFs~t(@rX37XLoh31V!pPUO;--8 z+gTU9Qu&c2kHeXnPKMFU+$Z;3h|yuS`timT|o#mLBa_s-GKF?9Bg zXY6TLyMRrO*B;b9w&-#oa8q5gyRQtLuE*xY3-dSV?N{(eO+}LuCyUA1^zs>Dq+n^Fb+Np`Acg=8h!6Ob6Vc~v4YH1 zHp8drBv_KkdaTTvQ(It+(qcKqV#JtN7#5P?`bp=29(!au{yH_pD`!Gyge{C6WM?v6 z_hjkq_(;3B05xtS=Dja~iX9?1I z>a2AIHaZ_iI`5s0IJtL?VYX~ed^i$visix0)aWBYF@4Na$uGLK?0NIfoA|-ZXs78| zF%vi2CI5aP>$zA!PRM4-cYcgaX@4I;43z(41DQ zNsfig*#$g+$aeymAqFQfJX%==?ARkLG=`hjE~7wMQ(KTnTk|QHD6z*2%P)*rep|co zT5)qn=XtjIIIHx=7-9FR+qo|mJ5clY1WUIk&a6N#WkxB@$)@kV`ufL@hwL9__%zNv z4*G8J1?F3{Znu-yxD4Q1rJhTd&TnmP6@7zU{r8YjCxh`#Lz{M>h;`8BVUrPSd3mCY zq~r^BKJ?`@zn%H=6k9#~!+x@nYEjvGaab$we|)kDEmA*v-csI48CmCp_1iZ2*(~#O zb%>Upg)2=JXP~8gWY$j>-Y221=HzIDUL0}=#~Dwnuc*Rlba#rKHz<&_8H~$dAktJQ zNkti87|#NFPOQMswrcPx$aHmge~Ky_P4>T| zR3o1$N=O6x-xx&QYdFF2BGu*D8m~t%y&41MCHNRgxx(1r@ri}3X$d!fU9A8x#uZW7 z2JSc@px(N#t9=Kod_o0v*b)Y^$x0Zt5}{?@T?)Aih6|7E&z*H~K2KI|ca{~#nillL zspu59Z6%lLUJB?~U3%UeVYe)@tcX~eF-}gFrn)rgCs$6P35k_t+z<`7=!>lO&u262 z%K}hLxdLrLPttYxU2@9eR8@JL&py*bZtNDpCOAIxSnvd`R+wx7ZOdGXu^@a6-0u?R_e2!3S^W zYRNGXw(x{%{%U4l32MQQhVsk5b_1O1FWAtYSMoO#<6g~;I5p%)@2d!|TuV)bIrtO<+Wgu9gS z;38dx;id+<;>EAL)t`(%Ai^VRdt(kidC4etp*^VQl4bUc3{DB=0R2w9P|#hMT6XPK zNNeUG7gjxb=VMf^mEV;zgXApz%J*4oI(L~dVX%K+-e?r@63P%G6zziJVp{NX=RWG1-dBGAhj=Qa;zWq%F3!jYs@0eOj`F7h+wNF-}^W z8XU@(E{EHSaE;32q=F=rIiw<1ymAHuZ>7cO>%QZvuoM_a?MK2GulJBAdbvvm8w{&6 ztz0wJfqCY%0}na(cq28MMMRv(apS4OGE{%Pdpq*$Ci;LehEX>nQ%1(AGN9-{I5#*R zF$Q*6QvwZ;$ysQG$kQFh4QGytwK6hg$6=D$l( z)8D=2?g7wof}pGu7Sc|!`$Zb1No1qJneDGrSfZ+|#&Eww9y5zGYE=AmW}vMQOwSuJ zdph_9+&QGJ+I-37D?xBZ{3~dC-&Fb z9XFgD!VJ42<25SHySg@YciB~B^|p$dbQkN5=FXs6MyWkXOagCzzOA!EavH!Bd>R^f zh6s`rHaqCn0URb5DQExakQ_`FwO%S%OgNH{-th_ZVbZP>1&CJl9}+}=p32p8k&ct) zEjAf4>JN-z7@3+dl2sU4iW1(#^tkLz=J%UA_6!D~N^iVQ_LT-})eEW%{Z_bSvq_0R z%feVh?%%WY6yDiLu(wwT*`@Ezss^=)(@6R23&y||Ii zr05`;T$5yJLR(8YXojyzc!yOvZSk1eLG_LaZt{a+Z=`+_YAPHrnbsRTr@q_?1U<2c zc)W)c;kZ>5YHG6XLcES!860M#gOuA63b|GGCPNCgu`;?1PN@pI`_5AMI<>a9+k%MV zLP>e0b+qg9Xv$Y6bIao*rT1ABY2~tdOS-_{l>yG6G?KF83&Nd8!kJf6&(5#GIbrPam}Ez;cuN|}T}wR14Fj^^%u zuX?%hYMFuahkZ-@=CR^gp#@sm3Ny0)6udyp$8Q`Q);Yd-Sf17&Aeg}EWmvV#?4Q9C_%%oT z00KOzB=3nz3lS)KS>BDyV&b)4dx)Yzi0&)=WM=PhlzHj^=*t=gg5oS&?lLCQ$80QD zFQctzA8`QZqS{5v%Wk;upTzL^ZVJrrmuxg!HZC|aFS ztyba0()B?M@Z?7>r@(F}!PAG3nC_Tk!s?|671Iv7d7u+fbpnI^dMQDTM9FXpo006k zHgyVszTD2KU8FXN%wRWLwhzRiyhFmbN1Ls7sAOR{r=GDK3kq5nuCsqCVE+Q>y{kCQ zV9*__sAr4phR>$kHiFn)`iM0e^aJwZ;vRP?z5$%~;Z{;)pV?TuvFPt~(Lbe={y!hd z74Ys=qdT=$GdOJx|;yO0M z+eP5@@6dP(y(a;)Za?5jQS9vrM5B@_yWGoap#AF-1YMVKJcm9xW=q;_G?8*0nn27i z+{ZvjRo4E%<21U+(r_n?%=aX%|C((OzTAEop&);)SV(IN`pvF?Op*`s#IwZ?K;b#O z1+ZLc6h4^pJM(Se9WJkknu2P;n2?~pmS~`F66LKgW%=YASUh;;F~76D>8uWw=6k7~ z$31~0!;kAw8w(2}nLW{zf*yj(%*+5Yh+=N;p?Xn~jtGQ%l*ohd<;N>4s4FK02I z1A#wL{sCLghhXD37XWSRMaBoN8Cuz=aPidjWSBWkAdpO>^@k9T@tUA z03_k^shwmhT{ema^K}rDd>(t_(y-om8dN+Ta2ip?K2FwoJJ;7n>cjG?QQbfTj$R4_ z+&cI3I~>Ntl7JW*&egt4r*U;3+oRdPn693+CEPGpCVgogu95O`y38a!Z?gPD@zB2P zQ^DjVt^v>(F4v%=ck`S3zn)fw^m**KtFs>;mBLUuC3K;I&*n&Cxl(^J=s_ zc8oIRuGALksy;sjpYFV_WNsBcMkD?W>;m zrQwi+<;4VL$lcR7v`?&eRCh1!_|(DhM?}9|Nm0%lR{V zL8qAbsK6^DE>k)t?S*`rHK69NbC^cw496-u20fu`@lcei7u%mB(6giAb3t?DX=UaO zNZg;UcgR$rh78KYYOLGLmq6ENtC^qBEBX5%A+NlRa4-p&)FjbrGY(S?JRh=vxb+($ zp=(c=)e{syyLAD!D=i;^Dh6V(7<3p_UTqO-HgMn|uY7_L2SCW5E{Hyek#Sz`IZUVT zf%K>pu1+1J+nbo&d!SDkbQEA-1D&^V4909f6{B=2j9K9ETnO2wB*gj?^>G`!DxKBx zPk32?NiI66J`Vs$?}m_a2xC>k;(WrYrAa<;WILsR?R-yI?7;5nG&11vle{%%=I59Q z4cx=-SOF+F6cEXcn}dxG(Ea!REo?R|Xf?_?b?*Zk zy^fdJ-#xQ4Nw)Xbxj<)IMxJiZw3}_Fxed+*B2SBrf4b?j+rHbO(8115xl3!ExSbBP zg?t0p`@?Q_OWn%UJApMxe1LJ;wz}wbW2mdXBwD-bwMmoik-MYqY-iayrZ z!;(?VTSnxbeZdJj(X$wR{Z1%*L3^Xuu& z;%XQwDa8kQ9e6m_fnlM!@g(x5w{sK;TpmrU+#01e>Ap(MI{cN2nHmnxdn*ysMwU}Y z7!~i*559T|)TqEUl0dUc+SS6IE#(y)b9ae>@{IfsY%^l|vklN7+=0Sf2;YzY&tdZ~ zj6wmTD;dY5krdix8%b$dPH22q>#qF@7Pvo-cfY1Cq(DxMX=f<~?ml}--dA?B78*(I zNN+2p9SyR<%RLrzKH%kER#fBc`+e$BM1L$U#s=slUkW3G)#i@n?xS2F**ATRJZ9tU z?Ofz`UD6>F2azdF;h%GN70*D*EAxSbkAGgqDyHb|G|w+6^bX&CVbWLSiGk?i2KEve zu!kz9KIy*)ja&RtYiDRPUycd15D)B*DHggudX13H^zr$&$LzBX)Pei!$cwYHW4ms^ zS5V%5!KYfN;X`WI+^tOFgS7N)L1W=36A{`;zgnDZ@wtEJK7vsx5$xu$6PbB+n%A?G zrDuzu9-WjWX^984)#cD{);Ud{V9}0P!>qu zWSnAe^;i=MI)Z>cCNeP=%&&^)CLGpH<};+k2}GQhn|Gvlp~u`*_h_Y~KdUf}Db$G( zK7q3DtuuB>eG@R%aU;>Lw@+owgxJ{bxW(XWr#m~~t~N-In9|3n$QDQ(Zc)u|V#PX# zkqEwe!VsP9hfOB0yk$1S4#=CTI##L@;OZm~S+}4)-{K}~(v@;Lz2d%&*&@g*RwSd-+Mn&3FWsGIB%U{zk#fC%hWKFaB~%y&MI)S@9Tsrd2i=_#}U& z!xc&gWyMdH!MG~lO$Siud6y>SQVXGnA$-v#F~?n(w_eWLRf+0j_6!%UoZTks2)}jE ze-B~1Ri{>vX;iFgrdH*88~z!rm>@D$X4I24*t=9OCg5@XY`h*Y{-oFB`dXaQL@|^b z<5USWTkHT@%}Ibhfwl%rZHs3Eam$lN<$1>l)n61^U!eShq`Ph@=dJzx;)w;um9TIH*eF!@wV z`B{gN>P7BRSYtr=hK^<68JG3_nu@S9?2zY>v)5;GcPI{XT%9TU8j#C}z6D{-QTsEx zi@VJ#iwU_I37uAE*!P{R*Z67MUjB`AxypAAG@d2|6UrMsEp0(RFFUboL7PiC%|Mte zCz_GEGXm0b#T#kds}RKsQS}>g(^P%ZPhV`$@bYSX%Q2*#~<8sFOWpipLNETekbqJl}RzW!vEcFC3b zp9l1yr>p%DwkC}_WSr55g$+ebdmWyFH zw`l`vRDg~k98hQH!BLAzlcRf#tK*{*3NX47Irgn`cu`n|4^^irQ00i9jD3fa&umPH z0B#`QHgtO~#pA*U$mSO2p@Ec`U@19>T@#$4zrK*vxZZ+h&@rpEeX@aD(R{KCN#L;a zC0u^Nmx$a&`3r+Rjyz3A3SPylxyQ<-gDchQ!!&FPM;;;J3$2kT&;n4xRY*!N`AE?H zC;J3)7Q_d+QAd^9Ga9^YBvry`wc0E#2NZlODz{1mD~-uH0<>}$T4i~AD#Q-Qw`rT0waY$JF`lC4D2HRHojVvEH@Fv<*Scq~&#cv_X(v`GWlB?zSe)#|)5o8* z^&m}~fgoSf;*_rTC6kV}MT^~aS*I=LL%WsRmi$X+VS-2XX>$GBfvF;Q6qBcFSGO8n zl*(iM5s|itS(ZeuyoE5b4h+O|41`aRtzfO9mt|KJ&BCqYGNoLF+ku1}^v5U1JMK{D zb<`J;{)n7E!;*hvDE&dVS{V6g=TZtB=Th7+ek7WOK3q&FeX6e8K;Dey(8(c(Z7UVU zD=f$GGo`u9L(a;UflZT||E?ClqI3>wi* zbNlxRqza$p*1I=457)?xj1(Ic3($|KZGP6FVo{0IGgu$0CObbkwaPOG1iDmzrrgLX z<}+i6rR5fTM6F?Ww7gW+NZ#1u@a|oj<48qo^(4o-nG|=08&&Frv0$+*pvVfVT75Xl zmJRFaQIxbxtmF85(Xek_gY zqHHWC9lj`LTVNko8jl78M6{U`!24ap{u3S2PH{9xDRG?AI#pz0v+zCD0d&w)Wrt)U z$3;m3Iz*R+NyZ9x7(wFG$m=b}3Xde9X zZDMxAWGEvQd`9lMcM7;5=J5I9L=PHYDA$X-tZ@%3~8aB_gb_5PQEfR}CgY3ypQo=fXn=4Zn2r{$ zek54qu>o(~;EN5%i@ceGyEuUXrtU>_HZD%@>#DOnjv zmj|-00ML)>Oc716+Ts(m*unY@Sq2oN`$?C7c^(Oii;Fv{Jwh04l9|C^JPv8nOM(66 zs!2+ng32E2qnlw4^s-?@Y=#d2v>0n`y-UA)tan!FBYgF0c95=2B4S7maepuWNg6!q$LOR;c#`?x~&IJA3@;N?kO*Imw zLPFlm)q-jH?gBfhp1467r1{vPC~lOUyqQaGHQyA{IYR0D63Kj$9+RvyEyDF-FD(Pg zBY##v;ehJ{u+;2?5VF7Rsu3`A5*WowNi*!+|Kp(wm0k=D{FD<25-hU6zRTmZz+vK%>W1zhka}krT zqU>-IL^US;X%n7!`G#MB44nli+Tla-p=G#oRB}_^VHB9!^N&#{#NeTC60*C4fZ!|TEI(DyK-H*?UBYxwwcwN9n)hk=YX$JTBP zLj@3Q;psTEbB{Fwy8dQvshbP~=|?-AO50~`hAdNKV`1%~L=qmP02bH>C!##VxM#=X*nq)ee777o48ZDr?;1W<)`hZQB2v}Eg5ym! zq-@?}tksY|Oqfx;W*~X{cFKy+v4Bv=%*@Nn$QrN3Izk@jq#HTwIky;D_JxLZ@$D6Acju&1lFhuBni|nDuHu_QLV3wy|Sz*fSde(s326K2k zXZC|!Mi%U_#RDm`kkp@NB#I>hs@|uh7Su~lqN^6Wq6W&uG!y_9*+ca@GvchF{H}Sq z_2vEH&*`+x^mN=A81vRAi|v&`$^dfjQ%3;+dSaVc{dI?uo^ z#I3Qv6e5U!%;dT|rXZ*by=0zpSw^3m_khx7np|jwP}`k|6|%UnAnqzF$(1={UvYRAco7GFFcwn%SBC(8N0?F3qm-k z1zl1!tpvA7Tq57|y8d`6;;(#nK=%7nI=?3OO~U<^k;JV#(o0@o`6G!~$;u&H+a|tc zEBxe1A8Du2K{*%(;`|0)GPABNaIiQRCY7QWn6;~t4Equc3Mjedl@}Lt&q@OC1@w(> zFRb@S^){}olPk{mTvQc^Zt-Y_YHt}x^iR- z(CWE*$Uf(&9i1oxc&zkj#gDEf@w-evL{(33X|E0?4Mmxa<(UB8{w6+rX_kZ8(kCSH zuC zjr?-x=?@3!W(FTFE;_7NZL+(5zc&)eqDPa!Zo^kwUmNdyX9?I71O6T;f3hk61k3{n z=6op1mRe{BX`{VTzL^7TkniMY54eJk*$5g?Q?IpsTEx^ik=v-xEP4ZJK4`j!DSFnE z(YZrM-y%l7aisrMeEG*$8~6b^F7CZ%R8q8$QK@fBiE^=yGBrUUt=s%}-3pVab2%cv zcl7D`68th+`;)wpAdo=q^030U;D--yUy77>UbftcO;dY-3hu#0-z@w7T72sX$G5@M z`qFg|a}4!HM3m-0iV|!)P(yzoYFXh|^@u?Ql<+-LE`hniyDGe$QKu=wa96HbVtI4+ zQF8MI4}(nn%c-wU3kQ0!vFy)BbIxwvmq}pHy5mr>h{9CedNY&-PfCtapNV~VJ17?E zZO-V^&-aBW+YRs(g_KFST@&g)Y|E08ZdKT=^Q2Gq*7g{)VA7`y;_J+fgS>m{+GUgA ztI^+jf(&zy1{8IHN_PeCxp1m3_FO!?OIF?(Iz`UThR71_Y;kb<%#MbmVQSI)@fPuV z=6ZFB(4;K+baA@XZN>W7=Y@yO*4xj%TxJUADbeMckK2O$+n-x))9x+9&1Ab^64ya) z;K`{etz4<7tfZM$!(jDtM~>;nbPQNuyLV%#50W>f2z6!<(oa>%KRvhye%)2ug|4jkM$lNSBl}2uKS^H%J+DcSyrf z(o%z>bPU}vATcyU!%*+V-g~WQ?Q_n4p1se@Ujv^R=DzQ%e(?=DruCGDl-tf*(^1$Y zjL)g9>c45NZ0b_!lsnwa@6XG^xVamXlL~w!ayR)bhd-^^C$E)ExfbBbM=h6lH@KXg zYpCRs@#8D-j!rc=Z_4G$#{sC1q||hydv+E#Kp4oS3k$@}(HiJKf_WT}F$`^KVijHY zlda`4JaJeOu&ln(IUQZ7OAOhQybB z6%o!kl8q6pmaC6HH|^H!zsunJvva5B?Sz8L38z*H*-Q`a%MtVg#|%l<;rA5GhgK{KYmg#>l8 zq0E4f7A?PI_kS}E)=o^=w=U`m#WiI!7htcO-Ut_Lp%!jpMXzon@&eFC$i-^afV*3gB>|0Ul@*D(U-2!vXuDHdnDL08^=hgUX=`X(gQQezsPCZr4ypP92w z9)(D?E6k)hd_ojoz;V|@%iz_zd+)jc`L{<47olWszP3CWe4mFe7b4ES%YL})Wl(zm zyCo8NEH;YpISqqb2k9FUK>2O8;71igxRiXUHQVDxV+NlgQ|h+`ylXb>M^$}^es^vy3? zVDOZpum5K9gg+3O;X@{K)AuZcvIfdaZtsD((NG`Jv^Sz@IFL%Z5IV&8GAET#I24=x z)6-`6b5%#;>h<9iqM?8;5Q3J|HR>wAf$Ig^=+=jZ+)eJrZP})GvqTCA?@ozYg|fGS$HFm z984I@mCJ!Hv*{@AE%);C59PbCA*yGUH@!Ar`vg*+^o$j2&un#c$Cte9{OS_tCj%O^H z;IT|n=L;7deJ4gC$X>l zs?&btrP$T%ztj4FsRPh=fID3o%x-Dgf9i!#C^^3lXIZbU zuNFOeq@v}eB*l^5Jl8DWa(RSBPDp%GwL~%xFjaF#e zLr7`zJYN1j35let3MFQ#AzbzL@?PnTVaOB=*1_*y-qk0LKls$cYS{ynSJg1w3h+qU zly<+r`2Fj1XTs2Y#-6L{3*U&q9jE?(M`hvfQNbJy;W1-NWpS-uokOh16hG@@%OVJA zUk>ssHrzq|5`v7pbZ1){rE{@zU=d0(S*hB?+Tx`SL~=BrMKAYJ*ijgttYuhER$032 ze)CN>v8Uq{LDT}KaKX5?WKE|3Lq{~0{ei%@=K-%qJbzc{%tL#ApzCiZyEYPjr$DwhwDWc`9v z(Q8JmIGrAG?yn4Yx#EW0-|WMjyXI;L&b<}=n7o3xh^mFP5^CLdoXd#WUXC3%(~b57%UC#26O+OSm^#kI+1nOVjnM#?f`YPrudwM#vr>P zkq414MV08Tt^Lxlj(g7Y^)uAAX)2kG`~>oYOw$DB>yUcng*?XBC&G~BKqT{3(!(AP zGg!?B;5F;Jlm9-9;_pQVQBl7LX5sE#$&23j^OWbkpH_Z((u;i5aH|o8Df{RqS6m~0 z&TjbCBC(!P+fd~3SdZ9E**(+XJM(p*tukEat;V~#@Zdr{)9dEmlZ`HFVNe?iFaS}> zFM}qPUjyLrs{Ww5%-5V~>Tbj(=gDbjy`EGHcr2ua111c8e0@Ksk&CNEK>musYWf@J zNQw6B^qW}gF}okT^K2#%&C*mJ2MfdM=Iw}uHDq20Nsnn&3eKj`(fqnsi{63Kynyv6 zE06Q6vP#3pm~~J>#l_l5-goIi=?mCd^Y~n`ZlVL~14wjhd4EId5bPlLl=9r4rq#e1Q}qr(UEARL_~PP7fjI zx}`weP4cRN+;>(YTRLJi#bOrlJ=ry=s|||`9O(){6#V67!Ami+@!F7~r1Nhz&ej}s zqU)3tK}bMlQn?UDto61v$gFD=jp8_z-DVK({%%$xICQf2AXFd+#SVJv^I`!$4jy=1 z7i_n?`7HWFZ4oeXS95)y%h#vLG9%gE4K(uE2Td)cgYSO12mLtwFPPX0tw62%|D*1Zr1?g{E=g=+beX=NvSHJ9II z2~|$Jhd*zkJHm6kTsOx30ASC0j6}qP=RhP@;QWEh0lM!4Tk{||p%EwVf@UGC+kJuN zq?g?sQ(9{fWB!o{$a1E55cb4KXCIOgY@qttzw(Z?i&To$PdaH1AEfqCC_>$b!pzu% z&x-4M2IszNcaY7=16bE|x{x$hg=1x5zKrn@+3FKLJXypO}7>{~1&G)3@%IR`i) z@)eSzN#M1e9^A{UxpeZ!-;Bmz6>Evf5=r?Y??_)CWkr49Ii|b)Oge&46+f$`l?Ceb zdet-@SK?7_^{bMJPg@Az*G{|)WI|ot)a<2NTvIFLdYMvbd1ACutKtsCK-tr?DKWX83yW&?;f2;Dj{xss}au? zWcGVzHOyFbj^tH3U5!IKUu|?4hsnfy`=v?x?1r z&r2ThaNd%7`2+w?ayBL^H*;O<$`;xq$QL^@icl1on9TpDZu;+3U;g$UYC1nr%4RFrI#F zx+Flv_Qf4ISDlG?*^wher`eWrbGmMbU0`D3^I}I-KwIdF9gpnp3V?X1>lpp;zgh5R zfGVu!dO&+W2%E`H!!fq&v`gs zq7WARA)S41euijn4+7~4t+z1cI!9z4lsJUkgwC&CZi)HBQ&2r)Ei5PJE3R?u&xad` zo5RzyLrJ+`7MVGR38cvu4{DVe=v$2z|`&42iPIzOE z&C+Cv(@OsnrAS3N4XAn^k0I^T4`)116ox06V-xG6RHpmbi4_5m~j z7SJQ=?gJILPC(@VU1+FT&CyxYxUTmVq%bM7%*WrS-|ob%LframrR*uAB~mmT`5FmT{-rH}*hK!fq|W)-TN+vC0KT+7B)JuXe3SYDtF+JZc(*Dj=&}E> zQbr6=H@H+gbJZ@zvRB6pj|wjOMD3z6&xP_wu#55(QwEMEhKgXjgP=4Gm>r3em-8Pf zcs#ys3ONsdBlXJIoLf%-T_R?6sFtXSUJ$d`(66wzBUaE#r=p_r*zeG#Q}1>H(!V^9 z@CZotL@z5q$0R^CPp+_Q7g)7F_rv(NJB@#Ggr3vVqB`%uTVDMd24`;hT^XmNM+~}s z70NYtKl>H{G#E7^OtAy~`;oTrLX_uCr2*5z;mZ!;T}Z{)?G zfa@RF@61kpB*Cnl*3egh(gBfD*^`^=X#mUkqD041wMJ$hoJPYb!vHk#lL?Nm4OlvB zJUETf4$QLc7Z-Pf_`%O)lXnv{ILP>;lXa6?6{xap*M^y50c)}v;<&}7)9Ch@S*Yv7 zn4SCHG;Zv8AwK)d#}M2#gd!q$bhBXyoMj_E?^+x|U#d_!;;`+ZBgR*C!93FxIw|k| zJVkOQ7pDi+*73%@gr(Z*qwSpyNeLUStDKP+XG8JP8*6KFT*_H)D!EDQhRw=hWW2AI zP+Y4s4GeLN(VD%yHlxNmHE-*fQ%nb>dIkGSbT7y0u+|HIm|2c^8CVheaKaZlG`5Kd zwpFs+`oj%J$<&BhOnsGsJABktX%rYnzji;+OcvCThq&HPPbeP$wTrw9a0N11hnE%J zxoajTiZ3RMDtLlXkP<-_ZJjA2j9#y8Kh#tkv$ji+S?_ zyaRfNDYb`LfMF}IVzYdk0{cFb`B7aY-VZGJq(zoU1AmOmZKBmNO}m(*xl+^5gmeY2 zu8NWIK5SDixnL~hRBWQ(Hrk#G29rzZPLHNF5ASLXCwzAOsA2(WbG%ZxzXykqo8*2q>m`$Ws2Nh4aGL>$nB+}1 zIIqi@%9Fe_P4kZAYMY(j2XlUGX|vPY-reCXds{P}1#dckTh#~Lw!y!Q zWz+otJLhYFBC0I8an?=4B*fkLUVi!a>q&pU^BxwK7gvj;fRbxp9}~Qyd|M%f&n7E| z;ZpT9(;ce>wQ)J7vkMW>R9ubE7plt{iWVw?XG9~UNStn*b9^GcGq~-i9b&`_b60c-oAK7mUtm#C;C|km#2mJEQP-;{z2$I!{bV#fDUFVsViVa@#fG%kKGCbX4 z;{mIV0o}HoWQh)MSl|lx16x&47z*|A_|em?@@VWdQBu2bC}~$ zEWjpWt-6mUf&C0xfHIw2IOP;E0657lHZT%)LyF?}~!NOsSUgSv2Q zqHZ8j<<}B$#lR#u3B&WdDLr2&^I0x+c-?xe@P;Wxy-ZHid%ltFL~9_g>+Zq0IswBy7V zFP*+PE#;$v7&N+7`S3yt2*0gnTyKY`7?d5w9NofQQ;WGZq7j!9giqdv*lVn|81P>k zo-=$n*BfzZIsJ`IzrjV(Ob9h+3^`wp@#(d-|;FwdV1 z2sp5yW32Y{wNr}iGAz$$_cQ`0y5fpn`eED*T~uu^?6J)8NTKC2?~V_@ll^22FC9E#zB@jMd8!0J);wZWK z{A_!@^SfqIWe*dOHM48j$P1v}z7+YQ-e{-;xD{TRjy7Sn6%G$RpaQ7;6@d zl5qzKb2(~FBGiap@fy+XD53|?^iLimOiow&(i%LfcWg=0Gny(?Cn}O7t(@k>Kipll z9OY50hq$hi@Y>C`Sl}tSDJ4FAQliZXUvb@El%$JJZat7z_7<3Fj9#P3DBH=dK3#6x zY*(+f6)`EUdwecbZJh-@q=_o%%&3DtPTng>;A!7wHL)1iTE=>s+Fk<(MJ z_KsiMI(F}l(ofPi=SC93sUTbX!o7Q%#X1>{O--AkuZJoLWVBTJm?n3zpTXnxpV%v7g4d_rHRw&1gb$EA4_X*9Jlt?=*VrM z?JJ$o`dDicisIeo)00iA0#~e^nct)l({f65%_SwBXu+3}d|~g-D|qUbZA-A=`0!}m zaxo~VW10^c$qc@`JZipF3Bq3LWZjjca;zx+WM@E`ob*wU4e;NDh`eaT-7Zcyc&&z{ zVzMZeyI3P;J@=EL8bx{am<+-xty1lEshbd=d1c}*Yt=77b_Gohd=t)|J8iZJ#xJTj z;i(OwBpfwZ{e#9N>1nb*(H4~j6D4Dh1>I1QX;<^=%~os315&KH>UBqKn>0ZwV>^T& zjpg>N_uBm)2UKg3YuxeadN?k6m9%h3>gEIg7^PlsYG~?XF$|q*(8lMUb82wj7EnwV z?qt^=Z_Mi++g8h#3JVBTjG@P6OXQXvxhh)qfe8D{?93GD9xjzgoar1*l~qzaBLD`1 z&VfWP`IxG=?~H3A8vorznsK~Y?}F)<6VVI)AoD$Y`M9FeLH{tx=4=!U6r!}jd@-3D&kr zTWIcB871sRsxzKR8u$E!p6h(eO(oZ(FFcm2MM;vjF#84iKy%3(|C^bSal&ty}>%Sm2rh8x{5Uy3vjhzVBl>MTKD>*@xt+lbfi>& z%7QPXkxJgJR3*P~h}LF-Rxt<#_6eT9?-TBNab#gDKW?02dYs<}Cz5T>{Cele^8Vft zLAt3e!Ag-v(N&<;k8gU!&a_AUUAk)jZF~ywQIR1`Uz$(AqnuO=eK@e$_haf5OEHZr z$T#Ub$QQ!zy8Lg_Wp2L+YGIa%I(7yj23!RfvzG0YjbcLzbHH-ZHnb;WVBpiuK+wup z{d!@Wj*fi19iKR;l)5_|hw-d+!q}cpGyV%3XLKZ;i|`2I@>sRv12<4=oE4TUj=_?Q z#g$FxW=LAY`t^^-+Q^9vbo2f78!LyKLcrOwhpCH7!Y$sh!|+>iv0up-G48rn=uUt`_pn@-1nI92DE!$Pjjx8iFyfu{n zfS4my`hfTcx`;pg-C+lZ#{i zAmo+l&{&dc(GbP6H>{vMpc{ucAWYwWm~{HLxCcbE%%+`@s%Zw>7e6g8FA%BeQ1=T$ zQz&%1|I@wn-rF(iyC4YLk+_B1p>|rY(Q7nskL{P=t;Fbwy6O=(%f#uFwfy@sEPrN~*X{%cf0rgm?~Y@U zo~Wo??D)}5BHA04!Z*+v;~TUV7_fdH)GW?#uy4{e-^lLxO%gXPr$8?+tcZzg%f9~8 zx8o=w9y-BmgXPdW)we=M(6R@5tBjW7Y}Jl!skv2eI#o@4+WoaR$T`i(K;0$4<;*z7 zwrI>&+;w}l5{USzF+kNzKS58mK#d8AZyhl;>=BA7M{6Hcr$|oE1tPD+B732^Bf{(a z+w@V1l>7uMVBg7uZX=qdISgUc%J70Jn{KOY>xE@XkiW>c!Rnsc|9;Vx&RYVVJl=a0 zcUDxJLX;jLZ+WGAK*n2~K}Pt!?B)$qyUO=WVMeA|^otMnM81pxS(8)}Hl5;asOz44 zB6*i)sl0N!FsEjr!@EJt$ng2%dvyW^!kd18y-yXBk&!VIdezUhjN#eQCku`(cmadK z_CZ%qVDt##t85~T7nwCrn(yBF?NJk|1}(fi!_6^%X`wX?Ulv}9_VCz3k5NvO4;kcz*hlT6g2oLVowIaOPm zqUo}DJ=A4$vWT}QO(@}T$taL=E;m+*WmJ(FjLQ)9wh~Qc=FobYG3XWbJdXdo;v+boD07tEnEiuA~k)(g=Jrwp2{IKwt3h2D&-I2BQK{C3#CFMVa*&yLzd*7!z3vh%~xD?5_r@B^syJhFRFeRrl?@p98to zLXV|rG`oNSRpm8Se0E^2(YnGCgij|d!5GnG<0zn%&m>Me*!;D6BPtDr2-n=gW4qHXgt4Yzwon-9$x_ z@vRS+$|==}@oc)b6cX6WIVTf)nvpq7(u*WuQ)#yt%;5wKGIh$WwGrzzbO#=Yelh=7 zF%FjBoqOq$zoJu@`|YATQZ`fUR)8t5)ArVRKmOg!e4wWy8((1G!JE%UJOpZE*xwrC z^!9LR6W)+YB(@I!iZ9+i#PcicH@Pc2c{xs4;gP{mn*}NCgRxjejUekR=NdvlZjf!r zS5md^wl&BW_vs8Ze?u;bi;kEzF(b=5yn4+QVDg~4wdu?N=JOGzkT(AC@-(w~b#0^w zn7BxxMLj*T4X{CjK7Ju2(qc(#kfRwL{kzpEhPhfGul5#$aL6#fH=5__bo6G_Z(i#4 zKUSebykb=AC`b^GAxT^L-5SEm%AURW*#ugX%fi1$F|>(Ja;1=*w{5yL@FU=(`UB~C zZDuObolMYLEm{x??!Zm1QX3OTC*4$-7`sjwlk$faKy5$Qz^P`jR+M0^9dtXIBfpV^ z>9?M7I;dqo@$G)!t9vxq5tSWUzAO$xD4E5EniB5%bV1jddr5R@P1gA&Qo0eM5-Sl9 zyaI38ZKZg|4+D7&1fV;f!dIeeJRI^K=Dz3B`qXB!O1(rCE87M^)n2Ha0kgV9fJg@o zEURX>_5ckGRKC;b!ztgU=HJJo5G~0W+9w^Hnwipdy^xalh*!J5-myGx2$TWKvp+mL z%>?TgYtLN%aNDza{`B;*d{w8vmticUTAV?%kHq{*c$7(_b<>X-&t3Nn0KziuO_a-1 znJV#w$Gzjg>Iu)_cbu#N8{ez>I&=8eRq6IT(h1c;dJ!(5aQ*r#W`+DVSx2LfX_wlkhGK5O4U@~!&nKv8$7s=e?dt81f9Js8Oo7v8qiQOY!KF1#J zs7tDt&lqPN2SD9wG4|{-Rbo{0sI%m8K3=8UT0;&7PSb^v=qNs9@yo!^(~nluapd>~ zpkA_nc7ihk0pT0Z+m~f8!_LQBDl22|&sTur;3Bep*?P__o@>f!#Yo0`kb*AwHcl)H zqt9E{riLL`ktAN(=wDS1s}$MFVSW>h$8)|Du z%|II|=~xo$0lA|89)BmR#?|-Ghe)kQ3{w)ZZBOCp7 z`|T(N1nQS6zY*btjaC@-ex&yGNxbPZwJIg5F4hz9*Q=7O3}IP}|O6MIMv3yBaRB zxFAeZyn%MECVHKleJAtAZ9G~#J3C$_Us7SWdrP2fG&A{Cie=z%Q? z?Ts~4O&p$EpG2yd2px^M5kJZaZ_yNN0$KGD436*em)hxmjG@5L4 z*`IdRCyl8Z>Yz}vIaY>G%$6u$jY}zzRAV~>?Q(#Z>I)dgA-D>#iJ=2Pd~d|(U~Qzp zru!DO(d;K)@>3&!=5-G0fy4E&5aBep_2^@^qxU&D>nSH%z8OtzgHF0loo>niLsX*0 zrMpQb;vNNN#hWT#tKmqXK?OZ*S4vd`eP8~`RAMro0%b)qbxlS7ZQ)$-F3eTXW#+sP zcK#|KFe+p-Q4;|vT1efE=a~iVI8>@e=g)oTLL9i+{A8+wO;3|4ckBM};XbEFO5;Z- zwp@MHCC~kp`Tf}@@5`Hp2{5Pm7Rgnsx7(+bG(=#h+ZIFsTssQcl(2Kp-(FSk+uj@< z!{dnGn9DTFR?&ND!afDiQ_!jdri6j|4I45#yW>$e)SJ9&y8=kiBy7nH2U{~AcbEF| zG)cGN2HFDEo&`~6wmdI>`;U-4cisAM_C-c3Ap+1m2_=00trq=X(OcK9r(Ml%VDJ?a z5>h0JkoI&vFD0%sWBR$;ZP#h%&E{}YbFye#4FR)iy&j z#9z+YNTi^{5A=!hShabQjwUMend^pCuwD4d^3B!dVi`F*PY>3|HUm}6&mrn*+0#>H z8T9xe?*TDRVd2b4;LsZ`F=z;^Tr&gZG&MCrwOp{tdwmZ!)a00|?Z&QIh$rHWj-8&F zVFHY7)*AFqIig_Sf+asw(DssqsC_|d7)EQ|z1*R>r5PnbY3ja8KK;;gh+mdMDTY3b zFd#$NU3?erYXd~3A6-Q+owK5%b|WHl+f?;AM2PA-K&jX;~ zyQU*~EGD{xbpzw$}q*pK=3rjO9Dg5U~B^kti z?{MH)M6`3iblI>DO=28-RYUZei?Wp@qSJ4bZc=+V#1+Fh>ewwX>{j~5#7PM9O!BD{ zhJ!i@X#maK*Ms|nD&Wp-{QH%P{`{(yCU@+1Bx%r=u59SN|gOHa? z9i-`&Pf7l5w%4Dig*k58D=MhZ^tbzT%s4+XI+l}j>FdnOilWmY9Za%wdxg07-#PGU z)18y1Py_t*O4vQ^BusrKE08l$ll#@$84P8&N6;=1Q^TLbeoEKYOX7TS*)9{fJ&5g>}T_e=Kx8lC>_MoANk?hL^jm8|1K^C@xnneg; zAdoYW=v12Fc16?SoE$gi&i|B-E-SMu7$eqB3M9KG2#g`l%&{8XPW-_RPm+l&!+{&- z$WdnQ8UH~p|K~m6|GI7XbtqpcK9~;|+~>D#>`=yL!TdYf-47o4eW868!0%J;=(7bP z@3emI{0~yhe;{`&slmWZjQke2UudPnk6_Foe#ZL808`Ukm#y;MI8Qt)xlT|o4D9oQ ziDLfq6Wm<#>IV9QAF+|OhEpOdF+R5bVV&`Y7PY@hVZZxvctLgHSd3Z7j}f7 zp3ZA4=|rbzONL0Lr>8H@6D%S0ZioMAvxRzu>E$&$2oBLzkg8JAPH02u?!X1H8vlKz z)IX!Ez_{mu*l_d@eKz(*g4Td(kz*=NO@}C7J-v<=rv5c5mF(8=QG

|I-ru^b#X= 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%0Ah8bH^W?meWX` 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�&p99@WX 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

jyy(o~XskHrgDbXBx#e)<%UJ%& zagq8b-j?v^KtGSwxwUu8p}5u&kuSSYW#2@F_#9d zbjyAqjbDhtEamCWY})0Oj&OJ-Q_we)h30@p#hahoes*EVn>oE)1rd~CybJQfFT1G= za5BhZv$gAK2FX9fe~v>Zvv~+X?OPJZRD`%yJ`T12IUqxLK^NGkvp zhhBJBrLdQN18sl5K*uu;4l<|Le)nWnnq^AFahX5*hGU(7Z0J`M^*s^7>mu9q;J9bu z%a=R1BOR@pozKqEm7#byPqCk7Md`J591 zhhZ6X{<|%qL^4SX`ggaaYVMQ^U7on{e=^y*@t?s_%2Tk;GrUJHzH>aHdb%^Mfq48C zc6|lJaG-$##gRlEeu^w3 z^K5vjyIIOhE78o8(7Jcnk_V_9+}|D=~|Q;ZYtyQ8hzK=t8Gr~0&S%UczM;!z1!D5?|VN(kpqy7$D6as zVAP#A5j4&MUzv=;m|m_kom(i3K9<WZ=Tj_@?; zcMg>x1AAn;aQDn3ZWg`fw`8${h9Gu}*gCZrbX!{Hd1;su^8p6-lkL}pTm}!LXf#G< z@&z_ldJ=|8tNh;wvv?y{E_ZRCBrgSi%P*5|j>Sdz7@FqIDhXQ-k>hf^JmGGI<;zTS zvBtu0?@3EFqx7P4IsEH~RfdlvFFTOh0Y|75Z4m($IzE7AJR%xBet##TyQP!Mx*2z)Sc^=jM zR@%EFRcn|ghV_70<4Jw0T>#pz4e^U}9vL+OHXv^Tx zUZ{~-o|GRPg3r4FYR(fZj0WhCWd!28yehnVGB8wKoz8%AMa| zoUQfSBEuimVGc~N=2A*eRhl9X97M?Qr=e^u6-J<-mQ$z}@T-~Sj#vO&6HQLw@ccNn zQwVTx&}r5FkWZKHp?kuYz-EX`!v|D=l!o$Fx@o*iXf_(=P;1wr=Wy}C z>ST0tk&o7&#~jl2bv|bc{Z-Idt_Q;RXl?(EjlWm^hsMWyzmB@&phGDN6iUVKJessd zsau&`KF^*E!eO!tLaS9{pP0FM%o?DTcD+f=T_oynAdC9d9@|`o-LYW{tysDx{Wq<_ z32O=ai^0TA=WcJh@K}sbq-uVSYmu#1J$Ued`ff4@tK>kc)U-S*1mzj7Fkm<5&G*I0 z9vg*Kas+1R3nZa%Pnz!kDn+H~jhZU5Z0_|k#^bIoPt6@I%&ty`ekqf0dAy+t4&a)D zQ4%%RWy+fzl?r45qL{&+b{W}AiAJS}rhr}LZ6`fw^ke9CGQ4~qb5#k3zUq>0 z*I?TWN!_Z!so5VXR2ikGD??j!`>-A^8AHEcmxc;-(yE44Ts)gDtrfOJ3s2|@S_jyy zAZ{$~69xrFLu#c4k9v~0WmwHR>E{;O&Fii$i_Wyk<9e@Cy%nE;*@RJ##z7Zq#o4m= z($)|D1fbk5xOmHF{-P0WgOHHP_s!Fn%{wQah;*hWDd+6EBc72-fv#goflZVA)nWmg zUx_@((=Wz~}n?WgJKQsB$QoCHvRvLsi%C@8+m#OL8soC>>E`Qs66)t!6 zGu*M+EdlM4_34U2=YnSsj&71|)Y*G2Hnd+e=)8Z9a%Hf!M+@lk=)-FJ4Qk?Ye93V4 z^SisYxrgO|ZzZU+L~Og<=+utw-}_?u)#^V`I!;l5bM=TSWyJn#tlKOPPQtc<-}>WV zKf%e+UwN&rq8%_$gRV8E#Z#dQMd-v1%*jmqic)Oe+HX7bZjB!qg=`s}fUBuZK%gwG z6XA!Jz`!ObDP90Nt%n=N9B1<<`GuRgyY@z-au`GsHXL3XE?WbgH%r~D!1CprArJZ)8she9ZpcDqp$t5fA;|HK{aByQoaqFTJb zo(DD>OYAf^9KvnpfCZVWG6;B1TY@J5AtY%YMpWw56Zi6doHw)sQI_x7@@R^Nup6%S zbcHyjTU2Q&Ia_0&sr^Ju7S?2&Dq$euF3Lc7d`9xLXri>mfiZ`fPMagS%_i?Ah{3Oq zp~fL@@m40MT%c+M>1rsNe`9hPvTX!;OVA?4`$C~(M6-u_oayQ)iD#br(gUdp-D81K#_KVAw32X#CLZ_^dj7Yc)m4 zFQK<;;kxEyLq#ODA+;->{*4aIE^eaKA~)Wr!qYDK0D)XHq>?8)12N1SKc0E*6LP7? z#E04?egNvj%lXSx_jj3v-j6T`-a35rxZEb8*XK}DFr-n=`xyr{O5o8nTRY6I^_z8} zN#-ka(-@rtYrI~(rLq7csEC2G($N5CbP4G8Wg$FObc>bz-~B<%LZN8bRE%9blRfUO zeK0wG*6NF z;K@i1>aKyw<-8TpN6)I-W=Rc12HnM!1)*X!i zcTQ!-mK$YoaWW^hjJIAVuQw`=;(RS8?lx@Od*|Sgzy4WAI-Ha$U#%?sG%r)H^6TlS z(+p}j>}mluM;4aIg*|T(9A7rX=g=%4XwKrkB6ZRGT+;fL<;1UIQwpAVKIUi>j%fBI zy=>frw#t3{uHX<=n8F3Y#z55@;1P`T*?n#y&USEkn5ISB9>q&muw6*qfxkpZdQac_ z<0x}@u4Ksld-v8Zi9CLtqhkA3X(tutqaT+v_z{(-Yr5rkUVB~~Q4#Ri#g3FX-4yb= zc9U`LaEnIg&Z(^om589aWZId4`@CZUb1mIAj!fctUFo-{D^!f*W^V}rqYnvSrZJQH zf~s^98eA}2DLw0XbDvJL)L&4D;Pj~pT9XsnP#|VDoW=zb7XgUpPe#^^#t;4s@3wm^D?cfkJ@Vl%7A`ru~uXVK)>!vVsc6e=`xhSi5EvzhchsB_lue310o!%e;3 zGG9G85d|4pVcO-GYEJhKolf=83zpf+^`_p1p7g*t)8a0>dJp&WDSuD&-AnbYtE*Vg z@plwhn3gIP1e5TnycJ*xyQr7Ti3Xi6lD36n$|2{P&~y@KqX0#uWz^6|4Wn(P>3 ze2HYfy65xLux;A0VGErlZvBfV2Kv@VnAl&Y7p^r${1^sQ!0EIeOsm$OFs&veD6~d` zT2iQ0e^Pky0;A;NKr^Evl4V%Z47jcP;+^+Ks<***3dfgTgOuuDAcl1SluxSrha=h3 ze%tF;KByNgq8?(bgQLjHhzkCM+)i4*oBg`^ZO1~6@h$)bPIMfDekVOQ&}lh zEEpv4O9z;QjYb--TV_n9wu0UB^^w zefoN%3FFhbwys9Y{5lMnV<9P1H)tc3r||3j_jZ>*Zqnb;f{Lv7Q+*8d z1=5YSH#akp{NtDm^}^EiH%1F*f3DCGNVkVP#}`4l_qAu|Bu)q;uWhLYQPNdJPKO^Rw&+h<}@glHUme)u;l@!wFAx2?}!HQ@cP zs@wH7|N0pIBDdpok%m@zKvZh`|Kn2-_MpKisX89lD0=e$2a z#$|s%+9N>Q)J$rh!%}Lne-H44!q?BPOm<-i7SC(J>TOpVDJ_G4g9H8rCDalE*j!Jz z^YU-)f*uwq4f;xz#j0R5it`#B4++lj<-Std-Ma}rq6-dq?F&bKckjNye~$mu$cL)- z$=&9ImMmu%C%yXmmrO%{w3GkdAq1+;R}~3BL#qVhef#=fZ|2<=DOj{y-?^26j`?4m zy8k~u1n}bC|LYsMb59OziB(Fm?{~r0(WAWmET87yTKv63{w{a_@9q6LA^zXf`@g;R z@*3#l{>}pUd!hbc-zHyGC4UY)EPsiet+! z5xs&xmEiyT0-f&G6H3?QCH~hN`0W`4-qB6IlO8Mh-7qmwINJ3CAb`R+0T?mfB)6*pxfi6#VLgiI48FN9<$vFU{!wnPe z?%y6HLXpLyfA7zKoMazfmmq=rf$Kz+Exda9xbvFpL`9rVIt<_?$Vj*&1 z;y?w6-lIvY8ZfA`$Xs@!*vkOI7WoYpllHE`2yiV_m%W=fWOc?p^MzKuM?~`KwVml< zwTuC8wli;iwHiDZq&&EjJGL#Txi)CIFa7(4_`B;l_)vx&DFlDstM~0*)m6*_2ok;P z7G-taBMgp7pwbtmR#?%(PWhEmX}w4-)|e?Euw=W*hB$9awmZ418s)pZu-_a=uv(El zjOBGCoCagJGWa9RKj*za1c^j!&pgdnUs(Zvw>d)tnm4ld*}*M&3Koc#7bi~Q(5sX7 z)R0;>ymrBL5NxaUGZ~t-&iUz^$MT&osImkQ7dfE>+zxz)Ra=OSVR6VN8X=eP<;m`i z$|7H`^~R7%mPLYcU{~>Co5^8xzL7l!H@nq{xBOnMy*kvAH;LCZ8Xs=U25ga*rOuFu zD0_?iF&Q%4#T}n0hx6+{)n6XHXZnP1Px%_-s&@yt|ZD{v>7s} z=FFr2`_)6@b6a7(Fp~akbDrA@2T%RR1c28VkgBha;Um_dCyhRj<-mOw9ZgM5iHelD zykn((QZ8Q47uKaP0KdNo~+*1{Cn$BP$v~fbhrInOx1dQ^cb<5Wu%pR~XPMytLKPVmMr49&}iVp-{t97(a*TWV`{zjcpwasX{p^ItW z1dtOb$8&9nuCi}mmZOyY@#~cx;9}LQ-JE0RwMP%94k4^f8ZxoS!UDcL5vOYtQRWb~ z>O~6p5;qnyaMOTjj>>W4|ux5OyIe`c|}?6s(bJJU?nY{H7D1B*{GNN2IX4X{Wd_R+HT_= zu)U|%pKPUQ)nBhD7Rd07In(Pl3Qt|bdLJJmc>22!g(-Ep+(bn|uubIKi}gVYc-Atd z1R&9PpFI5ebMCbmdB~r0K#%rztr|0EB}tTSNXq}0tqqO^{Z#j$_JI z8I@x}V(HDCzywU+IF?hC^o_t3QjYpu+HZeFie03cEpPL*FMfCDN7x}E8YN#Q5nYb+ zY^5)RBa_ktxL)8ao$W77CYLoa!DASRhF$8bFUTTaLA9^rG#_9JoCB--x`}KvmzhTN~42=5!LqVg4T9ym%o@OiWC=Jn4ul_zJ^V#kuhLsq171U6FzxTI6d1 zw}~PX%;nCw2%Dw$2Ek`m!=VgtHE%W?1}(+ak0=g69W{ zSs(9utOS`Iwcta>boexC?OvT)VFd{P;5ZTHgo`39j9SdyqK6Y?g5?CQmR;ic7U+5;?TDgtxLUoH{o#PM3`H z+qhI!9YWW^klXI6l9}5?A?u?6M1`{&43Yzdz$k{&VuD5D2Oa#kSSZ0_%tJ@pCj^@T zYs}6}9^^5r8l%QG7!Pn5w7&zgLIULSD8l;}is-DzYpnR;oy97K9?Q-i>`ope@t&D> zRJU@tQDWS~9*&Ej_GS{%EK~#>cK#j+x~;Adr7;UGBK{kldXFUKJoWqu_px$1kTvJe zX2E#k)miGf)EgCau+k$0;(+8Yr6Gq_Ge^2?ms5Pk31;)gM~c~yI_yo3|NTw=IoWTE zF~MyyCa`X${tLy;mE8i1vV}IFin-T+n;X{8!BK2rTBZ6$w!(p~OdaDQ5K~7u!XIa2 zY*GRb<4KTh!mm3HlG?R)RW<>KAl?JQTP=srz(A%MW`n`p*Q9@M+^?}BubGhGJ{zTJ zZo}%{S{(d(svnUDw&#A(I-Y$eL3jWh3`Z47|)8v z4mx%oKVxh3f)2Ds>W-^(HA%?il8HDZeu=EmGvp>MP~-(I+(`RsD7H%mf z&YxhvJ*CDg39=jlq=AenidylfpwDA#ZXre5q<~7Lfz%esbG5DVeIAvlixC5czhjyA=QI{Jb9wgnD$|gy|5Q%jqU+5!WWk(`a)dkBK=(tNqPf1)Xt0G7zJTwLQj+-B(Z=r;Ia5-Abo-g*xI*%L$783_(_?NcH7y*FjS*P0v?AA7Puf* zXH+`-OnYi`JqZNnvK`OKcsL$xn<0&QxrGgBFSFd9h@^3po~XaMvpseW9Z$yRfUG7W z!=G*pFY2tf_lBmW91Y5FuaR;~yY5Naa@xYgclV)j!K<*FFKPARWD>IAVVrR?d$UOkl{w(a%mmdsCvlo9s+r1kok`p{r~}_jHc$Ec;+R)e z(TQTFOCnkK8Z(6BrsZ<_TG33 zoFs7s1W8tehCWMQy<*yp&Y&&X^%DGa(XF;(TVE?h#h~=yP_z8HD0tLnq&T_)l_q1P zEbHsu-G2vz(Q|JXZf;|6%U`JU_a9<|W@sn9D;R;hn(qwwDX?VzM;9o)>@G{B;RHhgPt!%i>RG_wx z!apl}K-z_4y3Q1){7oa@wFbZWY2y?^6xv%-sozs=zrwThv(q&y`+Z8IU6K!O5H^FH z;lj>Tl>!Q1dGXje%CchC<1M0eiD*&`2}yauxQNeAAlf*6MIdeY{sAj>l(~&aAVcF=eSy!IGGfDV3C=8Dut^ zliggmpjhkF!Bo9&t8i@b7;?ImrsFZ4en1_~AOr5)NWVPY8Ek9`QgY=DL)sdethT2C zZ{-p9_KvZ@E<<(uJ`*lO%XF71iOq+|AIOake#X&Bve(eSyNEr)zvp)X#- zMW>*pjv%6N3rOg2U(&{v1!zJ zchZ^GF8BFyqz_NXv7zXEUxvNp^UP1yrPr737|REAm+v$yr}NV>3duCsR?A{BfB#!e z-MhS7YAo*&EB4>iSYaqQ*b75>MFG6?pSgtqGy4G_pqRzNJDQy9bk|k3*2xjc73CQK zx%WTgzy4IsYR1?DBmjejSGFSs*^;Xv)Lj>tv+8}c$UB<%l2r&HZ$1_h@>0^@r2QBM|0gnGSc7?zk`;_bA(TMln;|7&uuh8*u0j7%cl{f)zLOs5aZRf_}q%(1?Ra zV|?x<(lvZW?YEe9sqR(X%LY2xsr=Fx>c9F@Thc3QYRpnv0;91V9UbXL1gVe%Ju7Rt zkskH$x*J1XT|2a%f4UcDe6cyRb9QBH$xI68`!9Vjy3)fdl?L1B#wbe9I{K6+DkqX8 zwrIEDtbgPdd*@z(Yd zLjY;<-m^FY>RnxCrl3AE8z)jlO}r4vl`J@(t!!(X~v zZf7!>?YH}D%Ue8RSjf?a@Z_T${qJJEs@w_>|Cc=3V$Zo;SMV(+N?Nj7Up|uw)w=75 zhyA$?iuHMO3k~|yIY#_Rfl3avreiA_xnz(4Qa9t&FN~dq@)SfH>ZUkp9!G~oWOm;( zluy-hm!Y>MU(m6ASWO`l!S%F;a#Y!}8&p(7KO-Gm2jI$N$1=!V&4fch7`v^a`b;ft zJH2+|X&b|BU1K{xM%8+O*c!J5iKpd((d=3N|BJD&4vTW#-Znr$lopg!q$N}uh6YiT zl5Xh|kQy2UR6t5vy1N-VMd=zEqQCTjv~gJkxKpP#Hh1_T!^-(RAh|9YB( zO;wNDRQ0z0A;0h|;WX49OpCs0hk_?V0dC71Dvep4idk7%$%FxM%6BY)3n}!Nha%zi z=cQJc?t(BN5;>`;U4s#J(8`?mM4V2uEo4S*0$YO2fNhe=(fyU}Qa5+ZFdE#FXpk06 zl>jzOeW9WVAp|~%2A?Kk5}$Tg@J%Sk5s?hZ097`6kq zmkIRMz5s2Kz(k(thh?50${n!fkzKg`6uizHuW;b#fZ+jLiu-MeXL{b<|2E`o=F%0% z$nMteH3jsGwtrYzI#&d~GKTZvL2PkcT%@H-$r34Yx%-c?Nq9(LYoj7V=cmIK>j|!7 zSsFsct*lnyDKoG>12Y%gQ;$;+QE=k!nAf1XQ$^N#PjlGx#~IjCo+QLQC!r(5?$5Zf z#us4{tzo6@KPRk}B5qyn5PVvp>T+G`iyjT`m2&fu7%DG2JqM%ibUv|9w-j@q*_X)x z1A5)vPb6AR7WSvZ!&=PR4jSY|*kc)7k#msnE9YugANpUo4LsZ{ULHC6S0MUN1>(z# z+9tfVfg!)oN6CkH+Fr)zxRF#A_f77iazQUVN4%re<@E!Wld6|d;2M{ z68K?w5+@bT-Rjjg`#Hne-{v!`XMPTZWuWsx{2!-7{GF$6;O{S^YiS(~&BT|Dn1W%X zOfT7A)rGG*+TJu(?V7uQ^=g-54#LsK+TYOl+lfr8OemuiiTF#!EBt%v*RHj-u5nsW z4f$zLH0XBRD_5ADjW*Y7ooU}|>Fi`+kg1y+eWbgX!?|bg=^D;T!4IJ_0JQWuWUGqDSW!{Qgil8p($H#ZP0!dd;5>B#;V2$%V@DptgQoYe(X!xgQU(5)zTu-`XNx zLZMMTlFe#J^3eIB4imlweR*pv;yY`NVbe?7-*;(i#2S)cML*51Te-*Yg?M(Glz}&2 zzY*pHQHE-Kom_cb(%I=X7s|{~za}gFDwWhelof+aFGy~C46zF zm}i0?p>(joguF(iZ=&W?tX3J<^^kG0(mHIoU^)p6?$n?sa^S$+R==i-WZqXSRE~HG z3P2~8joC6q5DQP{{57SHSgyUZ#oR=aGn66(PLzAd2HVFpm4zz!i3LK0BtC558!%@W z{KcvHR~YQC>n1!@XXT4u%j4g*sy?b#)$f-a2em5xiy19+B9YT;jka>sl^4Beg8H8R zJcWLkb3hdb8q20tLezkBioNe_?bKcQ;bebRepQk2=l1axexWUx2CIpIiI>sCcy!VO zZT3x76V(~Sn7&Lf0BvgJNBQX4?0q|$AJME!}Eimd1{g|Vioi}&i zv0TI(`}ZDsiZ-Q!)QoBFp}c1s(_%`%yOz1CP*a4@ZOe!sa|4!nJ8xs^=fhI-e%y@e zAJ81^1c_#T(|#hdMi_gI9JlG<`%pURoCAJsZ7W8nr?|AQhtS~S`>Vsr9N7v3fSG9u zJjNSIS+q+T7LAkl@?$GZR(9?@t1jm@|2A^<0S|R7`ge7Ce26i2`)t)KM(49-tcGI! z1g0-s(&{-H6_ImXA+3o0VW#C_vs>I9AxUQtg3G+{1yx2&Nqk!ICgB zALAtxtHOJlrDS|HdR+y=?nVx4TriD-lO+FQ3SNc^lO8Wb6SL!#n@xT!lVLN;pJ~OjSLxsKYvPf=9{&LR-5IjsJW{>rNcK&?WV+ zg7p09JN*GC!G+!p6f)NW(GLfE0`(6mkM$vH<~SASS|BRi3!|YrW7m>WIvl9w8Z5Q; zNs+lD1${X~=IfF9jhmKp;SL)o_D~$n{GD)Sd9V7D)tAo5nFlP|CE>2;t`;5OnJe*P zeg1lMylc$V%^VZW?eRdsb+0!g;DMtNC%pC;+bf;S3qjBPC7K`3FkUrZgO#v2G(j<5 zk*c~`Jc`vD7RjvkEP+ix$&HfvQ-Mk*SCwtdhd_XCRoNm2d2xPyYrx9z`F46U!94J% za8I$G4}&I`f83oAJnn{8UCVM*tpP94U96tc;Az zvq@ziW9mtC0OlH(zUk9j+{rbz)2BDbe?>19{uPHxR|J^jIuocJ8a27VW?Z;ks8txr zb7rbIuoI|YKXz-6b68fqYm3F2<~%lzV?pX;uqPt3<9?hz=HOi7y<2kUQFyK$KQt<` z2nchdSjK!&-mozCvc*!KVtsyMh;4mQQ0tq+fS)XO-&n1w`D~6D&hNFcQt>lHF*M?I z1d%6fU?!|>CqSfE6^Z&2G#xbSp@D}Bxn%-XH8uS9tD^~8O@3T&$6g_N61i2|UVwoz z2E!c1h4TXzt!h`b^m|_Gr(n!?tx+B?a$~$~)~&cEhQvB_ShLdD7XO%7)w`}t4m4e$ zTRokkXHgs;v!c$sOM&vjt3=i?*UhPO60KUh7x50Oz1oXEmra-%otUSFi|^i<`NGfT=2?2hj2+HF|Lw+I{oIF13mf0BMXR1w zuPd1kqqKl%J1`T+tQ{kp0@gpNq(0*u@|YXx5}MdvS5Gu+Zi8VA%TG>`!4o z!ruYwH7a1m9glzBGtG`!Sfv~>s*TA|6Hl15dVI^>88oB`ard)71(0C~d01=M4B+X2yw9Q<1&*CGMWw=(&3M00o;g%9eC_1`u z%h8eU&*NOIrmC}5lKVA26>*zSXK*$L!g1haTzw#q39!*6gp6+@2CqY-tEeunmfDX) zi8pQBZgJ?h?9l{u&l$MwEz6(ikFZ*{ic+Zhl5xwBS395I*c#z_^u(gJayv`!<4!oM zmikZ>?5sCteQ^(OOuJNToQpXl=p`AKdTS~ShP-YYRj8SvMF*XJQuC_cSjecNzk_vJ zWj(3O6bBvNJvz(lm;VDc78W%xz#Du_wAFrzQ$o-7-DL*?Jy>{J&R1rZ{p9rI1nKC3 zI7f0qT@TU~nQ;mfiy^eH!oL)-XWp5R#Bx&mavo1$FrE6*KPrny(x*RNswB7cOhZ^> z=oI(trOV|py($!}ooR#ieE0sZ65bVM=iqV1 zD~t=aH8nj5kq;5IO=;Rym6fl{m?9X(KJB#>0em@CoB%i+aLaMD_sCscUE7+QB?$3%_p=o;R}L-46=TSo)T*S{B8h+kLV7e3p<+cPbkQI@ z``Mz}HyA{|B|BP2oSmC?*(&5$C6Kiz6ln0*G9PGB$$8g2FkY45zdTdGs*{kr+6en1 z`YSW^%#xgOLx+c0r&a%etq0S|+}uPmyG8o+iZjP>S&(v~!DiH`_uRtYj*C~X(&IWt zlP6bfjlQ_#w-${U!flxfl<0mfBi`3~l*}n@_i7O2F(rlU*dNm0ns^~fz)THpYKLL_;tR_NMDZYT9B zjT!m(A0s0wbrurTwY5_v><3cLM@Ua8+-^^G!<&#aspwErjx6I+A=?8@=aao`UVpv{ zddJ8QaG}$Hj;Keui-?Pc{T;ePRm;x};y3Qd`EU^5yNu;7*Y9I$!T-Bn_bdvy|vQI~iqk`(Ws(ltLZ#lvTK_erKh{bMy| z-d(>_WYe4}s9m_ylkM??LSkp3J^MxKr<^IQFuGg;|GH-cG|!()lW{BRO<%vHT&OTz zFKa)LD9{Y|o^}u6QM66344g`AR%`yv|$F%45`_)@3#V5-LOOC4G8_8{ZhRG##j za`=0yFN9Y&n_oulQFny!N(QalE%)M&osZ}|tBqSYfsg?2Iu3s;i$mK`I-KrlqENRt zd;}zKurCjn@<}GEo&3u!rbP;;Ya`z>wOy2%giwd`k06Nr(HjWFM{BI61*O7y@VCqx z(gr3*STrhfIL_bHkkE#5$1US7mzg%tzrb^ayjC7{>(G~KhG-sN6{0etKW(vvj=JqH zMk$sUU{%|mva)DbD_V^my&W#aazb9%f>|TrzB2Hvwx0en^l-u2QI>Tc7c=~ZPdUA8 zo2^dP%t*%y?*pOIR*49WgT+pjK{8EBA*Z*csV9dNhry>-g&xmZzJ(Ec1`RrF+FZ~! zwm$qhwxj;V2h+O%{lzH+VI0nGjB|15Rb(5%;JmYdb?$ z)&jczg0#lQ0{AKrr?c>c21iOdf}NP{56pP@$$n}9b6G`|qkg$bY&D{%7)9PXU+~nO zzpQWBF>bo+Z0EK}h*I|qIc!bB7!zr%^-wa|%i;h}IL1>N?QKN=6#@>3wN`?Ro`;0LzRw@l1?och11fnDElPR)=cHf<;lG>XAM2_N z7D_{H<`$YDjVGvy7#+l{I|2U6&%ZZ03nn$>GXm}{zl1Kn1SO%r5ybSQE1IfA!vypx zn(h*Va^5VQjEwKr@9iQ?B=2Rc`zQr5p%kOAlUK#~{tySZhbn!34bkg=%Ke`5_f7o& zv^G@UcmEoSOXc}ap7ZyTzJCVB2J+BQ-@gbPuEwXDc-Ysdyo6K4{jyN6=3Ll9_!phE z%`GZn*+jwAQ(Vek&vT6B?E!kK6f%?Rzd!2!HB9j|P<~YV|L(W`=Z9ZG`;L+wc`PhS z{Cl}PFTuwnE?aQZQH#QcT9mB`Jp+0F_x`X){2V7?i48h~t31wsBn{p~fzS;tz7PC$ z{_X?74^uc$e`RkkdH2`K<8h+iD9$CUI`BpvA;Dw0Kz8*}|6TypR@y_&O6(=-2mBW@ zmGJ!~)ETnW&HL>4Q=p1Nogw7Bq~MSGQlrigYQm3}zrY^wH~-f^S4C9fqIhQVhk5a@ z_1zX~uQ(WgBKWg={^!LLRO(N?tf`9{c~Ao zQc)m8>YU{K?}hx=(B$XwjMOI-!=y$u;-+!w?(IY3LlhOY7)A;qcgu75CC0(($ z0e=B>U@ZiBz_$|OvEe|G4<%3=NrLX?q|7<0_)Zq;MBqZ z?s+O6eE+SUTeSaN_5ZS~|NMd;CHO-6Q*ruDzg7X+2wv&4#*kDI&}?P^Vv`7lr}E2m z|L1%DCJBgGyOPbpE#M2GKIXm=o^Pp_vH!QjUOKgGgKWYn@gr03oj;vpVgaS_% zNhrmxTuK_uUM@_y_x5vHPKc+r29>oxg?8OVX+AQsU^N6%iUHM!^7d4na7L{dVAJWz z#*(8{CtY_AbhUbc@-=E`ycDt3u&>uBXuEI}K2~Nb22hWuL+OTLeQ~_Dk)LqML@KtX ziW$k&PnWhqM(?-AE2cm%n;|Q79=>MX^=ynt)HzEY#|x=fdhL!PjQK z3w{U7fuu$;)iYNSwjfzN-zTWo=!wF){EZmMF+Ekf7RT?z_Rov)Hy3y?tZzrmMsN@D zKuRx!FSWn(pC!C?Ed=OxNGDsV55K~bIGM74)*5^nTn*i_TzHZg&Zd%ZvbSj(bQ3btX}+N#d__8%FG9IM{SLELaZ2-Y ztGio!clS_uM$|}38lrGC(0QRv$7Dp{VguZ;k zv?;IFY$RI}ms0S)F}*Pa{?17+#0Q6 YZDoQLlcR9im+Ur7#;Wx1T9f#xRe_meG<%nj74L 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

0`!@N1+~iUA#v!MFyAL5*vc6? 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 literal 0 HcmV?d00001 diff --git a/sdk/react-native/additional-message-filtering.mdx b/sdk/react-native/additional-message-filtering.mdx index 1da35ae4a..dd15eec30 100644 --- a/sdk/react-native/additional-message-filtering.mdx +++ b/sdk/react-native/additional-message-filtering.mdx @@ -76,6 +76,104 @@ let messagesRequest: CometChat.MessagesRequest = + +**On Success** — `fetchPrevious()` returns: +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771397762, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771397739, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-de89d7ce-f090-4e2e-ad89-bebae957b3ff-1771397690356", + "text": "Nice" + }, + "text": "Nice", + "id": "25234", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771397739, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771397762, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771398092, + "deliveredAt": 1771398092, + "readAt": 1771404705, + "updatedAt": 1771404705, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit +] +``` + + ## Messages for a user conversation *In other words, how do I fetch messages between me and any user* @@ -105,6 +203,104 @@ let UID: string = "UID", + +**On Success** — `fetchPrevious()` returns: +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771397762, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771397739, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-de89d7ce-f090-4e2e-ad89-bebae957b3ff-1771397690356", + "text": "Nice" + }, + "text": "Nice", + "id": "25234", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771397739, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771397762, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771398092, + "deliveredAt": 1771398092, + "readAt": 1771404705, + "updatedAt": 1771404705, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit +] +``` + + ## Messages for a group conversation *In other words, how do I fetch messages for any group conversation* @@ -134,12 +330,115 @@ let GUID: string = "GUID", - + +**On Success** — `fetchPrevious()` returns: +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "group_1748415903905", + "type": "text", + "receiverType": "group", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "guid": "group_1748415903905", + "hasJoined": true, + "joinedAt": 1749203133, + "membersCount": 12, + "name": "3 People Group", + "onlineMembersCount": 2, + "owner": "123456", + "scope": "admin", + "type": "public", + "updatedAt": 1771245340 + }, + "entityType": "group" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771397739, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-de89d7ce-f090-4e2e-ad89-bebae957b3ff-1771397690356", + "text": "Nice" + }, + "text": "Nice", + "id": "25237", + "conversationId": "group_group_1748415903905", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771397739, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasJoined": true, + "membersCount": 12, + "isBanned": false, + "guid": "group_1748415903905", + "name": "3 People Group", + "type": "public", + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "joinedAt": 1749203133, + "onlineMembersCount": 2, + "owner": "123456", + "scope": "admin", + "updatedAt": 1771245340 + }, + "sentAt": 1771400683, + "updatedAt": 1771400683, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit +] +``` + + If none of the above two methods `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* @@ -207,6 +506,104 @@ let UID: string = "UID", + +**On Success** — `fetchPrevious()` returns: +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771397762, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771397739, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-de89d7ce-f090-4e2e-ad89-bebae957b3ff-1771397690356", + "text": "UnreadHey" + }, + "text": "UnreadHey", + "id": "25233", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771397739, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771397762, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771398088, + "deliveredAt": 1771398088, + "updatedAt": 1771398088, + "readAt": 1771404705, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit +] +``` + + This method can be used along with `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 @@ -274,6 +671,111 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() + +**On Success** — `fetchPrevious()` returns: +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "test-custom", + "receiverType": "user", + "category": "custom", + "customData": { + "greeting": "Hello from custom message!", + "timestamp": 1771324022864 + }, + "data": { + "customData": { + "greeting": "Hello from custom message!", + "timestamp": 1771324022864 + }, + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771323089, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771323567, + "name": "Nancy Grace", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-5cebfc4b-80f7-44df-8a0a-5a760ffe5239-1771321973734", + "text": "Sent a custom message" + }, + "id": "25191", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771323567, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771323089, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771324025, + "deliveredAt": 1771328175, + "readAt": 1771328175, + "updatedAt": 1771328175, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit +] +``` + + This method can be used along with `setUID()` or `setGUID()` methods to fetch messages after/before any specific date or time for a particular user/group conversation. ## Unread messages @@ -339,6 +841,103 @@ let GUID: string = "GUID", + +**On Success** — `fetchPrevious()` returns: +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771413280, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771413285, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-3f872f7b-f581-40da-b6d3-96ebb6de9cdf-1771411970682", + "text": "You there?" + }, + "text": "You there?", + "id": "25241", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771413285, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771413280, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771413707, + "deliveredAt": 1771413707, + "updatedAt": 1771413707, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit +] +``` + + This method along with `setGUID()` or `setUID()` can be used to fetch unread messages for a particular group or user conversation respectively. ## Exclude messages from blocked users @@ -404,6 +1003,121 @@ let GUID: string = "GUID", + +**On Success** — `fetchPrevious()` returns (messages from blocked users are excluded): +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "group_1748415903905", + "type": "group-call", + "receiverType": "group", + "category": "custom", + "customData": { + "callType": "audio", + "isCaller": true, + "sessionId": "v1.in.2748663902141719.1771413265424256434f95643946315f45d0fd9058f55b625b" + }, + "data": { + "customData": { + "callType": "audio", + "isCaller": true, + "sessionId": "v1.in.2748663902141719.1771413265424256434f95643946315f45d0fd9058f55b625b" + }, + "entities": { + "receiver": { + "entity": { + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "guid": "group_1748415903905", + "hasJoined": true, + "joinedAt": 1748437105, + "membersCount": 12, + "name": "3 People Group", + "onlineMembersCount": 1, + "owner": "123456", + "scope": "admin", + "type": "public", + "updatedAt": 1771245340 + }, + "entityType": "group" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771412068, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "moderation": { + "status": "approved" + }, + "resource": "REACT_NATIVE-4_0_14-8de3c0b7-fa09-4b9e-b321-9a085d81b1d5-1771411979132", + "text": "Group video call started. Tap to join!" + }, + "id": "25239", + "conversationId": "group_group_1748415903905", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771412068, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasJoined": true, + "membersCount": 12, + "isBanned": false, + "guid": "group_1748415903905", + "name": "3 People Group", + "type": "public", + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "joinedAt": 1748437105, + "onlineMembersCount": 1, + "owner": "123456", + "scope": "admin", + "updatedAt": 1771245340 + }, + "sentAt": 1771413265, + "updatedAt": 1771413265, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit +] +``` + + This method can be used to hide the messages by users blocked by logged in user in groups that both the members are a part of. ## Updated and received messages @@ -472,6 +1186,104 @@ let GUID: string = "GUID", + +**On Success** — `fetchNext()` returns: +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771397762, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771397739, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-de89d7ce-f090-4e2e-ad89-bebae957b3ff-1771397690356", + "text": "Nice" + }, + "text": "Nice", + "id": "25234", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771397739, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771397762, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771398092, + "deliveredAt": 1771398092, + "readAt": 1771404705, + "updatedAt": 1771404705, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit +] +``` + + This can be useful in finding the messages that have been received or updated after a certain time. Can prove very useful if you are saving the messages locally and would like to know the messages that have been updated or received after the last message available in your local databases. ## Updated messages only @@ -545,6 +1357,99 @@ let GUID: string = "GUID", + +**On Success** — `fetchNext()` returns (only updated messages, e.g. read receipt changes): +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-3", + "type": "image", + "receiverType": "user", + "category": "message", + "data": { + "attachments": [ + { + "extension": "png", + "mimeType": "image/png", + "name": "photo.png", + "size": 2295572, + "url": "https://data-in.cometchat.io/2748663902141719/media/1771323061_1750099251_c35f9734fc20947b7456bbea68126f99.png" + } + ], + "category": "message", + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771322968, + "name": "Nancy Grace", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771323060, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + } + }, + "moderation": { + "status": "approved" + }, + "resource": "REACT_NATIVE-4_0_14-542c56fc-a1a6-4df4-a5e4-549f3cf17550-1771321970718", + "type": "image", + "url": "https://data-in.cometchat.io/2748663902141719/media/1771323061_1750099251_c35f9734fc20947b7456bbea68126f99.png" + }, + "id": "25189", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771323060, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771322968, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771323061, + "deliveredAt": 1771323062, + "readAt": 1771323227, + "updatedAt": 1771323227 + }, + // ... more messages up to the specified limit +] +``` + + ## Messages for multiple categories *In other words, how do I fetch messages belonging to multiple categories* diff --git a/sdk/react-native/authentication-overview.mdx b/sdk/react-native/authentication-overview.mdx index 9af99c636..c37a01650 100644 --- a/sdk/react-native/authentication-overview.mdx +++ b/sdk/react-native/authentication-overview.mdx @@ -118,7 +118,7 @@ Login Successful: { "lastActiveAt": 1771311515, "role": "default", "status": "online", - "tags": ["tag1"] + "tags": [] } ``` @@ -220,7 +220,7 @@ Login Successful: { "lastActiveAt": 1771311515, "role": "default", "status": "online", - "tags": ["tag1"] + "tags": [] } ``` diff --git a/sdk/react-native/push-notification-html-stripping.mdx b/sdk/react-native/push-notification-html-stripping.mdx new file mode 100644 index 000000000..84d39b45f --- /dev/null +++ b/sdk/react-native/push-notification-html-stripping.mdx @@ -0,0 +1,258 @@ +--- +title: "Push Notification Content Customization" +description: "Learn how to intercept and modify push notification content before display in React Native." +--- + + +## Overview + +This guide demonstrates how to intercept push notification content before rendering and clean up the notification body or title. The example below shows how to strip HTML tags from the notification body, but the same approach can be used to apply any regex-based transformation to the notification title or body before triggering the push notification. + + +This solution is specific to React Native. On some Android devices, the OS handles HTML tag stripping by default. Consider this example as a reference for modifying any content in the notification body or title before display. + + +The approach strips HTML tags at the notification display layer only, without modifying: +- The message payload +- SDK logic +- Chat UI rendering + +This means rich text remains unchanged inside the chat UI while push notifications display clean, readable text across foreground, background, and killed states. + +## Android Implementation + +On Android, use FCM (`@react-native-firebase/messaging`) to receive push notifications and route all notification flows through a single handler (e.g., `displayLocalNotification`) for both `messaging().onMessage()` (foreground) and `messaging().setBackgroundMessageHandler()` (background/killed). This lets you clean the content before displaying it. + +### Add the Utility Function + +Create or update your helper file with the `stripHtmlTags` function: + +```typescript +// src/utils/helper.ts +export function stripHtmlTags(text: string): string { + if (!text) return text; + return text + .replace(/<[^>]+>/g, '') + .replace(/ /g, ' ') + .replace(/&/g, '&') + .replace(/</g, '<') + .replace(/>/g, '>') + .replace(/"/g, '"') + .replace(/'/g, "'") + .replace(/\s+/g, ' ') + .trim(); +} +``` + +### Display Notifications with Cleaned Content + +```typescript +import { stripHtmlTags } from '../utils/helper'; + +export async function displayLocalNotification(remoteMessage: any) { + try { + const { title, body } = remoteMessage.data || {}; + const cleanedBody = stripHtmlTags(body); + // You can also intercept and modify the title the same way + + await notifee.displayNotification({ + title: title || 'New Message', + body: cleanedBody || 'You received a new message', + android: { + channelId: 'default', + pressAction: { + id: 'default', + }, + }, + }); + } catch (error) { + console.error('displayLocalNotification error', error); + } +} +``` + +### How It Works on Android + +| State | Flow | +|-------|------| +| Foreground | `App.tsx` → `messaging().onMessage()` → `displayLocalNotification()` | +| Background/Killed | `index.js` → `messaging().setBackgroundMessageHandler()` → `displayLocalNotification()` | + +Since both paths call `displayLocalNotification()`, HTML stripping happens automatically for all notification states. + +## iOS Implementation + +On iOS, push notifications are delivered via APNs (Apple Push Notification service). To modify notification content before display, use a Notification Service Extension — a native iOS mechanism that intercepts APNs payloads before they are shown to the user. + +A [Notification Service Extension](https://developer.apple.com/documentation/usernotifications/unnotificationserviceextension) intercepts push notifications before they are displayed, allowing you to modify the content. + +### Create the Notification Service Extension + + + +In Xcode, go to **File → New → Target → Notification Service Extension**. Name it `NotificationService` and click **Finish**. + +Once added, you should see `NotificationService` listed under TARGETS in your project: + + + Xcode showing NotificationService listed under TARGETS in the main app + + + + +When prompted to activate the new scheme, click **Activate**. + + + +Replace the contents of `NotificationService.swift` with the following: + +```swift +import UserNotifications + +class NotificationService: UNNotificationServiceExtension { + + var contentHandler: ((UNNotificationContent) -> Void)? + var bestAttemptContent: UNMutableNotificationContent? + + override func didReceive( + _ request: UNNotificationRequest, + withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void + ) { + self.contentHandler = contentHandler + bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent) + + if let bestAttemptContent = bestAttemptContent { + // Strip HTML tags from the notification body + if let body = bestAttemptContent.body as String? { + bestAttemptContent.body = stripHtmlTags(body) + } + + // Strip HTML tags from the notification title if needed + if let title = bestAttemptContent.title as String? { + bestAttemptContent.title = stripHtmlTags(title) + } + + contentHandler(bestAttemptContent) + } + } + + override func serviceExtensionTimeWillExpire() { + if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent { + contentHandler(bestAttemptContent) + } + } + + private func stripHtmlTags(_ text: String) -> String { + guard !text.isEmpty else { return text } + var result = text + // Remove HTML tags + result = result.replacingOccurrences( + of: "<[^>]+>", + with: "", + options: .regularExpression + ) + // Decode common HTML entities + let entities: [String: String] = [ + " ": " ", + "&": "&", + "<": "<", + ">": ">", + """: "\"", + "'": "'" + ] + for (entity, replacement) in entities { + result = result.replacingOccurrences(of: entity, with: replacement) + } + // Collapse whitespace + result = result.replacingOccurrences( + of: "\\s+", + with: " ", + options: .regularExpression + ).trimmingCharacters(in: .whitespacesAndNewlines) + return result + } +} +``` + + + +### Required iOS Configuration + +| Setting | Details | +|---------|---------| +| Team & Signing | The extension target must have the same team and signing configuration as your main app target | +| Bundle Identifier | Must be a child of your main app's bundle ID (e.g., `com.yourapp.NotificationService`) | +| Bridging Header | If you see a bridging header error, clear the **Objective-C Bridging Header** field in the extension's Build Settings | +| Push Payload | Your APNs payload must include `"mutable-content": 1` for the extension to intercept notifications | +| Deployment Target | The extension's deployment target must match or be lower than your main app's deployment target | + +Select the `NotificationService` target and verify the bundle identifier is a child of your main app's bundle ID: + + + Xcode NotificationService target General tab showing bundle identifier + + + +The Notification Service Extension's **Minimum Deployment** target must match your main app's minimum deployment target. The extension runs as a separate process alongside your main app — if the deployment targets don't match, iOS will silently skip the extension and notifications will display unmodified. + + +If you encounter a bridging header error, select the `NotificationService` target → **Build Settings**, search for "bridging", and clear the **Objective-C Bridging Header** value: + + + Xcode Build Settings showing Objective-C Bridging Header field for NotificationService target + + +Verify your main app target's **Build Phases** includes `NotificationService.appex` after a successful build under **Embed Foundation Extensions**: + + + Xcode Build Phases showing Embed Foundation Extensions with NotificationService.appex + + + +If your project uses React Native Firebase (e.g., for FCM on Android), you may also see `[CP-User] [RNFB] Core Configuration` in Build Phases. This is a CocoaPods build phase and does not affect the Notification Service Extension itself. + + +## Testing + +### Android (FCM) +1. Send a message containing HTML tags (e.g., `Hello World`) from another user +2. Verify the push notification displays clean text (`Hello World`) instead of raw HTML +3. Test across all app states: + - Foreground (`messaging().onMessage()` → `displayLocalNotification()`) + - Background/Killed (`messaging().setBackgroundMessageHandler()` → `displayLocalNotification()`) + +### iOS (APNs) +1. Test on a physical device — Notification Service Extensions do not run on the iOS Simulator +2. Send a message containing HTML tags from another user +3. Verify the push notification displays clean text in both background and killed states +4. Confirm that the chat UI still renders the rich text with formatting intact in both platforms + + + +- **Bridging Header Error**: If you get a build error related to the Objective-C Bridging Header in the NotificationService target, go to the extension's **Build Settings → Objective-C Bridging Header** and clear the value. +- **Build Cycle Error**: If you see a build cycle error after adding the extension (common in projects using CocoaPods), go to your main app target's **Build Phases**, find **Embed Foundation Extensions**, and ensure `NotificationService.appex` is listed correctly. +- **Extension Not Working on Simulator**: Notification Service Extensions do not run on the iOS Simulator. Test on a physical device. +- **Extension Not Intercepting Notifications**: Ensure your APNs payload includes `"mutable-content": 1`. Without this flag, iOS will not route the notification through your extension. +- **Build Fails After Adding Extension**: Verify the extension's deployment target matches your main app. Also ensure the extension's bundle ID is a child of the main app's bundle ID (e.g., `com.yourapp.NotificationService`). + + + +- **Android**: Route all FCM notification flows through a single handler function to ensure consistent content transformation +- **iOS**: The Notification Service Extension handles all APNs notifications automatically — no additional routing needed +- Keep the `stripHtmlTags` function in a shared utility file so it can be reused across your app +- Handle `serviceExtensionTimeWillExpire()` gracefully on iOS — deliver the best available content if processing takes too long +- Test on physical iOS devices since Notification Service Extensions do not run on the simulator +- Consider logging stripped content during development to verify the regex handles all edge cases in your notification payloads + + + +## Next Steps + + + +Learn how to send different types of messages + + +Handle incoming messages in real time + + diff --git a/sdk/react-native/receive-messages.mdx b/sdk/react-native/receive-messages.mdx index 5d8250925..b85820db6 100644 --- a/sdk/react-native/receive-messages.mdx +++ b/sdk/react-native/receive-messages.mdx @@ -80,6 +80,289 @@ To receive real-time incoming messages, you need to register the MessageListener | -------------- | --------------------------------------------- | | **listenerId** | An ID that uniquely identifies that listener. | + +**onTextMessageReceived** — `console.log("Text message received successfully", textMessage)` returns: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771386383, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771386392, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "moderation": { + "status": "approved" + }, + "resource": "REACT_NATIVE-4_0_14-e00a3397-8084-4596-9425-35f7e61a1111-1771332420737", + "text": "Hello" + }, + "text": "Hello", + "id": "25195", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771386392, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771386383, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771386431, + "updatedAt": 1771386431, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } +} +``` + +**onMediaMessageReceived** — `console.log("Media message received successfully", mediaMessage)` returns: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "image", + "receiverType": "user", + "category": "message", + "data": { + "attachments": [ + { + "extension": "jpg", + "mimeType": "image/jpeg", + "name": "photo.jpg", + "size": 142099, + "url": "https://data-in.cometchat.io/2748663902141719/media/1771386517_1811543964_565af45463f0170fda1720c8138a7761.jpg" + } + ], + "category": "message", + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771386436, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771386507, + "name": "Nancy Grace", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "moderation": { + "status": "approved" + }, + "resource": "REACT_NATIVE-4_0_14-e00a3397-8084-4596-9425-35f7e61a1111-1771332420737", + "type": "image", + "url": "https://data-in.cometchat.io/2748663902141719/media/1771386517_1811543964_565af45463f0170fda1720c8138a7761.jpg" + }, + "id": "25196", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771386507, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771386436, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771386517, + "updatedAt": 1771386517 +} +``` + +**onCustomMessageReceived** — `console.log("Custom message received successfully", customMessage)` returns: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "test-custom", + "receiverType": "user", + "category": "custom", + "customData": { + "greeting": "Hello from custom message!", + "timestamp": 1771386646780 + }, + "data": { + "customData": { + "greeting": "Hello from custom message!", + "timestamp": 1771386646780 + }, + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771386436, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771386517, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "moderation": { + "status": "approved" + }, + "resource": "REACT_NATIVE-4_0_14-e00a3397-8084-4596-9425-35f7e61a1111-1771332420737", + "text": "Sent a custom message" + }, + "id": "25197", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771386517, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771386436, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771386648, + "updatedAt": 1771386648, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } +} +``` + + **Listener Cleanup:** Always remove the listener once you don't need to receive messages for a particular listener. Remove the listener in `componentWillUnmount()` or the cleanup function of a `useEffect` to prevent memory leaks. @@ -164,6 +447,111 @@ Calling the `fetchNext()` method on the same object repeatedly allows you to fet + +**On Success** — `console.log("Message list fetched:", messages)` returns: +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771388888, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771388895, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-2f7dd257-8576-4279-9ac5-24a0b83ceb5d-1771388893612", + "text": "Missed Message" + }, + "text": "Missed Message", + "id": "25211", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771388895, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771388888, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771388912, + "updatedAt": 1771388912, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + } +] +``` + +**On Failure** — `console.log("Message fetching failed with error:", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in.", + "details": {} +} +``` + + ### For a Particular Group @@ -213,6 +601,118 @@ Calling the `fetchNext()` method on the same object repeatedly allows you to fet + +**On Success** — `console.log("Message list fetched:", messages)` returns: +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "group_1748415903905", + "type": "text", + "receiverType": "group", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "guid": "group_1748415903905", + "hasJoined": true, + "joinedAt": 1749203133, + "membersCount": 12, + "name": "3 People Group", + "onlineMembersCount": 1, + "owner": "123456", + "scope": "admin", + "type": "public", + "updatedAt": 1771245340 + }, + "entityType": "group" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771388895, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-2f7dd257-8576-4279-9ac5-24a0b83ceb5d-1771388893612", + "text": "Group Missed" + }, + "text": "Group Missed", + "id": "25215", + "conversationId": "group_group_1748415903905", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771388895, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasJoined": true, + "membersCount": 12, + "isBanned": false, + "guid": "group_1748415903905", + "name": "3 People Group", + "type": "public", + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "joinedAt": 1749203133, + "onlineMembersCount": 1, + "owner": "123456", + "scope": "admin", + "updatedAt": 1771245340 + }, + "sentAt": 1771389682, + "updatedAt": 1771389682, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + } +] +``` + +**On Failure** — `console.log("Message fetching failed with error:", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in.", + "details": {} +} +``` + + ## Unread Messages *In other words, as a logged-in user, how do I fetch the messages I've not read?* @@ -265,6 +765,112 @@ Using the `MessagesRequest` class described above, you can fetch the unread mess + +**On Success** — `console.log("Message list fetched:", messages)` returns: +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771389781, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771388895, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-2f7dd257-8576-4279-9ac5-24a0b83ceb5d-1771388893612", + "text": "Unread Message" + }, + "text": "Unread Message", + "id": "25216", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771388895, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771389781, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771390060, + "deliveredAt": 1771390061, + "updatedAt": 1771390061, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + } +] +``` + +**On Failure** — `console.log("Message fetching failed with error:", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in.", + "details": {} +} +``` + + ### For a Particular Group @@ -311,6 +917,118 @@ Using the `MessagesRequest` class described above, you can fetch the unread mess + +**On Success** — `console.log("Message list fetched:", messages)` returns: +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "group_1748415903905", + "type": "text", + "receiverType": "group", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "guid": "group_1748415903905", + "hasJoined": true, + "joinedAt": 1749203133, + "membersCount": 12, + "name": "3 People Group", + "onlineMembersCount": 1, + "owner": "123456", + "scope": "admin", + "type": "public", + "updatedAt": 1771245340 + }, + "entityType": "group" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771388895, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-2f7dd257-8576-4279-9ac5-24a0b83ceb5d-1771388893612", + "text": "Unread Group Message" + }, + "text": "Unread Group Message", + "id": "25217", + "conversationId": "group_group_1748415903905", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771388895, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasJoined": true, + "membersCount": 12, + "isBanned": false, + "guid": "group_1748415903905", + "name": "3 People Group", + "type": "public", + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "joinedAt": 1749203133, + "onlineMembersCount": 1, + "owner": "123456", + "scope": "admin", + "updatedAt": 1771245340 + }, + "sentAt": 1771390129, + "updatedAt": 1771390129, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + } +] +``` + +**On Failure** — `console.log("Message fetching failed with error:", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in.", + "details": {} +} +``` + + **Base Message:** The list of messages received is in the form of objects of `BaseMessage` class. A BaseMessage can either be an object of the `TextMessage`, `MediaMessage`, `CustomMessage`, `Action` or `Call` class. You can use the `instanceOf` operator to check the type of object. @@ -364,6 +1082,198 @@ Using the `MessagesRequest` class and the filters for the `MessagesRequestBuilde Calling the `fetchPrevious()` method on the same object repeatedly allows you to fetch the entire conversation between the logged-in user and the specified user. This can be implemented with upward scrolling to display the entire conversation. + +**On Success** — `console.log("Message list fetched:", messages)` returns: +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771389781, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771388895, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-2f7dd257-8576-4279-9ac5-24a0b83ceb5d-1771388893612", + "text": "Historic 1-1" + }, + "text": "Historic 1-1", + "id": "25220", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771388895, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771389781, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771390691, + "updatedAt": 1771390691, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771389781, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771388895, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-2f7dd257-8576-4279-9ac5-24a0b83ceb5d-1771388893612", + "text": "Historic Msg 2 One to One" + }, + "text": "Historic Msg 2 One to One", + "id": "25221", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771388895, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771389781, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771390711, + "updatedAt": 1771390711, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + } +] +``` + +**On Failure** — `console.log("Message fetching failed with error:", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in.", + "details": {} +} +``` + + ### For a Particular Group Using the `MessagesRequest` class and the filters for the `MessagesRequestBuilder` class as shown in the below code snippet, you can fetch the entire conversation for any group provided you have joined the group. For this use case, it is mandatory to set the GUID parameter using the `setGUID()` method of the builder. This GUID is the unique identifier of the Group for which the messages are to be fetched. @@ -412,6 +1322,212 @@ Using the `MessagesRequest` class and the filters for the `MessagesRequestBuilde Calling the `fetchPrevious()` method on the same object repeatedly allows you to fetch the entire conversation for the group. This can be implemented with upward scrolling to display the entire conversation. + +**On Success** — `console.log("Message list fetched:", messages)` returns: +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "group_1748415903905", + "type": "text", + "receiverType": "group", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "guid": "group_1748415903905", + "hasJoined": true, + "joinedAt": 1749203133, + "membersCount": 12, + "name": "3 People Group", + "onlineMembersCount": 1, + "owner": "123456", + "scope": "admin", + "type": "public", + "updatedAt": 1771245340 + }, + "entityType": "group" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771388895, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-2f7dd257-8576-4279-9ac5-24a0b83ceb5d-1771388893612", + "text": "Historic Message 1" + }, + "text": "Historic Message 1", + "id": "25218", + "conversationId": "group_group_1748415903905", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771388895, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasJoined": true, + "membersCount": 12, + "isBanned": false, + "guid": "group_1748415903905", + "name": "3 People Group", + "type": "public", + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "joinedAt": 1749203133, + "onlineMembersCount": 1, + "owner": "123456", + "scope": "admin", + "updatedAt": 1771245340 + }, + "sentAt": 1771390631, + "updatedAt": 1771390631, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "group_1748415903905", + "type": "text", + "receiverType": "group", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "guid": "group_1748415903905", + "hasJoined": true, + "joinedAt": 1749203133, + "membersCount": 12, + "name": "3 People Group", + "onlineMembersCount": 1, + "owner": "123456", + "scope": "admin", + "type": "public", + "updatedAt": 1771245340 + }, + "entityType": "group" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771388895, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-2f7dd257-8576-4279-9ac5-24a0b83ceb5d-1771388893612", + "text": "Historic Message 2" + }, + "text": "Historic Message 2", + "id": "25219", + "conversationId": "group_group_1748415903905", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771388895, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasJoined": true, + "membersCount": 12, + "isBanned": false, + "guid": "group_1748415903905", + "name": "3 People Group", + "type": "public", + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "joinedAt": 1749203133, + "onlineMembersCount": 1, + "owner": "123456", + "scope": "admin", + "updatedAt": 1771245340 + }, + "sentAt": 1771390637, + "updatedAt": 1771390637, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + } +] +``` + +**On Failure** — `console.log("Message fetching failed with error:", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in.", + "details": {} +} +``` + + ## Search Messages *In other words, as a logged-in user, how do I search a message?* @@ -479,6 +1595,113 @@ The `Conversation & Advanced Search` is only available in `Advanced` & `Custom` + +**On Success** — `console.log("Message list fetched:", messages)` returns: +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771391157, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771391162, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-2f7dd257-8576-4279-9ac5-24a0b83ceb5d-1771388893612", + "text": "xq7SearchTest" + }, + "text": "xq7SearchTest", + "id": "25224", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771391162, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771391157, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771392432, + "deliveredAt": 1771392432, + "readAt": 1771392432, + "updatedAt": 1771392432, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + } +] +``` + +**On Failure** — `console.log("Message fetching failed with error:", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in.", + "details": {} +} +``` + + ### For a Particular Group @@ -527,6 +1750,118 @@ The `Conversation & Advanced Search` is only available in `Advanced` & `Custom` + +**On Success** — `console.log("Message list fetched:", messages)` returns: +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "group_1748415903905", + "type": "text", + "receiverType": "group", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "guid": "group_1748415903905", + "hasJoined": true, + "joinedAt": 1749203133, + "membersCount": 12, + "name": "3 People Group", + "onlineMembersCount": 2, + "owner": "123456", + "scope": "admin", + "type": "public", + "updatedAt": 1771245340 + }, + "entityType": "group" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771391162, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-2f7dd257-8576-4279-9ac5-24a0b83ceb5d-1771388893612", + "text": "xq8SearchTest" + }, + "text": "xq8SearchTest", + "id": "25225", + "conversationId": "group_group_1748415903905", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771391162, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasJoined": true, + "membersCount": 12, + "isBanned": false, + "guid": "group_1748415903905", + "name": "3 People Group", + "type": "public", + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "joinedAt": 1749203133, + "onlineMembersCount": 2, + "owner": "123456", + "scope": "admin", + "updatedAt": 1771245340 + }, + "sentAt": 1771392513, + "updatedAt": 1771392513, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + } +] +``` + +**On Failure** — `console.log("Message fetching failed with error:", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in.", + "details": {} +} +``` + + ## Unread Message Count *In other words, as a logged-in user, how do I find out the number of unread messages that I have?* @@ -603,6 +1938,25 @@ If you wish to ignore the messages from blocked users you can use the below synt It will return an object which will contain the UID as the key and the unread message count as the value. + +**On Success** — `console.log("Unread message count fetched", unreadMessageCountObject)` returns: +```json +{ + "cometchat-uid-3": 2 +} +``` + +**On Failure** — `console.log("Error in getting unread message count", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in.", + "details": {} +} +``` + + ### For a Particular Group Conversation *How do I find out the number of unread messages I have in a single group?* @@ -675,6 +2029,25 @@ If you wish to ignore the messages from blocked users you can use the below synt It will return an object which will contain the GUID as the key and the unread message count as the value. + +**On Success** — `console.log("Unread message count fetched", unreadMessageCountObject)` returns: +```json +{ + "group_1748415903905": 3 +} +``` + +**On Failure** — `console.log("Error in getting unread message count", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in.", + "details": {} +} +``` + + ### For All One-on-one & Group Conversations *How do I find out the number of unread messages for every one-on-one and group conversation?* @@ -744,6 +2117,30 @@ It returns an object having two keys: 1. `users` - The value for this key holds another object that holds the UID as key and their corresponding unread message count as value. 2. `groups` - The value for this key holds another object that holds the GUID as key and their corresponding unread message count as value. + +**On Success** — `console.log("Unread message count fetched", unreadMessageCountObject)` returns: +```json +{ + "users": { + "cometchat-uid-3": 2 + }, + "groups": { + "group_1748415903905": 2 + } +} +``` + +**On Failure** — `console.log("Error in getting unread message count", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in.", + "details": {} +} +``` + + ### For All One-on-one Conversations In order to fetch the unread message counts for just the users, you can use the `getUnreadMessageCountForAllUsers()` method. This method just like others has two variants: @@ -806,6 +2203,26 @@ If you wish to ignore the messages from blocked users you can use the below synt It returns an object which will contain the UID as the key and the unread message count as the value. + +**On Success** — `console.log("Unread message count fetched", unreadMessageCountObject)` returns: +```json +{ + "cometchat-uid-3": 2, + "cometchat-uid-4": 3 +} +``` + +**On Failure** — `console.log("Error in getting unread message count", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in.", + "details": {} +} +``` + + ### For All Group Conversations In order to fetch the unread message counts for just the groups, you can use the `getUnreadMessageCountForAllGroups()` method. This method just like others has two variants: @@ -868,6 +2285,27 @@ If you wish to ignore the messages from blocked users you can use the below synt It returns an object which will contain the GUID as the key and the unread message count as the value. + +**On Success** — `console.log("Unread message count fetched", unreadMessageCountObject)` returns: +```json +{ + "group_1748415903905": 2, + "group_1762515421478": 2, + "group_1762515423434": 5 +} +``` + +**On Failure** — `console.log("Error in getting unread message count", error)` returns: +```json +{ + "code": "ERR_NOT_LOGGED_IN", + "name": "Not logged in", + "message": "No user is currently logged in.", + "details": {} +} +``` + + - Always remove message listeners when a component unmounts to prevent memory leaks From d9a9c19f82a39a167287157548f2fa89f629e0a5 Mon Sep 17 00:00:00 2001 From: Farhan-CometChat Date: Thu, 19 Feb 2026 16:14:57 +0530 Subject: [PATCH 6/8] docs(react-native): Add sample console output and expand message filtering examples - Add accordion section with sample console output for fetchPrevious() method showing both custom and message categories - Include detailed JSON response examples demonstrating poll extension and text message structures - Expand media messages filtering documentation with additional code examples and use cases - Provide comprehensive examples for filtering messages by multiple types and categories - Improve documentation clarity for developers implementing message filtering functionality --- .../additional-message-filtering.mdx | 2812 +++++++++++++++-- 1 file changed, 2606 insertions(+), 206 deletions(-) diff --git a/sdk/react-native/additional-message-filtering.mdx b/sdk/react-native/additional-message-filtering.mdx index dd15eec30..04addae46 100644 --- a/sdk/react-native/additional-message-filtering.mdx +++ b/sdk/react-native/additional-message-filtering.mdx @@ -1519,6 +1519,256 @@ let GUID: string = "GUID", + +**On Success** — `fetchPrevious()` returns (includes both `custom` and `message` categories): +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "extension_poll", + "receiverType": "user", + "category": "custom", + "customData": { + "id": "fde49a5e-baa8-4e04-95e9-c2c09557caa0", + "options": { + "1": "Yes", + "2": "No" + }, + "question": "Custom" + }, + "data": { + "customData": { + "id": "fde49a5e-baa8-4e04-95e9-c2c09557caa0", + "options": { + "1": "Yes", + "2": "No" + }, + "question": "Custom" + }, + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "createdAt": 1746375164, + "lastActiveAt": 1771474191, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "createdAt": 1746375164, + "lastActiveAt": 1771474104, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + }, + "polls": { + "id": "fde49a5e-baa8-4e04-95e9-c2c09557caa0", + "options": { + "1": "Yes", + "2": "No" + }, + "question": "Custom", + "results": { + "options": { + "1": { + "count": 0, + "text": "Yes" + }, + "2": { + "count": 0, + "text": "No" + } + }, + "total": 0 + } + } + } + }, + "incrementUnreadCount": true, + "pushNotification": "Poll: Custom" + }, + "text": "Custom", + "updateConversation": true + }, + "id": "25251", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771474104, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771474191, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771474256, + "deliveredAt": 1771474256, + "readAt": 1771474256, + "updatedAt": 1771474256, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + }, + "polls": { + "id": "fde49a5e-baa8-4e04-95e9-c2c09557caa0", + "options": { + "1": "Yes", + "2": "No" + }, + "question": "Custom", + "results": { + "options": { + "1": { + "count": 0, + "text": "Yes" + }, + "2": { + "count": 0, + "text": "No" + } + }, + "total": 0 + } + } + } + }, + "incrementUnreadCount": true, + "pushNotification": "Poll: Custom" + } + }, + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771474191, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771474104, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-d4a0f137-38d3-46d2-85e7-01084854e826-1771474101564", + "text": "Hello Message" + }, + "text": "Hello Message", + "id": "25252", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771474104, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771474191, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771474273, + "deliveredAt": 1771474274, + "readAt": 1771474274, + "updatedAt": 1771474274, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit +] +``` + + The above snippet will help you get only the messages belonging to the `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 @@ -1597,93 +1847,195 @@ let GUID: string = "GUID", -Using the above code snippet, you can fetch all the media messages. This along with setUID() or setGUID() can be used to fetch media messages for any particular conversation. This can be useful in many other scenarios as well. - -## 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 the `setParentMessageId()` 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. - - - -```javascript -let UID = "UID"; -let messageId = 1; -let limit = 30; -let messagesRequest = new CometChat.MessagesRequestBuilder() - .setUID(UID) - .setLimit(limit) - .setParentMessageId(messageId) - .build(); -``` - - - - -```javascript -let GUID = "GUID"; -let messageId = 1; -let limit = 30; -let messagesRequest = new CometChat.MessagesRequestBuilder() - .setGUID(GUID) - .setLimit(limit) - .setParentMessageId(messageId) - .build(); -``` - - - - -```typescript -let UID: string = "UID", - limit: number = 30, - messageId: number = 1, - messagesRequest: CometChat.MessagesRequest = - new CometChat.MessagesRequestBuilder() - .setUID(UID) - .setLimit(limit) - .setParentMessageId(messageId) - .build(); -``` - - - - -```typescript -let GUID: string = "GUID", - limit: number = 30, - messageId: number = 1, - messagesRequest: CometChat.MessagesRequest = - new CometChat.MessagesRequestBuilder() - .setGUID(GUID) - .setLimit(limit) - .setParentMessageId(messageId) - .build(); -``` - - - - - -The above code snippet returns the messages that belong to the thread with parent id 100. - - -## 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 the `hideReplies()` 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. - - - -```javascript -let UID = "UID"; -let limit = 30; -let messagesRequest = new CometChat.MessagesRequestBuilder() - .setUID(UID) - .setLimit(limit) - .hideReplies(true) + +**On Success** — `fetchPrevious()` returns (only `image`, `video`, `audio`, `file` types): +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "image", + "receiverType": "user", + "category": "message", + "data": { + "attachments": [ + { + "extension": "jpg", + "mimeType": "image/jpeg", + "name": "photo.jpg", + "size": 142099, + "url": "https://data-in.cometchat.io/2748663902141719/media/1771474540_739339167_565af45463f0170fda1720c8138a7761.jpg" + } + ], + "category": "message", + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771474191, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771474535, + "name": "Nancy Grace", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "resource": "REACT_NATIVE-4_0_14-d4a0f137-38d3-46d2-85e7-01084854e826-1771474101564", + "type": "image", + "url": "https://data-in.cometchat.io/2748663902141719/media/1771474540_739339167_565af45463f0170fda1720c8138a7761.jpg" + }, + "id": "25253", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771474535, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771474191, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771474540, + "deliveredAt": 1771474540, + "readAt": 1771474540, + "updatedAt": 1771474540 + }, + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "audio", + "receiverType": "user", + "category": "message", + "data": { + "attachments": [ + { + "extension": "ogg", + "mimeType": "application/ogg", + "name": "audio.ogg", + "size": 12059, + "url": "https://data-in.cometchat.io/2748663902141719/media/1771474570_2022717407_2842560f3be961ab9264c48b5721a60d.ogg" + } + ], + "category": "message", + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771474191, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771474559, + "name": "Nancy Grace", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "resource": "REACT_NATIVE-4_0_14-d4a0f137-38d3-46d2-85e7-01084854e826-1771474101564", + "type": "audio", + "url": "https://data-in.cometchat.io/2748663902141719/media/1771474570_2022717407_2842560f3be961ab9264c48b5721a60d.ogg" + }, + "id": "25254", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771474559, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771474191, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771474570, + "deliveredAt": 1771474570, + "readAt": 1771474570, + "updatedAt": 1771474570 + }, + // ... more messages up to the specified limit +] +``` + + +Using the above code snippet, you can fetch all the media messages. This along with setUID() or setGUID() can be used to fetch media messages for any particular conversation. This can be useful in many other scenarios as well. + +## 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 the `setParentMessageId()` 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. + + + +```javascript +let UID = "UID"; +let messageId = 1; // Use msg.getId() on a message where msg.getReplyCount() > 0 +let limit = 30; +let messagesRequest = new CometChat.MessagesRequestBuilder() + .setUID(UID) + .setLimit(limit) + .setParentMessageId(messageId) .build(); ``` @@ -1692,11 +2044,12 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() ```javascript let GUID = "GUID"; +let messageId = 1; // Use msg.getId() on a message where msg.getReplyCount() > 0 let limit = 30; let messagesRequest = new CometChat.MessagesRequestBuilder() .setGUID(GUID) .setLimit(limit) - .hideReplies(true) + .setParentMessageId(messageId) .build(); ``` @@ -1706,11 +2059,12 @@ let messagesRequest = new CometChat.MessagesRequestBuilder() ```typescript let UID: string = "UID", limit: number = 30, + messageId: number = 1, // Use msg.getId() on a message where msg.getReplyCount() > 0 messagesRequest: CometChat.MessagesRequest = new CometChat.MessagesRequestBuilder() .setUID(UID) .setLimit(limit) - .hideReplies(true) + .setParentMessageId(messageId) .build(); ``` @@ -1720,11 +2074,12 @@ let UID: string = "UID", ```typescript let GUID: string = "GUID", limit: number = 30, + messageId: number = 1, // Use msg.getId() on a message where msg.getReplyCount() > 0 messagesRequest: CometChat.MessagesRequest = new CometChat.MessagesRequestBuilder() .setGUID(GUID) .setLimit(limit) - .hideReplies(true) + .setParentMessageId(messageId) .build(); ``` @@ -1732,11 +2087,113 @@ let GUID: string = "GUID", -## Hide deleted messages in user/group conversations + +**On Success** — `fetchPrevious()` returns (messages belonging to the specified thread): +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771475047, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771475038, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-d4a0f137-38d3-46d2-85e7-01084854e826-1771474101564", + "text": "Thread Message" + }, + "text": "Thread Message", + "id": "25257", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771475038, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771475047, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771476403, + "deliveredAt": 1771476404, + "readAt": 1771476404, + "updatedAt": 1771476404, + "parentMessageId": "25256", + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit +] +``` + -*In other words, how do I exclude deleted messages from a user/group conversation* +The above code snippet returns the messages that belong to the thread with parent id 100. -In order to do this, you can use the `hideDeletedMessages()` 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. + +## 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 the `hideReplies()` 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. @@ -1746,7 +2203,7 @@ let limit = 30; let messagesRequest = new CometChat.MessagesRequestBuilder() .setUID(UID) .setLimit(limit) - .hideDeletedMessages(true) + .hideReplies(true) .build(); ``` @@ -1759,7 +2216,7 @@ let limit = 30; let messagesRequest = new CometChat.MessagesRequestBuilder() .setGUID(GUID) .setLimit(limit) - .hideDeletedMessages(true) + .hideReplies(true) .build(); ``` @@ -1773,7 +2230,7 @@ let UID: string = "UID", new CometChat.MessagesRequestBuilder() .setUID(UID) .setLimit(limit) - .hideDeletedMessages(true) + .hideReplies(true) .build(); ``` @@ -1787,7 +2244,7 @@ let GUID: string = "GUID", new CometChat.MessagesRequestBuilder() .setGUID(GUID) .setLimit(limit) - .hideDeletedMessages(true) + .hideReplies(true) .build(); ``` @@ -1795,78 +2252,191 @@ let GUID: string = "GUID", -## Messages by tags - -*In other words, how do I fetch messages by tags* - -In order to do this, you can use the `setTags()` method. This method accepts a list of tags. This tells the SDK to fetch messages only belonging to these tags. - - - -```javascript -let UID = "UID"; -let limit = 30; -let tags = ["starredMessage"]; -let messagesRequest = new CometChat.MessagesRequestBuilder() - .setUID(UID) - .setLimit(limit) - .setTags(tags) - .build(); -``` - - - - -```javascript -let GUID = "GUID"; -let limit = 30; -let tags = ["starredMessage"]; -let messagesRequest = new CometChat.MessagesRequestBuilder() - .setGUID(GUID) - .setLimit(limit) - .setTags(tags) - .build(); -``` - - - - -```typescript -let UID: string = "UID", - limit: number = 30, - tags: Array = ["starredMessage"], - messagesRequest: CometChat.MessagesRequest = - new CometChat.MessagesRequestBuilder() - .setUID(UID) - .setLimit(limit) - .setTags(tags) - .build(); -``` - - - - -```typescript -let GUID: string = "GUID", - limit: number = 30, - tags: Array = ["starredMessage"], - messagesRequest: CometChat.MessagesRequest = - new CometChat.MessagesRequestBuilder() - .setGUID(GUID) - .setLimit(limit) - .setTags(tags) - .build(); + +**On Success** — `fetchPrevious()` returns (threaded replies are excluded, parent messages with threads still appear): +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "audio", + "receiverType": "user", + "category": "message", + "data": { + "attachments": [ + { + "extension": "ogg", + "mimeType": "application/ogg", + "name": "audio.ogg", + "size": 12059, + "url": "https://data-in.cometchat.io/2748663902141719/media/1771474570_2022717407_2842560f3be961ab9264c48b5721a60d.ogg" + } + ], + "category": "message", + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771474191, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771474559, + "name": "Nancy Grace", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "resource": "REACT_NATIVE-4_0_14-d4a0f137-38d3-46d2-85e7-01084854e826-1771474101564", + "type": "audio", + "url": "https://data-in.cometchat.io/2748663902141719/media/1771474570_2022717407_2842560f3be961ab9264c48b5721a60d.ogg" + }, + "id": "25254", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771474559, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771474191, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771474570, + "deliveredAt": 1771474570, + "readAt": 1771474570, + "updatedAt": 1771474570 + }, + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771475047, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771475038, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-d4a0f137-38d3-46d2-85e7-01084854e826-1771474101564", + "text": "New Message for Thread" + }, + "text": "New Message for Thread", + "id": "25256", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771475038, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771475047, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771476391, + "deliveredAt": 1771476392, + "readAt": 1771476392, + "updatedAt": 1771476392, + "replyCount": 1, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit +] ``` + - - - - -## Messages with tags +## Hide deleted messages in user/group conversations -*In other words, how do I fetch messages with the tags information* +*In other words, how do I exclude deleted messages from a user/group conversation* -In order to do this, you can use the `withTags()` 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` . +In order to do this, you can use the `hideDeletedMessages()` 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. @@ -1876,7 +2446,7 @@ let limit = 30; let messagesRequest = new CometChat.MessagesRequestBuilder() .setUID(UID) .setLimit(limit) - .withTags(true) + .hideDeletedMessages(true) .build(); ``` @@ -1889,7 +2459,7 @@ let limit = 30; let messagesRequest = new CometChat.MessagesRequestBuilder() .setGUID(GUID) .setLimit(limit) - .withTags(tags) + .hideDeletedMessages(true) .build(); ``` @@ -1901,9 +2471,9 @@ let UID: string = "UID", limit: number = 30, messagesRequest: CometChat.MessagesRequest = new CometChat.MessagesRequestBuilder() - .setGUID(UID) + .setUID(UID) .setLimit(limit) - .withTags(true) + .hideDeletedMessages(true) .build(); ``` @@ -1917,7 +2487,7 @@ let GUID: string = "GUID", new CometChat.MessagesRequestBuilder() .setGUID(GUID) .setLimit(limit) - .withTags(true) + .hideDeletedMessages(true) .build(); ``` @@ -1925,30 +2495,728 @@ let GUID: string = "GUID", -## 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 the `hasLinks()` 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`. - - - -This feature is only available with `Conversation & Advanced Search`. The `Conversation & Advanced Search` is only available in `Advanced` & `Custom` [plans](https://www.cometchat.com/pricing). If you're already on one of these plans, please enable the `Conversation & Advanced Search` from [CometChat Dashboard](https://app.cometchat.com) (Open your app, navigate to Chats -> Settings -> General Configuration) - - - - - -```javascript -let UID = "UID"; -let limit = 30; -let messagesRequest = new CometChat.MessagesRequestBuilder() - .setUID(UID) - .setLimit(limit) - .hasLinks(true) - .build(); -``` - + +**On Success** — `fetchPrevious()` returns (deleted messages are excluded): +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771475047, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771475038, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-d4a0f137-38d3-46d2-85e7-01084854e826-1771474101564", + "text": "New Message for Thread" + }, + "text": "New Message for Thread", + "id": "25256", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771475038, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771475047, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771476391, + "deliveredAt": 1771476392, + "readAt": 1771476392, + "updatedAt": 1771476392, + "replyCount": 1, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771475047, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771475038, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-d4a0f137-38d3-46d2-85e7-01084854e826-1771474101564", + "text": "Thread Message" + }, + "text": "Thread Message", + "id": "25257", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771475038, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771475047, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771476403, + "deliveredAt": 1771476404, + "readAt": 1771476404, + "updatedAt": 1771476404, + "parentMessageId": "25256", + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit +] +``` + + +## Messages by tags + +*In other words, how do I fetch messages by tags* + +In order to do this, you can use the `setTags()` method. This method accepts a list of tags. This tells the SDK to fetch messages only belonging to these tags. + + + +```javascript +let UID = "UID"; +let limit = 30; +let tags = ["starredMessage"]; +let messagesRequest = new CometChat.MessagesRequestBuilder() + .setUID(UID) + .setLimit(limit) + .setTags(tags) + .build(); +``` + + + + +```javascript +let GUID = "GUID"; +let limit = 30; +let tags = ["starredMessage"]; +let messagesRequest = new CometChat.MessagesRequestBuilder() + .setGUID(GUID) + .setLimit(limit) + .setTags(tags) + .build(); +``` + + + + +```typescript +let UID: string = "UID", + limit: number = 30, + tags: Array = ["starredMessage"], + messagesRequest: CometChat.MessagesRequest = + new CometChat.MessagesRequestBuilder() + .setUID(UID) + .setLimit(limit) + .setTags(tags) + .build(); +``` + + + + +```typescript +let GUID: string = "GUID", + limit: number = 30, + tags: Array = ["starredMessage"], + messagesRequest: CometChat.MessagesRequest = + new CometChat.MessagesRequestBuilder() + .setGUID(GUID) + .setLimit(limit) + .setTags(tags) + .build(); +``` + + + + + + +**On Success** — `fetchPrevious()` returns (only messages matching the specified tags): +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771477541, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771478591, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-d4a0f137-38d3-46d2-85e7-01084854e826-1771474101564", + "text": "Tagged message for docs" + }, + "text": "Tagged message for docs", + "id": "25259", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771478591, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771477541, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771478898, + "deliveredAt": 1771478900, + "readAt": 1771478900, + "updatedAt": 1771478900, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-3", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771478591, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771477541, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "moderation": { + "status": "approved" + }, + "resource": "REACT_NATIVE-4_0_14-99626bfc-ffc1-4059-be3a-b7c77ee4cbcd-1771474097650", + "text": "Tagged message for docs" + }, + "text": "Tagged message for docs", + "id": "25260", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771477541, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771478591, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771478922, + "updatedAt": 1771478922, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit +] +``` + + +## Messages with tags + +*In other words, how do I fetch messages with the tags information* + +In order to do this, you can use the `withTags()` 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` . + + + +```javascript +let UID = "UID"; +let limit = 30; +let messagesRequest = new CometChat.MessagesRequestBuilder() + .setUID(UID) + .setLimit(limit) + .withTags(true) + .build(); +``` + + + + +```javascript +let GUID = "GUID"; +let limit = 30; +let messagesRequest = new CometChat.MessagesRequestBuilder() + .setGUID(GUID) + .setLimit(limit) + .withTags(tags) + .build(); +``` + + + + +```typescript +let UID: string = "UID", + limit: number = 30, + messagesRequest: CometChat.MessagesRequest = + new CometChat.MessagesRequestBuilder() + .setGUID(UID) + .setLimit(limit) + .withTags(true) + .build(); +``` + + + + +```typescript +let GUID: string = "GUID", + limit: number = 30, + messagesRequest: CometChat.MessagesRequest = + new CometChat.MessagesRequestBuilder() + .setGUID(GUID) + .setLimit(limit) + .withTags(true) + .build(); +``` + + + + + + +**On Success** — `fetchPrevious()` returns (messages include the `tags` field): +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-3", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771480251, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771480243, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "moderation": { + "status": "approved" + }, + "resource": "REACT_NATIVE-4_0_14-99626bfc-ffc1-4059-be3a-b7c77ee4cbcd-1771474097650", + "text": "Tagged message for docs" + }, + "text": "Tagged message for docs", + "id": "25265", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771480243, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771480251, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771481257, + "updatedAt": 1771481257, + "tags": ["starredMessage"], + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-3", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771480251, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771480243, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "moderation": { + "status": "pending" + }, + "resource": "REACT_NATIVE-4_0_14-99626bfc-ffc1-4059-be3a-b7c77ee4cbcd-1771474097650", + "text": "Tagged message for docs" + }, + "text": "Tagged message for docs", + "id": "25266", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771480243, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771480251, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771481270, + "updatedAt": 1771481270, + "tags": ["starredMessage"], + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit +] +``` + + +## 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 the `hasLinks()` 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`. + + + +This feature is only available with `Conversation & Advanced Search`. The `Conversation & Advanced Search` is only available in `Advanced` & `Custom` [plans](https://www.cometchat.com/pricing). If you're already on one of these plans, please enable the `Conversation & Advanced Search` from [CometChat Dashboard](https://app.cometchat.com) (Open your app, navigate to Chats -> Settings -> General Configuration) + + + + + +```javascript +let UID = "UID"; +let limit = 30; +let messagesRequest = new CometChat.MessagesRequestBuilder() + .setUID(UID) + .setLimit(limit) + .hasLinks(true) + .build(); +``` + @@ -1989,10 +3257,229 @@ let GUID: string = "GUID", .hasLinks(true) .build(); ``` - - - - + + + + + + +**On Success** — `fetchPrevious()` returns (only messages containing links): +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771480243, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771480251, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [ + { + "description": "Build real time chat, voice and video calling experience with CometChat's flexible SDKs, APIs & UI Kits. Sign up now!\n", + "favicon": "https://cometchat.com/_static/favicon.png", + "image": "https://a.storyblok.com/f/231922/1200x630/d639d0748b/open-graph-image.png/m/1200x630/", + "title": "In-app Chat SDK & API For Messaging And Calling - CometChat", + "url": "https://cometchat.com" + } + ] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-d4a0f137-38d3-46d2-85e7-01084854e826-1771474101564", + "text": "Please checkout our website https://cometchat.com" + }, + "text": "Please checkout our website https://cometchat.com", + "id": "25269", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771480251, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771480243, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771481824, + "deliveredAt": 1771481825, + "readAt": 1771481825, + "updatedAt": 1771481825, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [ + { + "description": "Build real time chat, voice and video calling experience with CometChat's flexible SDKs, APIs & UI Kits. Sign up now!\n", + "favicon": "https://cometchat.com/_static/favicon.png", + "image": "https://a.storyblok.com/f/231922/1200x630/d639d0748b/open-graph-image.png/m/1200x630/", + "title": "In-app Chat SDK & API For Messaging And Calling - CometChat", + "url": "https://cometchat.com" + } + ] + } + } + } + } + }, + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771482544, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771482552, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [ + { + "description": "", + "favicon": "http://www.google.com/favicon.ico", + "image": "", + "title": "Google", + "url": "http://www.google.com" + } + ] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-d4a0f137-38d3-46d2-85e7-01084854e826-1771474101564", + "text": "Www.google.com" + }, + "text": "Www.google.com", + "id": "25270", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771482552, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771482544, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771482630, + "deliveredAt": 1771482631, + "readAt": 1771482631, + "updatedAt": 1771482631, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [ + { + "description": "", + "favicon": "http://www.google.com/favicon.ico", + "image": "", + "title": "Google", + "url": "http://www.google.com" + } + ] + } + } + } + } + }, + // ... more messages up to the specified limit +] +``` + ## Messages with attachments @@ -2063,6 +3550,177 @@ let GUID: string = "GUID", + +**On Success** — `fetchPrevious()` returns (only messages with attachments): +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "image", + "receiverType": "user", + "category": "message", + "data": { + "attachments": [ + { + "extension": "jpg", + "mimeType": "image/jpeg", + "name": "IMG_20260217_150412.jpg", + "size": 142099, + "url": "https://data-in.cometchat.io/2748663902141719/media/1771474540_739339167_565af45463f0170fda1720c8138a7761.jpg" + } + ], + "category": "message", + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771474191, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771474535, + "name": "Nancy Grace", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "resource": "REACT_NATIVE-4_0_14-d4a0f137-38d3-46d2-85e7-01084854e826-1771474101564", + "type": "image", + "url": "https://data-in.cometchat.io/2748663902141719/media/1771474540_739339167_565af45463f0170fda1720c8138a7761.jpg" + }, + "id": "25253", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771474535, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771474191, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771474540, + "deliveredAt": 1771474540, + "readAt": 1771474540, + "updatedAt": 1771474540 + }, + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "audio", + "receiverType": "user", + "category": "message", + "data": { + "attachments": [ + { + "extension": "ogg", + "mimeType": "application/ogg", + "name": "Music%20Box.ogg", + "size": 12059, + "url": "https://data-in.cometchat.io/2748663902141719/media/1771474570_2022717407_2842560f3be961ab9264c48b5721a60d.ogg" + } + ], + "category": "message", + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771474191, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771474559, + "name": "Nancy Grace", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "resource": "REACT_NATIVE-4_0_14-d4a0f137-38d3-46d2-85e7-01084854e826-1771474101564", + "type": "audio", + "url": "https://data-in.cometchat.io/2748663902141719/media/1771474570_2022717407_2842560f3be961ab9264c48b5721a60d.ogg" + }, + "id": "25254", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771474559, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771474191, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771474570, + "deliveredAt": 1771474570, + "readAt": 1771474570, + "updatedAt": 1771474570 + }, + // ... more messages up to the specified limit +] +``` + + ## Messages with reactions *In other words, as a logged-in user, how do I fetch messages that contain reactions?* @@ -2127,10 +3785,119 @@ let GUID: string = "GUID", .hasReactions(true) .build(); ``` - - - - + + + + + + +**On Success** — `fetchPrevious()` returns (only messages that have reactions): +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771494233, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771495034, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-0790756b-527d-443d-b3e6-6ce85a085e7f-1771494137056", + "text": "Message with reactions", + "reactions": [ + { + "reaction": "❤️", + "count": 1 + }, + { + "reaction": "😮", + "count": 1, + "reactedByMe": true + } + ] + }, + "text": "Message with reactions", + "id": "25275", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771495034, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771494233, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771495045, + "deliveredAt": 1771495045, + "readAt": 1771495045, + "updatedAt": 1771495045, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit +] +``` + ## Messages with mentions @@ -2201,6 +3968,237 @@ let GUID: string = "GUID", + +**On Success** — `fetchPrevious()` returns (only messages that contain mentions): +```json +[ + { + "reactions": [], + "mentionedUsers": [ + { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771494233, + "role": "default", + "status": "online" + } + ], + "mentionedMe": true, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771482544, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771482552, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-d4a0f137-38d3-46d2-85e7-01084854e826-1771474101564", + "text": "<@uid:cometchat-uid-2> Hello", + "mentions": { + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771494233 + } + } + }, + "text": "<@uid:cometchat-uid-2> Hello", + "id": "25271", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771482552, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771482544, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771482742, + "deliveredAt": 1771482743, + "readAt": 1771482743, + "updatedAt": 1771482743, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + { + "reactions": [], + "mentionedUsers": [ + { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771494233, + "role": "default", + "status": "online" + } + ], + "mentionedMe": true, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771494233, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771495034, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-0790756b-527d-443d-b3e6-6ce85a085e7f-1771494137056", + "text": "Message for mentioned users, Hello <@uid:cometchat-uid-2>", + "mentions": { + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771494233 + } + } + }, + "text": "Message for mentioned users, Hello <@uid:cometchat-uid-2>", + "id": "25276", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771495034, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771494233, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771495242, + "deliveredAt": 1771495244, + "readAt": 1771495244, + "updatedAt": 1771495244, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit +] +``` + + ## Messages with particular user mentions *In other words, as a logged-in user, how do I fetch messages that mention specific users?* @@ -2265,10 +4263,241 @@ let GUID: string = "GUID", .setMentionedUIDs(["UID"]) .build(); ``` - - - - + + + + + + +**On Success** — `fetchPrevious()` returns (only messages mentioning the specified UIDs): +```json +[ + { + "reactions": [], + "mentionedUsers": [ + { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771494233, + "role": "default", + "status": "online" + } + ], + "mentionedMe": true, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771482544, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771482552, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-d4a0f137-38d3-46d2-85e7-01084854e826-1771474101564", + "text": "<@uid:cometchat-uid-2> Hello", + "mentions": { + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771494233 + } + } + }, + "text": "<@uid:cometchat-uid-2> Hello", + "id": "25271", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771482552, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771482544, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771482742, + "deliveredAt": 1771482743, + "readAt": 1771482743, + "updatedAt": 1771482743, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + { + "reactions": [], + "mentionedUsers": [ + { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771494233, + "role": "default", + "status": "online" + } + ], + "mentionedMe": true, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771494233, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771495034, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-0790756b-527d-443d-b3e6-6ce85a085e7f-1771494137056", + "text": "Message for mentioned users, Hello <@uid:cometchat-uid-2>", + "mentions": { + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771494233 + } + } + }, + "text": "Message for mentioned users, Hello <@uid:cometchat-uid-2>", + "id": "25276", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771495034, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771494233, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771495242, + "deliveredAt": 1771495244, + "readAt": 1771495244, + "updatedAt": 1771495244, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit +] +``` + ## Messages with specific attachment types @@ -2339,6 +4568,177 @@ let GUID: string = "GUID", + +**On Success** — `fetchPrevious()` returns (only messages with the specified attachment types): +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "image", + "receiverType": "user", + "category": "message", + "data": { + "attachments": [ + { + "extension": "jpg", + "mimeType": "image/jpeg", + "name": "IMG_20260217_150412.jpg", + "size": 142099, + "url": "https://data-in.cometchat.io/2748663902141719/media/1771386517_1811543964_565af45463f0170fda1720c8138a7761.jpg" + } + ], + "category": "message", + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771386436, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771386507, + "name": "Nancy Grace", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "resource": "REACT_NATIVE-4_0_14-e00a3397-8084-4596-9425-35f7e61a1111-1771332420737", + "type": "image", + "url": "https://data-in.cometchat.io/2748663902141719/media/1771386517_1811543964_565af45463f0170fda1720c8138a7761.jpg" + }, + "id": "25196", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771386507, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771386436, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771386517, + "deliveredAt": 1771386517, + "readAt": 1771483750, + "updatedAt": 1771483750 + }, + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "image", + "receiverType": "user", + "category": "message", + "data": { + "attachments": [ + { + "extension": "jpg", + "mimeType": "image/jpeg", + "name": "IMG_20260217_150412.jpg", + "size": 142099, + "url": "https://data-in.cometchat.io/2748663902141719/media/1771474540_739339167_565af45463f0170fda1720c8138a7761.jpg" + } + ], + "category": "message", + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771474191, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771474535, + "name": "Nancy Grace", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "resource": "REACT_NATIVE-4_0_14-d4a0f137-38d3-46d2-85e7-01084854e826-1771474101564", + "type": "image", + "url": "https://data-in.cometchat.io/2748663902141719/media/1771474540_739339167_565af45463f0170fda1720c8138a7761.jpg" + }, + "id": "25253", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771474535, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771474191, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771474540, + "deliveredAt": 1771474540, + "readAt": 1771474540, + "updatedAt": 1771474540 + }, + // ... more messages up to the specified limit +] +``` + + ## Best Practices & Troubleshooting From 9c06ffba437d90979d343deeb7d31366506656cc Mon Sep 17 00:00:00 2001 From: Farhan-CometChat Date: Thu, 26 Feb 2026 11:56:32 +0530 Subject: [PATCH 7/8] docs(react-native): Add sample console output and fix UI Kit links - Add sample console output accordions to delete-conversation, delete-message, delivery-read-receipts, flag-message, interactive-messages, mentions, reactions, retrieve-conversations, threaded-messages, transient-messages, and typing-indicators docs - Fix UI Kit documentation links from `/ui-kits/react-native/overview` to `/ui-kit/react-native/overview` across all modified files - Include JSON response examples showing successful method execution and event callbacks - Provide developers with clear reference output for debugging and integration --- sdk/react-native/delete-conversation.mdx | 9 +- sdk/react-native/delete-message.mdx | 236 ++- sdk/react-native/delivery-read-receipts.mdx | 193 +- sdk/react-native/flag-message.mdx | 60 +- sdk/react-native/interactive-messages.mdx | 241 ++- sdk/react-native/mentions.mdx | 140 ++ sdk/react-native/reactions.mdx | 261 ++- sdk/react-native/retrieve-conversations.mdx | 1808 +++++++++++++++++++ sdk/react-native/threaded-messages.mdx | 499 ++++- sdk/react-native/transient-messages.mdx | 39 +- sdk/react-native/typing-indicators.mdx | 60 + 11 files changed, 3493 insertions(+), 53 deletions(-) diff --git a/sdk/react-native/delete-conversation.mdx b/sdk/react-native/delete-conversation.mdx index 7f368575d..f8fafef7a 100644 --- a/sdk/react-native/delete-conversation.mdx +++ b/sdk/react-native/delete-conversation.mdx @@ -15,7 +15,7 @@ CometChat.deleteConversation("GUID", "group"); -**Available via:** [SDK](/sdk/react-native/delete-conversation) | [REST API](/rest-api/conversations/reset-user-conversation) | [UI Kits](/ui-kits/react-native/overview) +**Available via:** [SDK](/sdk/react-native/delete-conversation) | [REST API](/rest-api/conversations/reset-user-conversation) | [UI Kits](/ui-kit/react-native/overview) In case you want to delete a conversation, you can use the `deleteConversation()` method. @@ -89,6 +89,13 @@ CometChat.deleteConversation(GUID, type).then( + +**On Success** — `deleteConversation()` returns a success message: +```json +"Conversation deleted successfully." +``` + + This method deletes the conversation only for the logged-in user. To delete a conversation for all the users of the conversation, please refer to our REST API documentation [here](https://api-explorer.cometchat.com/reference/deletes-conversation). The `deleteConversation()` method takes the following parameters: diff --git a/sdk/react-native/delete-message.mdx b/sdk/react-native/delete-message.mdx index 50183400c..fb3d013df 100644 --- a/sdk/react-native/delete-message.mdx +++ b/sdk/react-native/delete-message.mdx @@ -28,7 +28,7 @@ While [deleting a message](/sdk/react-native/delete-message#delete-a-message) is 2. Calling a method to retrieve [missed message deletes](/sdk/react-native/delete-message#missed-message-delete-events) when your app was not running. -**Available via:** [SDK](/sdk/react-native/delete-message) | [REST API](/rest-api/messages/delete-message) | [UI Kits](/ui-kits/react-native/overview) +**Available via:** [SDK](/sdk/react-native/delete-message) | [REST API](/rest-api/messages/delete-message) | [UI Kits](/ui-kit/react-native/overview) ## Delete a Message @@ -74,6 +74,82 @@ CometChat.deleteMessage(messageId).then( + +**On Success** — `deleteMessage()` returns the deleted message object with `deletedAt` and `deletedBy` fields set: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-6", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "lastActiveAt": 1771994056, + "name": "Ronald Jerry", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-6" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771993054, + "name": "Henry Marino", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-7" + }, + "entityType": "user" + } + } + }, + "id": "25305", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771993054, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771994056, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771996215, + "deliveredAt": 1771996215, + "readAt": 1771996215, + "deletedAt": 1771996222, + "updatedAt": 1771996222, + "deletedBy": "cometchat-uid-7" +} +``` + + Once the message is deleted, in the `onSuccess()` callback, you get an object of the `BaseMessage` class, with the `deletedAt` field set with the timestamp of the time the message was deleted. Also, the `deletedBy` field is set. These two fields can be used to identify if the message is deleted while iterating through a list of messages. By default, CometChat allows certain roles to delete a message. @@ -126,6 +202,82 @@ CometChat.addMessageListener( + +**On Event** — `onMessageDeleted` callback receives the deleted message object: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-7", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "lastActiveAt": 1771993054, + "name": "Henry Marino", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-7" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771994056, + "name": "Ronald Jerry", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-6" + }, + "entityType": "user" + } + } + }, + "id": "25301", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771994056, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771993054, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771996032, + "deliveredAt": 1771996033, + "readAt": 1771996033, + "deletedAt": 1771996040, + "updatedAt": 1771996040, + "deletedBy": "cometchat-uid-6" +} +``` + + Always remove listeners when they are no longer needed (e.g., on component unmount or screen navigation). Failing to remove listeners can cause memory leaks and duplicate event handling. @@ -140,6 +292,84 @@ CometChat.removeMessageListener("UNIQUE_LISTENER_ID"); When you retrieve the list of previous messages, for the messages that were deleted, the `deletedAt` and the `deletedBy` fields will be set. Also, for example, of the total number of messages for a conversation are 100, and the message with message ID 50 was deleted. Now the message with id 50 will have the `deletedAt` and the `deletedBy` fields set whenever it is pulled from the history. Also, the 101st message will be an Action message informing you that the message with id 50 has been deleted. + +**When fetching message history** — deleted messages have `deletedAt` and `deletedBy` fields set: +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-7", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "lastActiveAt": 1771993054, + "name": "Henry Marino", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-7" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771994056, + "name": "Ronald Jerry", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-6" + }, + "entityType": "user" + } + } + }, + "id": "25301", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771994056, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771993054, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771996032, + "deliveredAt": 1771996033, + "readAt": 1771996033, + "deletedAt": 1771996040, + "updatedAt": 1771996040, + "deletedBy": "cometchat-uid-6" + } +] +``` + + For the message deleted event, in the `Action` object received, the following fields can help you get the relevant information- 1. `action` - `deleted` @@ -147,6 +377,10 @@ For the message deleted event, in the `Action` object received, the following fi 3. `actionBy` - User object containing the details of the user who has deleted the message. 4. `actionFor` - User/group object having the details of the receiver to which the message was sent. + +When fetching message history, deleted messages include `deletedAt` and `deletedBy` fields. You can check if `deletedAt` is set to identify deleted messages. Additionally, an Action message with `action: "deleted"` is added to the message list for audit/timeline purposes. + + In order to edit or delete a message, you need to be either the sender of the message or the admin/moderator of the group in which the message was sent. diff --git a/sdk/react-native/delivery-read-receipts.mdx b/sdk/react-native/delivery-read-receipts.mdx index 88596c79e..97d847e44 100644 --- a/sdk/react-native/delivery-read-receipts.mdx +++ b/sdk/react-native/delivery-read-receipts.mdx @@ -22,7 +22,7 @@ CometChat.addMessageListener("LISTENER_ID", new CometChat.MessageListener({ -**Available via:** [SDK](/sdk/react-native/delivery-read-receipts) | [REST API](/rest-api/conversations/mark-user-conversation-as-delivered) | [UI Kits](/ui-kits/react-native/overview) +**Available via:** [SDK](/sdk/react-native/delivery-read-receipts) | [REST API](/rest-api/conversations/mark-user-conversation-as-delivered) | [UI Kits](/ui-kit/react-native/overview) ## Mark Messages as Delivered @@ -249,6 +249,16 @@ CometChat.markAsDelivered(message).then( + +**On Success** — `markAsDelivered()` returns a confirmation object: +```json +{ + "messageId": "25323", + "type": "text" +} +``` + + ## Mark Messages as Read *In other words, as a recipient, how do I inform the sender I've read a message?* @@ -455,6 +465,16 @@ CometChat.markAsRead(message).then( + +**On Success** — `markAsRead()` returns a confirmation object: +```json +{ + "messageId": "25323", + "type": "text" +} +``` + + ## Mark Messages as Unread {/* Mark a message as unread — CometChat.markMessageAsUnread(message) @@ -530,6 +550,85 @@ CometChat.markMessageAsUnread(message).then( + +**On Success** — `markMessageAsUnread()` returns the updated `Conversation` object with the new unread count: +```json +{ + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "conversationType": "user", + "unreadMentionsCount": 0, + "lastReadMessageId": "25323", + "unreadMessageCount": 1, + "lastMessage": { + "reactions": [], + "mentionedUsers": [ + { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1772005334, + "role": "default", + "status": "online" + } + ], + "mentionedMe": true, + "receiverId": "cometchat-uid-7", + "type": "text", + "receiverType": "user", + "category": "message", + "text": "Hello <@uid:cometchat-uid-7>, this is a test mention!", + "id": "25326", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1772004288, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1772005334, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1772006074, + "deliveredAt": 1772006158, + "readAt": 1772006158, + "updatedAt": 1772006158 + }, + "latestMessageId": "", + "conversationWith": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1772004288, + "role": "default", + "status": "offline", + "tags": [], + "conversationId": "cometchat-uid-6_user_cometchat-uid-7" + } +} +``` + + ## Receive Delivery & Read Receipts *In other words, as a recipient, how do I know when a message I sent has been delivered or read by someone?* @@ -602,6 +701,98 @@ CometChat.addMessageListener( + +**On Event** — `onMessagesDelivered` returns a `MessageReceipt` object for user conversations: +```json +{ + "receiptType": "delivery", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771853565, + "role": "default", + "status": "online", + "tags": [] + }, + "receiverType": "user", + "receiver": "cometchat-uid-6", + "deliveredAt": 1772005348, + "messageId": "25323", + "timestamp": 1772005348 +} +``` + +**On Event** — `onMessagesRead` returns a `MessageReceipt` object for user conversations: +```json +{ + "receiptType": "read", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771853565, + "role": "default", + "status": "online", + "tags": [] + }, + "receiverType": "user", + "receiver": "cometchat-uid-6", + "readAt": 1772005377, + "messageId": "25323", + "timestamp": 1772005377 +} +``` + +**On Event** — `onMessagesDeliveredToAll` returns a `MessageReceipt` object for group conversations (sender is System): +```json +{ + "receiptType": "deliveredToAll", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "app_system", + "name": "System", + "role": "default", + "status": "offline" + }, + "receiverType": "group", + "receiver": "tg1", + "deliveredAt": 1772005516, + "messageId": "25325", + "timestamp": 1772005516 +} +``` + +**On Event** — `onMessagesReadByAll` returns a `MessageReceipt` object for group conversations (sender is System): +```json +{ + "receiptType": "readByAll", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "app_system", + "name": "System", + "role": "default", + "status": "offline" + }, + "receiverType": "group", + "receiver": "tg1", + "readAt": 1772005546, + "messageId": "25325", + "timestamp": 1772005546 +} +``` + + **Listener Cleanup Required** — Always remove your message listener when the component unmounts or the listener is no longer needed to avoid memory leaks and duplicate event handling: diff --git a/sdk/react-native/flag-message.mdx b/sdk/react-native/flag-message.mdx index 8e504d73c..edcac842f 100644 --- a/sdk/react-native/flag-message.mdx +++ b/sdk/react-native/flag-message.mdx @@ -24,7 +24,7 @@ await CometChat.flagMessage("MESSAGE_ID", payload); Flagging messages allows users to report inappropriate content to moderators or administrators. When a message is flagged, it appears in the [CometChat Dashboard](https://app.cometchat.com) under **Moderation > Flagged Messages** for review. -**Available via:** [SDK](/sdk/react-native/flag-message) | [REST API](/rest-api/chat-apis) | [UI Kits](/ui-kits/react-native/overview) +**Available via:** [SDK](/sdk/react-native/flag-message) | [REST API](/rest-api/moderation/flag-a-message) | [UI Kits](/ui-kit/react-native/core-features#report-message) @@ -95,20 +95,37 @@ Before flagging a message, retrieve the list of available flag reasons configure -### Response - -The response is an array of flag reason objects: - -```javascript + +**On Success** — `getFlagReasons()` returns an array of flag reason objects: +```json [ - { "id": "spam", "reason": "Spam or misleading" }, - { "id": "harassment", "reason": "Harassment or bullying" }, - { "id": "hate_speech", "reason": "Hate speech" }, - { "id": "violence", "reason": "Violence or dangerous content" }, - { "id": "inappropriate", "reason": "Inappropriate content" }, - { "id": "other", "reason": "Other" } + { + "id": "spam", + "name": "Spam", + "description": "Repeated, promotional, or irrelevant content", + "createdAt": 1761627675, + "updatedAt": 1761627675, + "default": false + }, + { + "id": "sexual", + "name": "Sexual Content", + "description": "Explicit or inappropriate content", + "createdAt": 1761627675, + "updatedAt": 1761627675, + "default": false + }, + { + "id": "harassment", + "name": "Harassment / Bullying", + "description": "Insulting or threatening behavior", + "createdAt": 1761627675, + "updatedAt": 1761627675, + "default": false + } ] ``` + ## Flag a Message @@ -153,6 +170,16 @@ To flag a message, use the `flagMessage()` method with the message ID and a payl + +**On Success** — `flagMessage()` returns a success response: +```json +{ + "success": true, + "message": "Message 25300 has been flagged successfully." +} +``` + + ### Parameters | Parameter | Type | Required | Description | @@ -161,15 +188,6 @@ To flag a message, use the `flagMessage()` method with the message ID and a payl | payload.reasonId | string | Yes | ID of the flag reason (from `getFlagReasons()`) | | payload.remark | string | No | Additional context or explanation from the user | -### Response - -```javascript -{ - "success": true, - "message": "Message with id {{messageId}} has been flagged successfully" -} -``` - ## Complete Example Here's a complete implementation showing how to build a report message flow: diff --git a/sdk/react-native/interactive-messages.mdx b/sdk/react-native/interactive-messages.mdx index 40027f84e..8dcd576bd 100644 --- a/sdk/react-native/interactive-messages.mdx +++ b/sdk/react-native/interactive-messages.mdx @@ -22,7 +22,7 @@ CometChat.addMessageListener("interactive-listener", new CometChat.MessageListen -**Available via:** [SDK](/sdk/react-native/interactive-messages) | [REST API](/rest-api/chat-apis) | [UI Kits](/ui-kits/react-native/overview) +**Available via:** [SDK](/sdk/react-native/interactive-messages) | [REST API](/rest-api/chat-apis) An `InteractiveMessage` is a specialized object that encapsulates an interactive unit within a chat message, such as an embedded form that users can fill out directly within the chat interface. This enhances user engagement by making the chat experience more interactive and responsive to user input. @@ -76,6 +76,13 @@ This method marks a message as interacted by identifying it with the provided Id + +**On Success** — `markAsInteracted()` returns a success message: +```json +"The message id 25308 has been marked as interacted for the user cometchat-uid-7." +``` + + ## Goal Completion A key feature of `InteractiveMessage` is checking whether a user's interactions with the message meet the defined `InteractionGoal`. @@ -127,6 +134,122 @@ Here is an example of how to use it: + +**On Success** — `sendInteractiveMessage()` returns the sent interactive message object: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-7", + "type": "form", + "receiverType": "user", + "category": "interactive", + "interactiveData": { + "title": "Quick Survey", + "formFields": [ + { + "elementType": "textInput", + "elementId": "field1", + "label": "How was your experience?", + "optional": false + } + ], + "submitElement": { + "elementType": "button", + "elementId": "submit_btn", + "buttonText": "Submit" + }, + "interactableElementIds": ["submit_btn"] + }, + "interactionGoal": { + "elementIds": [], + "type": "anyAction" + }, + "data": { + "interactiveData": { + "title": "Quick Survey", + "formFields": [ + { + "elementType": "textInput", + "elementId": "field1", + "label": "How was your experience?", + "optional": false + } + ], + "submitElement": { + "elementType": "button", + "elementId": "submit_btn", + "buttonText": "Submit" + }, + "interactableElementIds": ["submit_btn"] + }, + "interactionGoal": { + "elementIds": [], + "type": "anyAction" + }, + "resource": "REACT_NATIVE-4_0_14-8dc16e6c-8c88-44f2-88b8-629ad14ccadb-1771998690866", + "allowSenderInteraction": false, + "entities": { + "sender": { + "entity": { + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771998694, + "tags": [] + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771998700, + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "tags": [] + }, + "entityType": "user" + } + } + }, + "id": "25308", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771998694, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771998700, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771998776, + "updatedAt": 1771998776 +} +``` + + ## Event Listeners CometChat SDK provides event listeners to handle real-time events related to `InteractiveMessage`. @@ -164,6 +287,122 @@ Here is an example: + +**On Event** — `onInteractiveMessageReceived` returns the received interactive message object: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-7", + "type": "form", + "receiverType": "user", + "category": "interactive", + "interactiveData": { + "title": "Quick Survey", + "formFields": [ + { + "elementType": "textInput", + "elementId": "field1", + "label": "How was your experience?", + "optional": false + } + ], + "submitElement": { + "elementType": "button", + "elementId": "submit_btn", + "buttonText": "Submit" + }, + "interactableElementIds": ["submit_btn"] + }, + "interactionGoal": { + "elementIds": [], + "type": "anyAction" + }, + "data": { + "interactiveData": { + "title": "Quick Survey", + "formFields": [ + { + "elementType": "textInput", + "elementId": "field1", + "label": "How was your experience?", + "optional": false + } + ], + "submitElement": { + "elementType": "button", + "elementId": "submit_btn", + "buttonText": "Submit" + }, + "interactableElementIds": ["submit_btn"] + }, + "interactionGoal": { + "elementIds": [], + "type": "anyAction" + }, + "resource": "REACT_NATIVE-4_0_14-8dc16e6c-8c88-44f2-88b8-629ad14ccadb-1771998690866", + "allowSenderInteraction": false, + "entities": { + "sender": { + "entity": { + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771998694, + "tags": [] + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771998700, + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "tags": [] + }, + "entityType": "user" + } + } + }, + "id": "25308", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771998694, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771998700, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771998776, + "updatedAt": 1771998776 +} +``` + + ### On Interaction Goal Completed The `onInteractionGoalCompleted` event listener is invoked when an interaction goal is achieved. diff --git a/sdk/react-native/mentions.mdx b/sdk/react-native/mentions.mdx index 8e51dbae7..1c072f94d 100644 --- a/sdk/react-native/mentions.mdx +++ b/sdk/react-native/mentions.mdx @@ -116,6 +116,103 @@ CometChat.sendMessage(textMessage).then( + +**On Success** — `sendMessage()` with mentions returns the sent message object with `mentionedUsers` populated: +```json +{ + "reactions": [], + "mentionedUsers": [ + { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1772005334, + "role": "default", + "status": "online" + } + ], + "mentionedMe": false, + "receiverId": "cometchat-uid-7", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "text": "Hello <@uid:cometchat-uid-7>, this is a test mention!", + "entities": { + "sender": { + "entity": { + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "status": "offline", + "role": "default", + "lastActiveAt": 1772004288, + "tags": [] + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1772005334, + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "tags": [] + }, + "entityType": "user" + } + }, + "mentions": { + "cometchat-uid-7": { + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1772005334, + "conversationId": "cometchat-uid-6_user_cometchat-uid-7" + } + } + }, + "text": "Hello <@uid:cometchat-uid-7>, this is a test mention!", + "id": "25326", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1772004288, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1772005334, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1772006074, + "updatedAt": 1772006074 +} +``` + + You can mention user in text message and media messages captions @@ -255,6 +352,19 @@ messagesRequest.fetchPrevious().then( + +**On Success** — `mentionsWithTagInfo(true)` returns mentioned users with their tags: +```json +[ + { + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "tags": ["vip"] + } +] +``` + + ## Mentions With Blocked Info @@ -378,6 +488,20 @@ messagesRequest.fetchPrevious().then( + +**On Success** — `mentionsWithBlockedInfo(true)` returns mentioned users with blocked relationship info: +```json +[ + { + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "blockedByMe": false, + "hasBlockedMe": false + } +] +``` + + ## Get Users Mentioned In a Particular Message @@ -387,6 +511,22 @@ To retrieve the list of users mentioned in the particular message, you can use t message.getMentionedUsers(); ``` + +**On Success** — `getMentionedUsers()` returns an array of mentioned user objects: +```json +[ + { + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "status": "online", + "blockedByMe": false, + "hasBlockedMe": false + } +] +``` + + ## Best Practices diff --git a/sdk/react-native/reactions.mdx b/sdk/react-native/reactions.mdx index 896e5f61a..49fdfb990 100644 --- a/sdk/react-native/reactions.mdx +++ b/sdk/react-native/reactions.mdx @@ -58,6 +58,62 @@ CometChat.addReaction(messageId, emoji) + +**On Success** — `addReaction()` returns the updated message object with the reaction added: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-7", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "text": "Message for Reactions", + "reactions": [ + { + "reaction": "😊", + "count": 1, + "reactedByMe": true + } + ] + }, + "text": "Message for Reactions", + "id": "25327", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1772004288, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1772005334, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1772006757, + "deliveredAt": 1772006757, + "readAt": 1772006757, + "updatedAt": 1772006757 +} +``` + + You can react on text message, media message and custom message @@ -101,14 +157,63 @@ CometChat.removeReaction(messageId, emoji) + +**On Success** — `removeReaction()` returns the updated message object with the reaction removed: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-7", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "text": "Message for Reactions" + }, + "text": "Message for Reactions", + "id": "25327", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1772004288, + "role": "default", + "status": "offline", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1772005334, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1772006757, + "deliveredAt": 1772006757, + "readAt": 1772006757, + "updatedAt": 1772006757 +} +``` + + ## Fetch Reactions for a Message -To get all reactions for a specific message, first create a `ReactionRequest` using `ReactionRequestBuilder`. You can specify the number of reactions to fetch with `setLimit` with max limit 100. For this, you will require the ID of the message. This ID needs to be passed to the `setMessageId()` method of the builder class. The `setReaction()` will allow you to fetch details for specific reaction or emoji. +To get all reactions for a specific message, first create a `ReactionsRequest` using `ReactionsRequestBuilder`. You can specify the number of reactions to fetch with `setLimit` with max limit 100. For this, you will require the ID of the message. This ID needs to be passed to the `setMessageId()` method of the builder class. The `setReaction()` will allow you to fetch details for specific reaction or emoji. | Setting | Description | | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `setMessageId(value)` | Specifies the unique identifier of the message for which you want to fetch reactions. This parameter is mandatory as it tells the SDK which message's reactions are being requested. | -| `setReaction(value)` | Filters the reactions fetched by the specified reaction type (e.g., "😊", "😂", "👍"). When set, this method will cause the `ReactionRequest` to only retrieve details of the provided reaction for the given message. | +| `setReaction(value)` | Filters the reactions fetched by the specified reaction type (e.g., "😊", "😂", "👍"). When set, this method will cause the `ReactionsRequest` to only retrieve details of the provided reaction for the given message. | ## Fetch Next @@ -120,16 +225,16 @@ The `fetchNext()` method fetches the next set of reactions for the message. let limit = 10; let messageId = 1; -let reactionRequest = new CometChat.ReactionRequestBuilder() +let reactionsRequest = new CometChat.ReactionsRequestBuilder() .setMessageId(messageId) .setLimit(limit) .build(); -reactionRequest.fetchNext().then( - messages => { - console.log("list fetched:", messages); +reactionsRequest.fetchNext().then( + reactions => { + console.log("list fetched:", reactions); }, - error => {a + error => { console.log('list fetching failed with error:', error); }, ); @@ -142,14 +247,14 @@ reactionRequest.fetchNext().then( let limit:number = 10; let messageId:number = 1; -let reactionRequest = new CometChat.ReactionRequestBuilder() +let reactionsRequest = new CometChat.ReactionsRequestBuilder() .setMessageId(messageId) .setLimit(limit) .build(); -reactionRequest.fetchNext().then( - (messages: MessageReaction[]) => { - console.log("list fetched:", messages); +reactionsRequest.fetchNext().then( + (reactions: CometChat.MessageReaction[]) => { + console.log("list fetched:", reactions); }, (error: CometChat.CometChatException) => { console.log('list fetching failed with error:', error); @@ -171,16 +276,16 @@ The `fetchPrevious()` method fetches the previous set of reactions for the messa let limit = 10; let messageId = 1; -let reactionRequest = new CometChat.ReactionRequestBuilder() +let reactionsRequest = new CometChat.ReactionsRequestBuilder() .setMessageId(messageId) .setLimit(limit) .build(); -reactionRequest.fetchPrevious().then( - messages => { - console.log("list fetched:", messages); +reactionsRequest.fetchPrevious().then( + reactions => { + console.log("list fetched:", reactions); }, - error => {a + error => { console.log('list fetching failed with error:', error); }, ); @@ -193,14 +298,14 @@ reactionRequest.fetchPrevious().then( let limit:number = 10; let messageId:number = 1; -let reactionRequest = new CometChat.ReactionRequestBuilder() +let reactionsRequest = new CometChat.ReactionsRequestBuilder() .setMessageId(messageId) .setLimit(limit) .build(); -reactionRequest.fetchPrevious().then( - (messages: MessageReaction[]) => { - console.log("list fetched:", messages); +reactionsRequest.fetchPrevious().then( + (reactions: CometChat.MessageReaction[]) => { + console.log("list fetched:", reactions); }, (error: CometChat.CometChatException) => { console.log('list fetching failed with error:', error); @@ -212,6 +317,33 @@ reactionRequest.fetchPrevious().then( + +**On Success** — `fetchNext()` or `fetchPrevious()` returns an array of `MessageReaction` objects: +```json +[ + { + "id": "20014", + "messageId": "25327", + "reaction": "❤️", + "uid": "cometchat-uid-7", + "reactedAt": 1772007024, + "reactedBy": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1772007237, + "role": "default", + "status": "online" + } + } + // ... more reactions up to the specified limit +] +``` + + ## Real-time Reaction Events @@ -252,6 +384,58 @@ CometChat.addMessageListener(listenerID, { + +**On Event** — `onMessageReactionAdded` returns the reaction event data: +```json +{ + "parentMessageId": null, + "reaction": { + "id": "20013", + "messageId": "25327", + "reaction": "❤️", + "uid": "cometchat-uid-7", + "reactedAt": 1772006766, + "reactedBy": { + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1772005334 + } + }, + "receiverId": "cometchat-uid-6", + "receiverType": "user", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7" +} +``` + +**On Event** — `onMessageReactionRemoved` returns the reaction event data: +```json +{ + "parentMessageId": null, + "reaction": { + "id": "20013", + "messageId": "25327", + "reaction": "❤️", + "uid": "cometchat-uid-7", + "reactedAt": 1772006766, + "reactedBy": { + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1772005334 + } + }, + "receiverId": "cometchat-uid-6", + "receiverType": "user", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7" +} +``` + + ## Removing a Reaction Listener To stop listening for reaction events, remove the listener as follows: @@ -302,6 +486,19 @@ message.getReactions() + +**On Success** — `getReactions()` returns an array of reaction counts: +```json +[ + { + "reaction": "❤️", + "count": 1, + "reactedByMe": true + } +] +``` + + ## Check if Logged-in User has Reacted on Message To check if the logged-in user has reacted on a particular message or not, You can use the `getReactedByMe()` method on any `ReactionCount` object instance. This method will return a boolean value, `true` if the logged-in user has reacted on that message, otherwise `false`. @@ -311,7 +508,7 @@ To check if the logged-in user has reacted on a particular message or not, You c ```javascript let reactions = message.getReactions(); reactions.forEach((reaction) => { -reaction.getReactedByMe(); //Return true is logged-in user reacted on that message, otherwise false +reaction.getReactedByMe(); //Returns true if logged-in user reacted on that message, otherwise false }) ``` @@ -321,7 +518,7 @@ reaction.getReactedByMe(); //Return true is logged-in user reacted on that messa ```typescript let reactions:CometChat.ReactionCount[] = message.getReactions(); reactions.forEach((reaction:CometChat.ReactionCount) => { -reaction.getReactedByMe(); //Return true is logged-in user reacted on that message, otherwise false +reaction.getReactedByMe(); //Returns true if logged-in user reacted on that message, otherwise false }) ``` @@ -380,6 +577,24 @@ action + +**On Success (REACTION_ADDED)** — `updateMessageWithReactionInfo()` returns the updated message. Calling `getReactions()` on it shows: +```json +[ + { + "reactedByMe": false, + "reaction": "👍", + "count": 1 + } +] +``` + +**On Success (REACTION_REMOVED)** — When the last reaction is removed, `getReactions()` returns an empty array: +```json +[] +``` + + ## Best Practices @@ -417,7 +632,7 @@ action Make sure you are calling `getReactedByMe()` on the `ReactionCount` objects returned by `message.getReactions()`, not on the raw reaction event data. Also verify that the logged-in user is the same user who added the reaction. - Confirm that the `messageId` passed to `ReactionRequestBuilder.setMessageId()` is correct and that the message actually has reactions. If using `setReaction()` to filter by a specific emoji, ensure the emoji string matches exactly (including any variation selectors). + Confirm that the `messageId` passed to `ReactionsRequestBuilder.setMessageId()` is correct and that the message actually has reactions. If using `setReaction()` to filter by a specific emoji, ensure the emoji string matches exactly (including any variation selectors). diff --git a/sdk/react-native/retrieve-conversations.mdx b/sdk/react-native/retrieve-conversations.mdx index d94f74292..def5844c4 100644 --- a/sdk/react-native/retrieve-conversations.mdx +++ b/sdk/react-native/retrieve-conversations.mdx @@ -98,6 +98,132 @@ let limit: number = 30, + +**On Success** — `fetchNext()` returns (only group conversations when `conversationType` is set to `"group"`): +```json +[ + { + "conversationId": "group_group_1748415903905", + "conversationType": "group", + "unreadMentionsCount": 0, + "lastReadMessageId": "25243", + "unreadMessageCount": 0, + "lastMessage": { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "group_1748415903905", + "type": "text", + "receiverType": "group", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "guid": "group_1748415903905", + "hasJoined": true, + "joinedAt": 1748415973, + "membersCount": 12, + "name": "3 People Group", + "onlineMembersCount": 3, + "owner": "123456", + "scope": "admin", + "type": "public", + "updatedAt": 1771245340 + }, + "entityType": "group" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-4.webp", + "lastActiveAt": 1771413925, + "name": "Susan Marie", + "role": "admin", + "status": "online", + "tags": [], + "uid": "cometchat-uid-4" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_12-83d84373-9a70-4a11-a460-a71aecf16b3a-1771413918297", + "text": "Susan here " + }, + "text": "Susan here ", + "id": "25243", + "conversationId": "group_group_1748415903905", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-4", + "name": "Susan Marie", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-4.webp", + "lastActiveAt": 1771413925, + "role": "admin", + "status": "online", + "tags": [] + }, + "receiver": { + "hasJoined": true, + "membersCount": 12, + "isBanned": false, + "guid": "group_1748415903905", + "name": "3 People Group", + "type": "public", + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "joinedAt": 1748415973, + "onlineMembersCount": 3, + "owner": "123456", + "scope": "admin", + "updatedAt": 1771245340 + }, + "sentAt": 1771413931, + "updatedAt": 1771413931, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + "latestMessageId": "25243", + "conversationWith": { + "hasJoined": true, + "membersCount": 12, + "isBanned": false, + "guid": "group_1748415903905", + "name": "3 People Group", + "type": "public", + "scope": "admin", + "joinedAt": 1748437105, + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "owner": "123456", + "updatedAt": 1771245340, + "onlineMembersCount": 1 + } + }, + // ... more conversations up to the specified limit +] +``` + + ### With User and Group Tags This method can be used to fetch the user/group tags in the `Conversation` Object. By default the value is false. @@ -124,6 +250,151 @@ let limit: number = 30, + +`withUserAndGroupTags(true)` adds the `tags` array to the `conversationWith` object (user/group tags). The tags you see inside `lastMessage.data.entities` and `sender`/`receiver` are part of the message payload, not the conversation's `conversationWith` object. + + + +**On Success** — `fetchNext()` returns (conversations include user/group tags in `conversationWith`): +```json +[ + { + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "conversationType": "user", + "unreadMentionsCount": 0, + "lastReadMessageId": "25276", + "unreadMessageCount": 0, + "lastMessage": { + "reactions": [], + "mentionedUsers": [ + { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771738926, + "role": "default", + "status": "offline" + } + ], + "mentionedMe": true, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771494233, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": ["userTag1"], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771495034, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": ["userTag2"], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-0790756b-527d-443d-b3e6-6ce85a085e7f-1771494137056", + "text": "Message for mentioned users, Hello <@uid:cometchat-uid-2>", + "mentions": { + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "status": "offline", + "role": "default", + "lastActiveAt": 1771738926 + } + } + }, + "text": "Message for mentioned users, Hello <@uid:cometchat-uid-2>", + "id": "25276", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771495034, + "role": "default", + "status": "online", + "tags": ["userTag2"] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771494233, + "role": "default", + "status": "online", + "tags": ["userTag1"] + }, + "sentAt": 1771495242, + "deliveredAt": 1771495244, + "readAt": 1771495244, + "updatedAt": 1771495244, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + "latestMessageId": "25276", + "conversationWith": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771818451, + "role": "default", + "status": "online", + "tags": ["userTag2"], + "conversationId": "cometchat-uid-2_user_cometchat-uid-3" + } + }, + // ... more conversations up to the specified limit +] +``` + + ### Set User Tags This method fetches user conversations that have the specified tags. @@ -152,6 +423,124 @@ let limit: number = 30, + +**On Success** — `fetchNext()` returns (only user conversations matching the specified user tags): +```json +[ + { + "conversationId": "cometchat-uid-2_user_cometchat-uid-5", + "conversationType": "user", + "unreadMentionsCount": 0, + "lastReadMessageId": "24957", + "unreadMessageCount": 0, + "lastMessage": { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-5", + "lastActiveAt": 1770973150, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": ["tag1"], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", + "lastActiveAt": 1770973064, + "name": "John Paul", + "role": "admin", + "status": "online", + "tags": ["tag1"], + "uid": "cometchat-uid-5" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-7da177a5-3642-4571-acbb-d2f11b87f696-1770883672084", + "text": "Not yet, I will update you if any." + }, + "text": "Not yet, I will update you if any.", + "id": "24955", + "conversationId": "cometchat-uid-2_user_cometchat-uid-5", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-5", + "name": "John Paul", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", + "lastActiveAt": 1770973064, + "role": "admin", + "status": "online", + "tags": ["tag1"] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1770973150, + "role": "default", + "status": "offline", + "tags": ["tag1"] + }, + "sentAt": 1770973162, + "editedAt": 1770973219, + "editedBy": "cometchat-uid-5", + "updatedAt": 1770973219, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + "latestMessageId": "24957", + "conversationWith": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-5", + "name": "John Paul", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", + "lastActiveAt": 1771668031, + "role": "admin", + "status": "offline", + "conversationId": "cometchat-uid-2_user_cometchat-uid-5" + } + }, + // ... more conversations up to the specified limit +] +``` + + ### Set Group Tags This method fetches group conversations that have the specified tags. @@ -180,6 +569,135 @@ let limit: number = 30, + +**On Success** — `fetchNext()` returns (only group conversations matching the specified group tags): +```json +[ + { + "conversationId": "group_group_1748415903905", + "conversationType": "group", + "unreadMentionsCount": 0, + "lastReadMessageId": "25243", + "unreadMessageCount": 0, + "lastMessage": { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "group_1748415903905", + "type": "text", + "receiverType": "group", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "guid": "group_1748415903905", + "hasJoined": true, + "joinedAt": 1748415973, + "membersCount": 12, + "name": "3 People Group", + "onlineMembersCount": 3, + "owner": "123456", + "scope": "admin", + "tags": ["tag1"], + "type": "public", + "updatedAt": 1771245340 + }, + "entityType": "group" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-4.webp", + "lastActiveAt": 1771413925, + "name": "Susan Marie", + "role": "admin", + "status": "online", + "tags": [], + "uid": "cometchat-uid-4" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_12-83d84373-9a70-4a11-a460-a71aecf16b3a-1771413918297", + "text": "Susan here " + }, + "text": "Susan here ", + "id": "25243", + "conversationId": "group_group_1748415903905", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-4", + "name": "Susan Marie", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-4.webp", + "lastActiveAt": 1771413925, + "role": "admin", + "status": "online", + "tags": [] + }, + "receiver": { + "hasJoined": true, + "membersCount": 12, + "isBanned": false, + "guid": "group_1748415903905", + "name": "3 People Group", + "type": "public", + "tags": ["tag1"], + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "joinedAt": 1748415973, + "onlineMembersCount": 3, + "owner": "123456", + "scope": "admin", + "updatedAt": 1771245340 + }, + "sentAt": 1771413931, + "updatedAt": 1771413931, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + "latestMessageId": "25243", + "conversationWith": { + "hasJoined": true, + "membersCount": 12, + "isBanned": false, + "guid": "group_1748415903905", + "name": "3 People Group", + "type": "public", + "scope": "admin", + "joinedAt": 1748437105, + "conversationId": "group_group_1748415903905", + "createdAt": 1748415957, + "owner": "123456", + "updatedAt": 1771820149, + "updatedBy": "cometchat-uid-2", + "onlineMembersCount": 1 + } + }, + // ... more conversations up to the specified limit +] +``` + + ### With Tags This method makes sure that the tags associated with the conversations are returned along with the other details of the conversations. The default value for this parameter is `false`. @@ -206,6 +724,147 @@ let limit: number = 30, + +**On Success** — `fetchNext()` returns (conversations include `tags` field when `withTags` is set to `true`): +```json +[ + { + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "conversationType": "user", + "unreadMentionsCount": 0, + "lastReadMessageId": "25276", + "unreadMessageCount": 0, + "lastMessage": { + "reactions": [], + "mentionedUsers": [ + { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771738926, + "role": "default", + "status": "offline" + } + ], + "mentionedMe": true, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771494233, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771495034, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-0790756b-527d-443d-b3e6-6ce85a085e7f-1771494137056", + "text": "Message for mentioned users, Hello <@uid:cometchat-uid-2>", + "mentions": { + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "status": "offline", + "role": "default", + "lastActiveAt": 1771738926 + } + } + }, + "text": "Message for mentioned users, Hello <@uid:cometchat-uid-2>", + "id": "25276", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771495034, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771494233, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771495242, + "deliveredAt": 1771495244, + "readAt": 1771495244, + "updatedAt": 1771495244, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + "latestMessageId": "25276", + "tags": ["archivedChat"], + "conversationWith": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771818451, + "role": "default", + "status": "online", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3" + } + }, + // ... more conversations up to the specified limit +] +``` + + ### Set Tags This method helps you fetch the conversations based on the specified tags. @@ -234,6 +893,160 @@ let limit: number = 30, + +**On Success** — `fetchNext()` returns (only conversations matching the specified tags, e.g., `"archivedChat"`): +```json +[ + { + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "conversationType": "user", + "unreadMentionsCount": 0, + "lastReadMessageId": "25276", + "unreadMessageCount": 0, + "lastMessage": { + "reactions": [], + "mentionedUsers": [ + { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771738926, + "role": "default", + "status": "offline" + } + ], + "mentionedMe": true, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771494233, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771495034, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-0790756b-527d-443d-b3e6-6ce85a085e7f-1771494137056", + "text": "Message for mentioned users, Hello <@uid:cometchat-uid-2>", + "mentions": { + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "status": "offline", + "role": "default", + "lastActiveAt": 1771738926 + } + } + }, + "text": "Message for mentioned users, Hello <@uid:cometchat-uid-2>", + "id": "25276", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771495034, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771494233, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771495242, + "deliveredAt": 1771495244, + "readAt": 1771495244, + "updatedAt": 1771495244, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + "latestMessageId": "25276", + "conversationWith": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771818451, + "role": "default", + "status": "online", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3" + } + }, + // ... more conversations up to the specified limit +] +``` + + + +**Blocked Users in Conversations - Quick Reference** + +| Flag | Effect | +| ---- | ------ | +| `setIncludeBlockedUsers(true)` | Includes blocked user conversations in results (hidden by default) | +| `setWithBlockedInfo(true)` | Adds `blockedByMe`, `hasBlockedMe`, `blockedByMeAt`, `blockedAt` to `conversationWith` | + +**Usage:** +- Use both together to see blocked conversations with accurate block status +- `conversationWith` contains current block status +- `lastMessage.sender`/`receiver` contains historical data from message time (may show `false` even if currently blocked) + + ### Include Blocked Users This method helps you fetch the conversations of users whom the logged-in user has blocked. @@ -260,6 +1073,128 @@ let limit: number = 30, + +**On Success** — `fetchNext()` returns (includes conversations with blocked users): +```json +[ + { + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "conversationType": "user", + "unreadMentionsCount": 0, + "lastReadMessageId": "25280", + "unreadMessageCount": 0, + "lastMessage": { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "blockedAt": 1771820668, + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "hasBlockedMe": true, + "hasBlockedMeAt": 1771820668, + "lastActiveAt": 1771738926, + "name": "George Alan", + "role": "default", + "status": "offline", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771818451, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "moderation": { + "status": "approved" + }, + "resource": "REACT_NATIVE-4_0_14-0790756b-527d-443d-b3e6-6ce85a085e7f-1771494137056", + "text": "Hello Blocker" + }, + "text": "Hello Blocker", + "id": "25280", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771818451, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771738926, + "role": "default", + "status": "offline", + "tags": [] + }, + "sentAt": 1771820699, + "updatedAt": 1771820699, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + "latestMessageId": "25276", + "conversationWith": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771738926, + "role": "default", + "status": "offline", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3" + } + }, + // ... more conversations up to the specified limit +] +``` + + ### With Blocked Info This method can be used to fetch the blocked information of the blocked user in the `ConversationWith` object. @@ -286,6 +1221,148 @@ let limit: number = 30, + +**On Success** — `fetchNext()` returns (conversations include blocked info in `conversationWith`): +```json +[ + { + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "conversationType": "user", + "unreadMentionsCount": 0, + "lastReadMessageId": "25276", + "unreadMessageCount": 0, + "lastMessage": { + "reactions": [], + "mentionedUsers": [ + { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771738926, + "role": "default", + "status": "offline" + } + ], + "mentionedMe": true, + "receiverId": "cometchat-uid-2", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "lastActiveAt": 1771494233, + "name": "George Alan", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-2" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771495034, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-0790756b-527d-443d-b3e6-6ce85a085e7f-1771494137056", + "text": "Message for mentioned users, Hello <@uid:cometchat-uid-2>", + "mentions": { + "cometchat-uid-2": { + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "status": "offline", + "role": "default", + "lastActiveAt": 1771738926 + } + } + }, + "text": "Message for mentioned users, Hello <@uid:cometchat-uid-2>", + "id": "25276", + "conversationId": "cometchat-uid-2_user_cometchat-uid-3", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771495034, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-2", + "name": "George Alan", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp", + "lastActiveAt": 1771494233, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771495242, + "deliveredAt": 1771495244, + "readAt": 1771495244, + "updatedAt": 1771495244, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + "latestMessageId": "25276", + "conversationWith": { + "hasBlockedMe": false, + "blockedByMe": true, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771818451, + "role": "default", + "status": "online", + "blockedByMeAt": 1771820668, + "blockedAt": 1771820668, + "conversationId": "cometchat-uid-2_user_cometchat-uid-3" + } + }, + // ... more conversations up to the specified limit +] +``` + + ### Search Conversations This method helps you search for a conversation based on a User or Group name. @@ -318,6 +1395,170 @@ let limit: number = 30, + +**On Success** — `fetchNext()` returns (conversations matching the search keyword `"Hiking"`): +```json +[ + { + "conversationId": "group_cometchat-guid-1", + "conversationType": "group", + "unreadMentionsCount": 0, + "lastReadMessageId": "4791", + "unreadMessageCount": 0, + "lastMessage": { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-guid-1", + "type": "groupMember", + "receiverType": "group", + "category": "action", + "data": { + "action": "kicked", + "entities": { + "by": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", + "createdAt": 1746375164, + "lastActiveAt": 1753945410, + "name": "John Paul", + "role": "default", + "status": "offline", + "uid": "cometchat-uid-5" + }, + "entityType": "user" + }, + "for": { + "entity": { + "conversationId": "group_cometchat-guid-1", + "createdAt": 1746375164, + "description": "Explore, connect, and chat with fellow outdoor enthusiasts, thanks to our CometChat-enabled community platform.", + "guid": "cometchat-guid-1", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", + "membersCount": 3, + "name": "Hiking Group", + "owner": "cometchat-uid-5", + "type": "private", + "updatedAt": 1753945144 + }, + "entityType": "group" + }, + "on": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", + "conversationId": "cometchat-uid-1_user_cometchat-uid-5", + "createdAt": 1746375164, + "lastActiveAt": 1753944766, + "name": "Andrew Joseph", + "role": "default", + "status": "offline", + "statusMessage": "Hey there I'm using CometChat", + "uid": "cometchat-uid-1", + "updatedAt": 1749731589 + }, + "entityType": "user" + } + } + }, + "action": "kicked", + "actionBy": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-5", + "name": "John Paul", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", + "lastActiveAt": 1753945410, + "role": "default", + "status": "offline", + "createdAt": 1746375164 + }, + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-5", + "name": "John Paul", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp", + "lastActiveAt": 1753945410, + "role": "default", + "status": "offline", + "createdAt": 1746375164 + }, + "actionFor": { + "hasJoined": false, + "membersCount": 3, + "isBanned": false, + "guid": "cometchat-guid-1", + "conversationId": "group_cometchat-guid-1", + "createdAt": 1746375164, + "description": "Explore, connect, and chat with fellow outdoor enthusiasts, thanks to our CometChat-enabled community platform.", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", + "name": "Hiking Group", + "owner": "cometchat-uid-5", + "type": "private", + "updatedAt": 1753945144 + }, + "actionOn": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-1", + "name": "Andrew Joseph", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-1.webp", + "lastActiveAt": 1753944766, + "role": "default", + "statusMessage": "Hey there I'm using CometChat", + "status": "offline", + "conversationId": "cometchat-uid-1_user_cometchat-uid-5", + "createdAt": 1746375164, + "updatedAt": 1749731589 + }, + "message": "John Paul kicked Andrew Joseph", + "id": "4791", + "conversationId": "group_cometchat-guid-1", + "receiver": { + "hasJoined": false, + "membersCount": 3, + "isBanned": false, + "guid": "cometchat-guid-1", + "conversationId": "group_cometchat-guid-1", + "createdAt": 1746375164, + "description": "Explore, connect, and chat with fellow outdoor enthusiasts, thanks to our CometChat-enabled community platform.", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", + "name": "Hiking Group", + "owner": "cometchat-uid-5", + "type": "private", + "updatedAt": 1753945144 + }, + "sentAt": 1753946954, + "deliveredAt": 1764150385, + "updatedAt": 1764150385 + }, + "latestMessageId": "4791", + "conversationWith": { + "hasJoined": true, + "membersCount": 3, + "isBanned": false, + "guid": "cometchat-guid-1", + "name": "Hiking Group", + "type": "private", + "description": "Explore, connect, and chat with fellow outdoor enthusiasts, thanks to our CometChat-enabled community platform.", + "icon": "https://assets.cometchat.io/sampleapp/v2/groups/cometchat-guid-1.webp", + "scope": "participant", + "joinedAt": 1746375164, + "conversationId": "group_cometchat-guid-1", + "createdAt": 1746375164, + "owner": "cometchat-uid-5", + "updatedAt": 1753946955, + "onlineMembersCount": 1 + } + }, + // ... more conversations up to the specified limit +] +``` + + ### Unread Conversations This method helps you fetch unread conversations. @@ -350,6 +1591,132 @@ let limit: number = 30, + +**On Success** — `fetchNext()` returns (only unread conversations): +```json +[ + { + "conversationId": "group_group_1762515421478", + "conversationType": "group", + "unreadMentionsCount": 0, + "lastReadMessageId": "24359", + "unreadMessageCount": 2, + "lastMessage": { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "group_1762515421478", + "type": "text", + "receiverType": "group", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "conversationId": "group_group_1762515421478", + "createdAt": 1762515421, + "guid": "group_1762515421478", + "hasJoined": true, + "joinedAt": 1762515534, + "membersCount": 3, + "name": "TwoMemberGroup", + "onlineMembersCount": 2, + "owner": "cometchat-uid-2", + "scope": "participant", + "type": "public", + "updatedAt": 1768888876 + }, + "entityType": "group" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771397739, + "name": "Nancy Grace", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-3" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-de89d7ce-f090-4e2e-ad89-bebae957b3ff-1771397690356", + "text": "Hru" + }, + "text": "Hru", + "id": "25236", + "conversationId": "group_group_1762515421478", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-3", + "name": "Nancy Grace", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-3.webp", + "lastActiveAt": 1771397739, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasJoined": true, + "membersCount": 3, + "isBanned": false, + "guid": "group_1762515421478", + "name": "TwoMemberGroup", + "type": "public", + "conversationId": "group_group_1762515421478", + "createdAt": 1762515421, + "joinedAt": 1762515534, + "onlineMembersCount": 2, + "owner": "cometchat-uid-2", + "scope": "participant", + "updatedAt": 1768888876 + }, + "sentAt": 1771400675, + "updatedAt": 1771400675, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + "latestMessageId": "25236", + "conversationWith": { + "hasJoined": true, + "membersCount": 3, + "isBanned": false, + "guid": "group_1762515421478", + "name": "TwoMemberGroup", + "type": "public", + "scope": "admin", + "joinedAt": 1762515421, + "conversationId": "group_group_1762515421478", + "createdAt": 1762515421, + "owner": "cometchat-uid-2", + "updatedAt": 1768888876, + "onlineMembersCount": 1 + } + }, + // ... more conversations up to the specified limit +] +``` + + Finally, once all the parameters are set to the builder class, you need to call the `build()` method to get the object of the `ConversationsRequest` class. Once you have the object of the `ConversationsRequest` class, you need to call the `fetchNext()` method. Calling this method will return a list of `Conversation` objects containing X number of users depending on the limit set. @@ -432,6 +1799,122 @@ CometChat.tagConversation('conversationWith', 'conversationType', tags).then( + +**On Success** — `tagConversation()` returns the updated conversation object with the new tags: +```json +{ + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "conversationType": "user", + "unreadMentionsCount": 0, + "lastReadMessageId": "25291", + "unreadMessageCount": 0, + "lastMessage": { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-6", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "lastActiveAt": 1771829859, + "name": "Ronald Jerry", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-6" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771829868, + "name": "Henry Marino", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-7" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-b495efdd-5a54-4a47-a8ad-237bf8dff679-1771829544163", + "text": "Hello" + }, + "text": "Hello", + "id": "25291", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771829868, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771829859, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771831336, + "deliveredAt": 1771832977, + "readAt": 1771832977, + "updatedAt": 1771832977, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + "latestMessageId": "25291", + "tags": ["archivedChat"], + "conversationWith": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771834604, + "role": "default", + "status": "online", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7" + } +} +``` + + The tags for conversations are one-way. This means that if user A tags a conversation with user B, that tag will be applied to that conversation only for user A. @@ -464,6 +1947,123 @@ CometChat.getConversation('conversationWith', 'conversationType').then( + +**On Success** — `getConversation()` returns the conversation object: +```json +{ + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "conversationType": "user", + "unreadMentionsCount": 0, + "lastReadMessageId": "25291", + "unreadMessageCount": 0, + "lastMessage": { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-6", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "lastActiveAt": 1771829859, + "name": "Ronald Jerry", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-6" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771829868, + "name": "Henry Marino", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-7" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-b495efdd-5a54-4a47-a8ad-237bf8dff679-1771829544163", + "text": "Hello" + }, + "text": "Hello", + "id": "25291", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771829868, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771829859, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771831336, + "deliveredAt": 1771832977, + "readAt": 1771832977, + "updatedAt": 1771832977, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + "latestMessageId": "25291", + "tags": ["archivedChat"], + "conversationWith": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771834604, + "role": "default", + "status": "online", + "tags": [], + "conversationId": "cometchat-uid-6_user_cometchat-uid-7" + } +} +``` + + ## Convert Messages to Conversations As per our [receive messages](/sdk/react-native/receive-messages) guide, for real-time messages, you will always receive `Message` objects and not `Conversation` objects. Thus, you will need a mechanism to convert the Message object to a `Conversation` object. You can use the `getConversationFromMessage(BaseMessage message)` method of the `CometChatHelper` class. @@ -482,6 +2082,214 @@ conversation => { + +**Source Message Object:** +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-6", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "lastActiveAt": 1771829859, + "name": "Ronald Jerry", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-6" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771829868, + "name": "Henry Marino", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-7" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-b495efdd-5a54-4a47-a8ad-237bf8dff679-1771829544163", + "text": "Hello" + }, + "text": "Hello", + "id": "25291", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771829868, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771829859, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771831336, + "deliveredAt": 1771832977, + "readAt": 1771832977, + "updatedAt": 1771832977, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } +} +``` + +**On Success** — `getConversationFromMessage()` returns the converted conversation object: +```json +{ + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "conversationType": "user", + "unreadMentionsCount": 0, + "lastReadMessageId": "", + "unreadMessageCount": 0, + "lastMessage": { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-6", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "lastActiveAt": 1771829859, + "name": "Ronald Jerry", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-6" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771829868, + "name": "Henry Marino", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-7" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-b495efdd-5a54-4a47-a8ad-237bf8dff679-1771829544163", + "text": "Hello" + }, + "text": "Hello", + "id": "25291", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771829868, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771829859, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771831336, + "deliveredAt": 1771832977, + "readAt": 1771832977, + "updatedAt": 1771832977, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + "latestMessageId": "", + "conversationWith": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771829868, + "role": "default", + "status": "online", + "tags": [] + } +} +``` + + While converting the `Message` object to the `Conversation` object, the `unreadMessageCount` & `tags` will not be available in the `Conversation` object. The unread message count needs to be managed in your client-side code. diff --git a/sdk/react-native/threaded-messages.mdx b/sdk/react-native/threaded-messages.mdx index 76f0bc3a4..5bc3abe14 100644 --- a/sdk/react-native/threaded-messages.mdx +++ b/sdk/react-native/threaded-messages.mdx @@ -46,13 +46,17 @@ Any of the above messages can be sent in a thread. A thread is identified based This can be achieved using the `setParentMessageId()` method provided by the object of the `TextMessage`, `MediaMessage`, and `CustomMessage` class. The id specified in the `setParentMessageId()` method maps the message sent to the particular thread. + +The `parentMessageId` is dynamic and corresponds to the actual `id` of the parent message you want to reply to. In the code examples below, we use placeholder values like `100` or `1`, but in practice, you'll use the actual message ID obtained from your message list or real-time listener. + + **Example to send a text message in a thread in a user conversation:** ```javascript let textMessage = new CometChat.TextMessage(UID, "Hello", CometChat.RECEIVER_TYPE.USER); -textMessage.setParentMessageId(100); +textMessage.setParentMessageId(100); // Replace with actual parent message ID CometChat.sendMessage(textMessage).then( message => { @@ -70,7 +74,7 @@ CometChat.sendMessage(textMessage).then( let receiverId = "UID", receiverType: string = CometChat.RECEIVER_TYPE.USER, textMessage: CometChat.TextMessage = new CometChat.TextMessage(receiverId, "Hello", receiverType), - messageId: number = 100; + messageId: number = 100; // Replace with actual parent message ID textMessage.setParentMessageId(messageId); @@ -91,6 +95,105 @@ The above snippet shows how a message with the text "Hello" can be sent in the t Similarly, using the `setParentMessageId()` method, Media and Custom Messages can be sent in threads too. + +**On Success** — `sendMessage()` returns the sent threaded message with `parentMessageId`: +```json +{ + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-7", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "text": "Hello thread!", + "resource": "REACT_NATIVE-4_0_14-f8c2a36f-89cc-4a1a-8ef9-880f311c0d1d-1771838824248", + "entities": { + "sender": { + "entity": { + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771839550, + "tags": [] + }, + "entityType": "user" + }, + "receiver": { + "entity": { + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "status": "online", + "role": "default", + "lastActiveAt": 1771839549, + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "tags": [] + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "moderation": { + "status": "pending" + } + }, + "text": "Hello thread!", + "id": "25293", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771839550, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771839549, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771839799, + "updatedAt": 1771839799, + "parentMessageId": "25291", // This is the ID of the parent message - will vary based on your actual parent message + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } +} +``` + + + + ### Receiving Real-Time Messages The procedure to receive real-time messages is exactly the same as mentioned in the [Receive Messages](/sdk/react-native/receive-messages) section. This can be achieved using the `MessageListener` class provided by the SDK. @@ -172,7 +275,7 @@ Once you have the object of the `MessagesRequest` class, call the `fetchPrevious ```javascript let limit = 30; -let parentMessageId = 1; +let parentMessageId = 1; // Replace with actual parent message ID let messagesRequest = new CometChat.MessagesRequestBuilder() .setLimit(limit) .setParentMessageId(parentMessageId) @@ -192,7 +295,7 @@ messagesRequest.fetchPrevious().then( ```typescript let limit: number = 30, - parentMessageId: number = 1, + parentMessageId: number = 1, // Replace with actual parent message ID messagesRequest: CometChat.MessagesRequest = new CometChat.MessagesRequestBuilder() .setLimit(limit) .setParentMessageId(parentMessageId) @@ -211,10 +314,299 @@ messagesRequest.fetchPrevious().then( + +**On Success** — `fetchPrevious()` returns an array of messages belonging to the thread: +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-7", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "lastActiveAt": 1771839549, + "name": "Henry Marino", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-7" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771839550, + "name": "Ronald Jerry", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-6" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "moderation": { + "status": "approved" + }, + "resource": "REACT_NATIVE-4_0_14-f8c2a36f-89cc-4a1a-8ef9-880f311c0d1d-1771838824248", + "text": "Hello thread!" + }, + "text": "Hello thread!", + "id": "25293", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771839550, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771839549, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771839799, + "updatedAt": 1771839799, + "parentMessageId": "25291", // Dynamic - matches the parent message's ID you're fetching replies for + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more thread messages up to the specified limit +] +``` + + ## Avoid Threaded Messages in User/Group Conversations While fetching messages for normal user/group conversations using the `MessagesRequest`, threaded messages will be included in the list by default. To exclude threaded messages from the list of user/group messages, use the `hideReplies()` method of the `MessagesRequestBuilder` class. This method takes a boolean argument which, when set to `true`, excludes messages belonging to threads from the list of messages. + +**Without `hideReplies(true)`** — `fetchPrevious()` returns all messages including thread replies (note the second message has `parentMessageId`): +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-6", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "lastActiveAt": 1771829859, + "name": "Ronald Jerry", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-6" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771829868, + "name": "Henry Marino", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-7" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-b495efdd-5a54-4a47-a8ad-237bf8dff679-1771829544163", + "text": "Hello" + }, + "text": "Hello", + "id": "25291", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771829868, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771829859, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771831336, + "deliveredAt": 1771832977, + "readAt": 1771832977, + "updatedAt": 1771832977, + "replyCount": 1, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-7", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "lastActiveAt": 1771839549, + "name": "Henry Marino", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-7" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771839550, + "name": "Ronald Jerry", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-6" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "moderation": { + "status": "approved" + }, + "resource": "REACT_NATIVE-4_0_14-f8c2a36f-89cc-4a1a-8ef9-880f311c0d1d-1771838824248", + "text": "Hello thread!" + }, + "text": "Hello thread!", + "id": "25293", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771839550, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771839549, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771839799, + "updatedAt": 1771839799, + "parentMessageId": "25291", // Dynamic - this links the reply to its parent message (id: 25291) + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + } +] +``` + + ```javascript @@ -302,6 +694,105 @@ messagesRequest.fetchPrevious().then( + +**On Success** — `fetchPrevious()` returns messages excluding thread replies (note: parent messages with `replyCount` are included, but their replies are not): +```json +[ + { + "reactions": [], + "mentionedUsers": [], + "mentionedMe": false, + "receiverId": "cometchat-uid-6", + "type": "text", + "receiverType": "user", + "category": "message", + "data": { + "entities": { + "receiver": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "lastActiveAt": 1771829859, + "name": "Ronald Jerry", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-6" + }, + "entityType": "user" + }, + "sender": { + "entity": { + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771829868, + "name": "Henry Marino", + "role": "default", + "status": "online", + "tags": [], + "uid": "cometchat-uid-7" + }, + "entityType": "user" + } + }, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + }, + "resource": "REACT_NATIVE-4_0_14-b495efdd-5a54-4a47-a8ad-237bf8dff679-1771829544163", + "text": "Hello" + }, + "text": "Hello", + "id": "25291", + "conversationId": "cometchat-uid-6_user_cometchat-uid-7", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-7", + "name": "Henry Marino", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp", + "lastActiveAt": 1771829868, + "role": "default", + "status": "online", + "tags": [] + }, + "receiver": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "lastActiveAt": 1771829859, + "role": "default", + "status": "online", + "tags": [] + }, + "sentAt": 1771831336, + "deliveredAt": 1771832977, + "readAt": 1771832977, + "updatedAt": 1771832977, + "replyCount": 1, + "metadata": { + "@injected": { + "extensions": { + "link-preview": { + "links": [] + } + } + } + } + }, + // ... more messages up to the specified limit (thread replies excluded) +] +``` + + 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. ## Best Practices and Troubleshooting diff --git a/sdk/react-native/transient-messages.mdx b/sdk/react-native/transient-messages.mdx index 9c22a238e..299093294 100644 --- a/sdk/react-native/transient-messages.mdx +++ b/sdk/react-native/transient-messages.mdx @@ -15,7 +15,7 @@ CometChat.sendTransientMessage(transientMessage); -**Available via:** [SDK](/sdk/react-native/transient-messages) | [REST API](/rest-api/messages/list-messages) | [UI Kits](/ui-kits/react-native/overview) +**Available via:** [SDK](/sdk/react-native/transient-messages) @@ -76,6 +76,19 @@ CometChat.sendTransientMessage(transientMessage); + +**On Success** — `sendTransientMessage()` does not return a value, but the transient message object sent looks like: +```json +{ + "receiverId": "cometchat-uid-7", + "receiverType": "user", + "data": { + "LIVE_REACTION": "heart" + } +} +``` + + ## Real-time Transient Messages *In other words, as a recipient, how do I know when someone sends a transient message?* @@ -117,6 +130,30 @@ CometChat.addMessageListener( + +**On Event** — `onTransientMessageReceived` returns the transient message object with sender info: +```json +{ + "receiverId": "cometchat-uid-7", + "receiverType": "user", + "data": { + "LIVE_REACTION": "heart" + }, + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "role": "default", + "status": "online", + "tags": [] + } +} +``` + + **Listener Cleanup** — Always remove your message listeners when the component unmounts to prevent memory leaks and unexpected behavior. Use `CometChat.removeMessageListener("UNIQUE_LITENER_ID")` in your cleanup logic (e.g., inside a `useEffect` return function or `componentWillUnmount`). diff --git a/sdk/react-native/typing-indicators.mdx b/sdk/react-native/typing-indicators.mdx index 07acdcb95..8389847d3 100644 --- a/sdk/react-native/typing-indicators.mdx +++ b/sdk/react-native/typing-indicators.mdx @@ -80,6 +80,16 @@ CometChat.startTyping(typingNotification); + +**startTyping called** — the typing indicator object sent to the receiver: +```json +{ + "receiverId": "cometchat-uid-6", + "receiverType": "user" +} +``` + + ### Stop Typing You can use the `endTyping()` method to inform the receiver that the logged-in user has stopped typing. The receiver will receive this information in the `onTypingEnded()` method of the `MessageListener` class. To send the typing indicator, you need to use the `TypingIndicator` class. @@ -131,6 +141,16 @@ CometChat.endTyping(typingNotification); + +**endTyping called** — the typing indicator object sent to the receiver: +```json +{ + "receiverId": "cometchat-uid-6", + "receiverType": "user" +} +``` + + Custom Data @@ -185,6 +205,46 @@ CometChat.addMessageListener( + +**onTypingStarted** — received when a user starts typing: +```json +{ + "receiverId": "cometchat-uid-7", + "receiverType": "user", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "role": "default", + "status": "online", + "tags": [] + } +} +``` + +**onTypingEnded** — received when a user stops typing: +```json +{ + "receiverId": "cometchat-uid-7", + "receiverType": "user", + "sender": { + "hasBlockedMe": false, + "blockedByMe": false, + "deactivatedAt": 0, + "uid": "cometchat-uid-6", + "name": "Ronald Jerry", + "avatar": "https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp", + "role": "default", + "status": "online", + "tags": [] + } +} +``` + + **Listener Cleanup** — Always remove your message listeners when the component unmounts to prevent memory leaks and unexpected behavior. Use `CometChat.removeMessageListener("UNIQUE_LITENER_ID")` in your cleanup logic (e.g., inside a `useEffect` return function or `componentWillUnmount`). From 243523def5b3f99da7b2eb235f5b06128997dad0 Mon Sep 17 00:00:00 2001 From: Farhan-CometChat Date: Fri, 27 Feb 2026 16:52:50 +0530 Subject: [PATCH 8/8] docs(react-native): Add response accordions with sample data to SDK docs - Add response accordions to block-users.mdx with blockUsers(), unblockUsers(), and fetchNext() response tables - Add response accordions to call-logs.mdx documenting fetchNext() response structure - Add response accordions to presenter-mode.mdx with startPresentation() and stopPresentation() responses - Add response accordions to recording.mdx with startRecording() and stopRecording() responses - Add response accordions to retrieve-users.mdx with fetchNext() response tables - Add response accordions to standalone-calling.mdx with call initiation and response structures - Add response accordions to user-management.mdx with user creation and update responses - Add response accordions to user-presence.mdx with presence subscription responses - Include parameter descriptions, types, and sample values for all API responses - Improve developer experience by providing clear response documentation alongside code examples --- sdk/react-native/block-users.mdx | 118 ++++++++++ sdk/react-native/call-logs.mdx | 158 +++++++++++++ sdk/react-native/presenter-mode.mdx | 123 ++++++++++ sdk/react-native/recording.mdx | 39 ++++ sdk/react-native/retrieve-users.mdx | 284 +++++++++++++++++++++++- sdk/react-native/standalone-calling.mdx | 124 +++++++++++ sdk/react-native/user-management.mdx | 91 ++++++++ sdk/react-native/user-presence.mdx | 34 +++ 8 files changed, 970 insertions(+), 1 deletion(-) diff --git a/sdk/react-native/block-users.mdx b/sdk/react-native/block-users.mdx index bb4d210e5..1b3528b24 100644 --- a/sdk/react-native/block-users.mdx +++ b/sdk/react-native/block-users.mdx @@ -61,6 +61,22 @@ CometChat.blockUsers(usersList).then( + +**On Success** — `blockUsers()` returns an object with each UID as key and result object as value: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `[UID]` | object | Result object for each blocked UID | See below | + +**Result Object (per UID):** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `success` | boolean | Whether the block operation succeeded | `true` | +| `message` | string | Descriptive message about the operation | `"The user with UID cometchat-uid-7 has blocked user with UID cometchat-uid-2 successfully."` | + + + It returns a Array which contains `UID's` as the keys and "success" or "fail" as the value based on if the block operation for the `UID` was successful or not. ## Unblock Users @@ -102,6 +118,22 @@ CometChat.unblockUsers(usersList).then( + +**On Success** — `unblockUsers()` returns an object with each UID as key and result object as value: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `[UID]` | object | Result object for each unblocked UID | See below | + +**Result Object (per UID):** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `success` | boolean | Whether the unblock operation succeeded | `true` | +| `message` | string | Descriptive message about the operation | `"The user with UID cometchat-uid-7 has unblocked user with UID cometchat-uid-2 successfully."` | + + + It returns a Array which contains `UID's` as the keys and `success` or `fail` as the value based on if the unblock operation for the `UID` was successful or not. ## Get List of Blocked Users @@ -170,6 +202,26 @@ let blockedUsersRequest: CometChat.BlockedUsersRequest = new CometChat.BlockedUs + +**On Success** — `fetchNext()` with search filter returns an array of blocked `User` objects matching the search: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-2"` | +| `name` | string | Display name of the user | `"George Alan"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp"` | +| `status` | string | User's online status | `"offline"` | +| `role` | string | User's role | `"default"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1772104172` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `true` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `blockedByMeAt` | number | Timestamp when blocked by current user | `1772173462` | +| `blockedAt` | number | Timestamp of block action | `1772173462` | +| `conversationId` | string | Conversation ID between this user and logged-in user | `"cometchat-uid-2_user_cometchat-uid-6"` | + + + ### Set Direction * CometChat.BlockedUsersRequest.directions.BLOCKED\_BY\_ME - This will ensure that the list of blocked users only contains the users blocked by the logged in user. @@ -201,6 +253,51 @@ let blockedUsersRequest: CometChat.BlockedUsersRequest = new CometChat.BlockedUs + +**On Success** — `fetchNext()` with `BLOCKED_BY_ME` direction returns users blocked by the logged-in user: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-2"` | +| `name` | string | Display name of the user | `"George Alan"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp"` | +| `status` | string | User's online status | `"offline"` | +| `role` | string | User's role | `"default"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1772104172` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `true` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `blockedByMeAt` | number | Timestamp when blocked by current user | `1772173462` | +| `blockedAt` | number | Timestamp of block action | `1772173462` | +| `conversationId` | string | Conversation ID between this user and logged-in user | `"cometchat-uid-2_user_cometchat-uid-6"` | + + + + +**On Success** — `fetchNext()` with `HAS_BLOCKED_ME` direction returns users who have blocked the logged-in user. Returns an empty array if no users have blocked you. + + + + +**On Success** — `fetchNext()` with `BOTH` direction returns all blocked users (both directions): + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-2"` | +| `name` | string | Display name of the user | `"George Alan"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-2.webp"` | +| `status` | string | User's online status | `"offline"` | +| `role` | string | User's role | `"default"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1772104172` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `true` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `blockedByMeAt` | number | Timestamp when blocked by current user | `1772173462` | +| `blockedAt` | number | Timestamp of block action | `1772173462` | +| `conversationId` | string | Conversation ID between this user and logged-in user | `"cometchat-uid-2_user_cometchat-uid-6"` | + + + Finally, once all the parameters are set to the builder class, you need to call the build() method to get the object of the `BlockedUsersRequest` class. Once you have the object of the `BlockedUsersRequest` class, you need to call the `fetchNext()` method. Calling this method will return a list of `User` objects containing n number of blocked users where N is the limit set in the builder class. @@ -243,6 +340,27 @@ blockedUsersRequest.fetchNext().then( + +**On Success** — `fetchNext()` returns an array of blocked `User` objects: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"123456"` | +| `name` | string | Display name of the user | `"Farhan Ahmed"` | +| `avatar` | string | URL to user's avatar image | `"https://st2.depositphotos.com/38197074/46684/v/450/depositphotos_466848082-stock-illustration-initial-letter-vector-logo.jpg"` | +| `status` | string | User's online status | `"offline"` | +| `role` | string | User's role | `"extrarole"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1768988601` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `true` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `metadata` | object | Custom metadata attached to the user | `{"meta": "anyValue"}` | +| `blockedByMeAt` | number | Timestamp when blocked by current user | `1772164515` | +| `blockedAt` | number | Timestamp of block action | `1772164515` | +| `conversationId` | string | Conversation ID between this user and logged-in user | `"123456_user_cometchat-uid-7"` | + + + ## Best Practices diff --git a/sdk/react-native/call-logs.mdx b/sdk/react-native/call-logs.mdx index b025c6931..e802a7ebb 100644 --- a/sdk/react-native/call-logs.mdx +++ b/sdk/react-native/call-logs.mdx @@ -77,6 +77,156 @@ callLogRequestBuilder.fetchNext() }); ``` + +**On Success** — `fetchNext()` returns an array of `CallLog` objects: + + + +**CallLog Array:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| (array) | array | Array of call log objects | [See below ↓](#call-log-object) | + + + +**CallLog Object (each item in array):** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `sessionId` | string | Unique session identifier | `"v1.in.2748663902141719.1772100619..."` | +| `totalAudioMinutes` | number | Total audio duration in minutes | `7.65` | +| `totalVideoMinutes` | number | Total video duration in minutes | `0` | +| `totalDuration` | string | Formatted total duration | `"00:07:39"` | +| `totalDurationInMinutes` | number | Total duration in minutes | `7.65` | +| `hasRecording` | boolean | Whether call has recordings | `true` | +| `initiatedAt` | number | Unix timestamp when call was initiated | `1772100619` | +| `startedAt` | number | Unix timestamp when call started | `1772100622` | +| `endedAt` | number | Unix timestamp when call ended | `1772101081` | +| `initiator` | object | User who initiated the call | [See below ↓](#call-log-initiator-object) | +| `receiver` | object | User who received the call | [See below ↓](#call-log-receiver-object) | +| `mode` | string | Call mode | `"call"` | +| `receiverType` | string | Type of receiver | `"user"` | +| `status` | string | Call status | `"ended"` | +| `totalParticipants` | number | Total number of participants | `2` | +| `type` | string | Type of call | `"audio"` | +| `mid` | string | Message ID | `"21d6e797-1b44-4a70-be73-d915dba206c7"` | +| `participants` | array | List of call participants | [See below ↓](#call-log-participants-array) | +| `recordings` | array | List of recordings | [See below ↓](#call-log-recordings-array) | +| `data` | object | Additional call data | [See below ↓](#call-log-data-object) | + +--- + + + +**`initiator` Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique user identifier | `"cometchat-uid-7"` | +| `name` | string | Display name of the user | `"Henry Marino"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp"` | + +--- + + + +**`receiver` Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique user identifier | `"cometchat-uid-6"` | +| `name` | string | Display name of the user | `"Ronald Jerry"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp"` | + +--- + + + +**`participants` Array:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| (array) | array | Array of participant objects | [See below ↓](#call-log-participant-object) | + + + +**Participant Object (each item in array):** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique user identifier | `"cometchat-uid-6"` | +| `name` | string | Display name of the user | `"Ronald Jerry"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp"` | +| `totalAudioMinutes` | number | User's audio duration in minutes | `7.65` | +| `totalVideoMinutes` | number | User's video duration in minutes | `0` | +| `totalDurationInMinutes` | number | User's total duration in minutes | `7.65` | +| `isJoined` | boolean | Whether user joined the call | `true` | +| `state` | string | Participant state | `"ended"` | +| `deviceId` | string | Device identifier | `"2b1d0b90-b6b9-4c1c-9899-9bf4effe549f@..."` | +| `joinedAt` | number | Unix timestamp when user joined | `1772100622` | +| `leftAt` | number | Unix timestamp when user left | `1772101081` | +| `mid` | string | Message ID | `"21d6e797-1b44-4a70-be73-d915dba206c7"` | + +--- + + + +**`recordings` Array:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| (array) | array | Array of recording objects | [See below ↓](#call-log-recording-object) | + + + +**Recording Object (each item in array):** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `rid` | string | Recording ID | `"noujausedimwfhwl"` | +| `recording_url` | string | URL to download the recording | `"https://recordings-in.cometchat.io/..."` | +| `duration` | number | Recording duration in minutes | `1.045` | +| `startTime` | number | Unix timestamp when recording started | `1772100632` | +| `endTime` | number | Unix timestamp when recording ended | `1772100634` | + +--- + + + +**`data` Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `entities` | object | Entity details for the call | [See below ↓](#call-log-data-entities-object) | + + + +**`data.entities` Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `initiator` | object | Initiator entity wrapper | [See below ↓](#call-log-data-entities-initiator) | +| `receiver` | object | Receiver entity wrapper | [See below ↓](#call-log-data-entities-receiver) | + + + +**`data.entities.initiator` Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `entity` | object | User entity details | `{"uid": "cometchat-uid-7", "name": "Henry Marino", "avatar": "..."}` | + + + +**`data.entities.receiver` Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `entity` | object | User entity details | `{"uid": "cometchat-uid-6", "name": "Ronald Jerry", "avatar": "..."}` | + + + ### Fetch Previous The `fetchPrevious()` method retrieves the previous set of call logs. @@ -97,6 +247,10 @@ callLogRequestBuilder.fetchPrevious() }); ``` + +**On Success** — `fetchPrevious()` returns an array of `CallLog` objects with the same structure as `fetchNext()`. See [fetchNext Response](#call-log-array) for the complete object structure. + + ## Get Call Details To retrieve the specific details of a call, use the `getCallDetails()` method. This method requires the Auth token of the logged-in user and the session ID along with a callback listener. @@ -112,6 +266,10 @@ CometChatCalls.getCallDetails(sessionID, authToken) }); ``` + +**On Success** — `getCallDetails()` returns an array of `CallLog` objects with the same structure as `fetchNext()`. See [fetchNext Response](#call-log-array) for the complete object structure. + + Replace `"SESSION_ID"` with the ID of the session you are interested in. diff --git a/sdk/react-native/presenter-mode.mdx b/sdk/react-native/presenter-mode.mdx index fa865ccd9..f94b70b5c 100644 --- a/sdk/react-native/presenter-mode.mdx +++ b/sdk/react-native/presenter-mode.mdx @@ -124,6 +124,129 @@ useEffect(() => { Always remove call event listeners when the component unmounts using `CometChatCalls.removeCallEventListener(listenerId)`. Failing to remove listeners can cause memory leaks and duplicate event handling. + +**On Event** — `onUserJoined` returns a user object when a participant joins the presentation: + + + +**User Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-6"` | +| `name` | string | Display name of the user | `"Ronald Jerry"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp"` | +| `id` | string | Internal session participant ID | `"cd530243"` | +| `joinedAt` | string | Unix timestamp when user joined (as string) | `"1772095303043"` | +| `isVideoMuted` | boolean | Whether user's video is muted | `true` | +| `isAudioMuted` | boolean | Whether user's audio is muted | `false` | +| `isLocalUser` | boolean | Whether this is the local user | `false` | + + + + +**On Event** — `onUserLeft` returns a user object when a participant leaves the presentation: + + + +**User Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-6"` | +| `name` | string | Display name of the user | `"Ronald Jerry"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp"` | +| `id` | string | Internal session participant ID | `"cd530243"` | +| `joinedAt` | string | Unix timestamp when user joined (as string) | `"1772095303043"` | +| `isVideoMuted` | boolean | Whether user's video was muted | `true` | +| `isAudioMuted` | boolean | Whether user's audio was muted | `false` | + + + + +**On Event** — `onUserListUpdated` returns an array of all current participants in the presentation: + + + +**User Array:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| (array) | array | Array of user objects | [See below ↓](#on-user-list-updated-user-object) | + + + +**User Object (each item in array):** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-7"` | +| `name` | string | Display name of the user | `"Henry Marino"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp"` | + + + + +**On Event** — `onAudioModesUpdated` returns an array of available audio output modes: + + + +**Audio Modes Array:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| (array) | array | Array of audio mode objects | [See below ↓](#on-audio-modes-updated-mode-object) | + + + +**Audio Mode Object (each item in array):** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `type` | string | Type of audio output device | `"SPEAKER"` | +| `selected` | boolean | Whether this mode is currently selected | `true` | + + + + +**On Event** — `onRecordingStarted` returns information about the user who started the recording: + + + +**RecordingStartedBy Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user who started recording | `"cometchat-uid-7"` | +| `name` | string | Display name of the user | `"Henry Marino"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp"` | +| `recordId` | string | Unique identifier for this recording session | `"noujausedimwfhwl"` | +| `id` | string | Internal session participant ID | `"042d0440"` | +| `isLocalUser` | string | Whether this is the local user (as string) | `"true"` | +| `isVideoMuted` | string | Whether user's video is muted (as string) | `"true"` | +| `isAudioMuted` | string | Whether user's audio is muted (as string) | `"false"` | + + + + +**On Event** — `onRecordingStopped` returns information about the user who stopped the recording: + + + +**RecordingStoppedBy Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user who stopped recording | `"cometchat-uid-7"` | +| `name` | string | Display name of the user | `"Henry Marino"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp"` | +| `id` | string | Internal session participant ID | `"042d0440"` | +| `isLocalUser` | string | Whether this is the local user (as string) | `"true"` | +| `isVideoMuted` | string | Whether user's video is muted (as string) | `"true"` | +| `isAudioMuted` | string | Whether user's audio is muted (as string) | `"false"` | + + + The `CometChatCallsEventsListener` listener provides you with the below callback methods: | Callback Method | Description | diff --git a/sdk/react-native/recording.mdx b/sdk/react-native/recording.mdx index d1f32b74f..234cf251a 100644 --- a/sdk/react-native/recording.mdx +++ b/sdk/react-native/recording.mdx @@ -106,6 +106,45 @@ render(){ + +**On Event** — `onRecordingStarted` returns information about the user who started the recording: + + + +**RecordingStartedBy Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user who started recording | `"cometchat-uid-7"` | +| `name` | string | Display name of the user | `"Henry Marino"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp"` | +| `recordId` | string | Unique identifier for this recording session | `"noujausedimwfhwl"` | +| `id` | string | Internal session participant ID | `"042d0440"` | +| `isLocalUser` | string | Whether this is the local user (as string) | `"true"` | +| `isVideoMuted` | string | Whether user's video is muted (as string) | `"true"` | +| `isAudioMuted` | string | Whether user's audio is muted (as string) | `"false"` | + + + + +**On Event** — `onRecordingStopped` returns information about the user who stopped the recording: + + + +**RecordingStoppedBy Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user who stopped recording | `"cometchat-uid-7"` | +| `name` | string | Display name of the user | `"Henry Marino"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp"` | +| `id` | string | Internal session participant ID | `"042d0440"` | +| `isLocalUser` | string | Whether this is the local user (as string) | `"true"` | +| `isVideoMuted` | string | Whether user's video is muted (as string) | `"true"` | +| `isAudioMuted` | string | Whether user's audio is muted (as string) | `"false"` | + + + ## Settings for Call Recording The `CallSettings` class allows you to customise the overall calling experience. The properties for the call/conference can be set using the `CallSettingsBuilder` class. This will eventually give you an object of the `CallSettings` class which you can pass to the `CometChatCalls.Component` to start the call. diff --git a/sdk/react-native/retrieve-users.mdx b/sdk/react-native/retrieve-users.mdx index 5e9b298db..73a1601ff 100644 --- a/sdk/react-native/retrieve-users.mdx +++ b/sdk/react-native/retrieve-users.mdx @@ -56,6 +56,29 @@ CometChat.getLoggedinUser().then( + +**On Success** — `getLoggedinUser()` returns a `User` object containing the logged-in user's details: + + + +**User Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-7"` | +| `name` | string | Display name of the user | `"Henry Marino"` | +| `avatar` | string | URL to user's avatar image | `"https://artriva.com/media/k2/galleries/20/d.jpg"` | +| `authToken` | string | Authentication token for the user | `"cometchat-uid-7_177199269018c2c2995f0b69b3844abc9fdb9843"` | +| `status` | string | User's online status | `"online"` | +| `role` | string | User's role | `"default"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1771853565` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `tags` | array | Tags associated with the user | `["vip"]` | + + + This method will return a `User` object containing all the information related to the logged-in user. ## Retrieve List of Users @@ -91,6 +114,24 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() + +**On Success** — `fetchNext()` with basic limit returns an array of `User` objects: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-6"` | +| `name` | string | Display name of the user | `"Ronald Jerry"` | +| `avatar` | string | URL to user's avatar image | `"https://media.istockphoto.com/id/1682296067/photo/happy-studio-portrait-or-professional-man-real-estate-agent-or-asian-businessman-smile-for.jpg?s=612x612&w=0&k=20&c=9zbG2-9fl741fbTWw5fNgcEEe4ll-JegrGlQQ6m54rg="` | +| `status` | string | User's online status | `"online"` | +| `role` | string | User's role | `"default"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1772163872` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `conversationId` | string | Conversation ID between this user and logged-in user | `"cometchat-uid-6_user_cometchat-uid-7"` | + + + ### Set Search Keyword This method allows you to set the search string based on which the users are to be fetched. @@ -157,6 +198,27 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() + +**On Success** — `fetchNext()` with search filter returns an array of `User` objects matching the search criteria: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"123456"` | +| `name` | string | Display name of the user | `"Farhan Ahmed"` | +| `avatar` | string | URL to user's avatar image | `"https://st2.depositphotos.com/38197074/46684/v/450/depositphotos_466848082-stock-illustration-initial-letter-vector-logo.jpg"` | +| `status` | string | User's online status | `"offline"` | +| `role` | string | User's role | `"extrarole"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1768988601` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `true` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `metadata` | object | Custom metadata attached to the user | `{"metadata": "something"}` | +| `blockedByMeAt` | number | Timestamp when blocked by current user | `1772164515` | +| `blockedAt` | number | Timestamp of block action | `1772164515` | +| `conversationId` | string | Conversation ID between this user and logged-in user | `"123456_user_cometchat-uid-7"` | + + + ### Set Status The status based on which the users are to be fetched. The status parameter can contain one of the below two values: @@ -191,6 +253,24 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() + +**On Success** — `fetchNext()` with status filter returns an array of `User` objects with matching status: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-6"` | +| `name` | string | Display name of the user | `"Ronald Jerry"` | +| `avatar` | string | URL to user's avatar image | `"https://media.istockphoto.com/id/1682296067/photo/happy-studio-portrait-or-professional-man-real-estate-agent-or-asian-businessman-smile-for.jpg?s=612x612&w=0&k=20&c=9zbG2-9fl741fbTWw5fNgcEEe4ll-JegrGlQQ6m54rg="` | +| `status` | string | User's online status | `"online"` | +| `role` | string | User's role | `"default"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1772163872` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `conversationId` | string | Conversation ID between this user and logged-in user | `"cometchat-uid-6_user_cometchat-uid-7"` | + + + ### Hide Blocked Users This method is used to determine if the blocked users should be returned as a part of the user list. If set to true, the user list will not contain the users blocked by the logged in user. @@ -220,6 +300,24 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() + +**On Success** — `fetchNext()` with `hideBlockedUsers(true)` returns an array of `User` objects excluding blocked users: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-6"` | +| `name` | string | Display name of the user | `"Ronald Jerry"` | +| `avatar` | string | URL to user's avatar image | `"https://media.istockphoto.com/id/1682296067/photo/happy-studio-portrait-or-professional-man-real-estate-agent-or-asian-businessman-smile-for.jpg?s=612x612&w=0&k=20&c=9zbG2-9fl741fbTWw5fNgcEEe4ll-JegrGlQQ6m54rg="` | +| `status` | string | User's online status | `"online"` | +| `role` | string | User's role | `"default"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1772163872` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `conversationId` | string | Conversation ID between this user and logged-in user | `"cometchat-uid-6_user_cometchat-uid-7"` | + + + ### Set Roles This method allows you to fetch the users based on multiple roles. @@ -251,6 +349,24 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() + +**On Success** — `fetchNext()` with roles filter returns an array of `User` objects with matching roles: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-6"` | +| `name` | string | Display name of the user | `"Ronald Jerry"` | +| `avatar` | string | URL to user's avatar image | `"https://media.istockphoto.com/id/1682296067/photo/happy-studio-portrait-or-professional-man-real-estate-agent-or-asian-businessman-smile-for.jpg?s=612x612&w=0&k=20&c=9zbG2-9fl741fbTWw5fNgcEEe4ll-JegrGlQQ6m54rg="` | +| `status` | string | User's online status | `"online"` | +| `role` | string | User's role | `"default"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1772163872` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `conversationId` | string | Conversation ID between this user and logged-in user | `"cometchat-uid-6_user_cometchat-uid-7"` | + + + ### Friends Only This property when set to true will return only the friends of the logged-in user. @@ -280,6 +396,24 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() + +**On Success** — `fetchNext()` with `friendsOnly(true)` returns an array of `User` objects who are friends: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-6"` | +| `name` | string | Display name of the user | `"Ronald Jerry"` | +| `avatar` | string | URL to user's avatar image | `"https://media.istockphoto.com/id/1682296067/photo/happy-studio-portrait-or-professional-man-real-estate-agent-or-asian-businessman-smile-for.jpg?s=612x612&w=0&k=20&c=9zbG2-9fl741fbTWw5fNgcEEe4ll-JegrGlQQ6m54rg="` | +| `status` | string | User's online status | `"online"` | +| `role` | string | User's role | `"default"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1772163872` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `conversationId` | string | Conversation ID between this user and logged-in user | `"cometchat-uid-6_user_cometchat-uid-7"` | + + + ### Set Tags This method accepts a list of tags based on which the list of users is to be fetched. The list fetched will only contain the users that have been tagged with the specified tags. @@ -311,6 +445,23 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() + +**On Success** — `fetchNext()` with tags filter returns an array of `User` objects with matching tags: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"user509"` | +| `name` | string | Display name of the user | `"again stokes"` | +| `status` | string | User's online status | `"offline"` | +| `role` | string | User's role | `"default"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1759921301` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `conversationId` | string | Conversation ID between this user and logged-in user | `"cometchat-uid-7_user_user509"` | + + + ### With Tags This property when set to true will fetch tags data along with the list of users. @@ -340,6 +491,25 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() + +**On Success** — `fetchNext()` with `withTags(true)` returns an array of `User` objects including the `tags` field: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-6"` | +| `name` | string | Display name of the user | `"Ronald Jerry"` | +| `avatar` | string | URL to user's avatar image | `"https://media.istockphoto.com/id/1682296067/photo/happy-studio-portrait-or-professional-man-real-estate-agent-or-asian-businessman-smile-for.jpg?s=612x612&w=0&k=20&c=9zbG2-9fl741fbTWw5fNgcEEe4ll-JegrGlQQ6m54rg="` | +| `status` | string | User's online status | `"online"` | +| `role` | string | User's role | `"default"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1772163872` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `tags` | array | Tags associated with the user | `["vip"]` | +| `conversationId` | string | Conversation ID between this user and logged-in user | `"cometchat-uid-6_user_cometchat-uid-7"` | + + + ### Set UIDs This method accepts a list of UIDs based on which the list of users is fetched. A maximum of `25` users can be fetched. @@ -371,6 +541,24 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() + +**On Success** — `fetchNext()` with UIDs filter returns an array of `User` objects for the specified UIDs: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-5"` | +| `name` | string | Display name of the user | `"John Paul"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp"` | +| `status` | string | User's online status | `"offline"` | +| `role` | string | User's role | `"admin"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1772087140` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `conversationId` | string | Conversation ID between this user and logged-in user | `"cometchat-uid-5_user_cometchat-uid-7"` | + + + ### Sort By This method allows you to sort the User List by a specific property of User. By default the User List is sorted by `status => name => UID` . If `name` is pass to the `sortBy()` method the user list will be sorted by `name => UID`. @@ -403,6 +591,23 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() + +**On Success** — `fetchNext()` with `sortBy("name")` returns an array of `User` objects sorted by name: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"1"` | +| `name` | string | Display name of the user | `"1"` | +| `status` | string | User's online status | `"offline"` | +| `role` | string | User's role | `"default"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1770017972` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `conversationId` | string | Conversation ID between this user and logged-in user | `"1_user_cometchat-uid-7"` | + + + ### Sort By Order This method allows you to sort the User List in a specific order. By default the user list is sorted in ascending order. @@ -434,6 +639,23 @@ let usersRequest: CometChat.UsersRequest = new CometChat.UsersRequestBuilder() + +**On Success** — `fetchNext()` with `sortByOrder("desc")` returns an array of `User` objects in descending order: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"voip3"` | +| `name` | string | Display name of the user | `"voip3"` | +| `status` | string | User's online status | `"offline"` | +| `role` | string | User's role | `"default"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1770193733` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `conversationId` | string | Conversation ID between this user and logged-in user | `"cometchat-uid-7_user_voip3"` | + + + Finally, once all the parameters are set to the builder class, you need to call the build() method to get the object of the UsersRequest class. Once you have the object of the UsersRequest class, you need to call the fetchNext() method. Calling this method will return a list of User objects containing n number of users where n is the limit set in the builder class. @@ -477,6 +699,32 @@ usersRequest.fetchNext().then( + +**On Success** — `fetchNext()` returns an array of `User` objects: + + + +**User Object (per item in array):** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-6"` | +| `name` | string | Display name of the user | `"Ronald Jerry"` | +| `avatar` | string | URL to user's avatar image | `"https://media.istockphoto.com/id/1682296067/photo/happy-studio-portrait-or-professional-man-real-estate-agent-or-asian-businessman-smile-for.jpg?s=612x612&w=0&k=20&c=9zbG2-9fl741fbTWw5fNgcEEe4ll-JegrGlQQ6m54rg="` | +| `status` | string | User's online status | `"online"` | +| `role` | string | User's role | `"default"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1772163872` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `conversationId` | string | Conversation ID between this user and logged-in user | `"cometchat-uid-6_user_cometchat-uid-7"` | +| `tags` | array | Tags associated with the user (when `withTags(true)`) | `["vip"]` | +| `metadata` | object | Custom metadata attached to the user (if set) | `{"metadata": "something"}` | +| `blockedByMeAt` | number | Timestamp when blocked by current user (if blocked) | `1772164515` | +| `blockedAt` | number | Timestamp of block action (if blocked) | `1772164515` | + + + ## Retrieve Particular User Details To get the information of a user, you can use the `getUser()` method. @@ -518,7 +766,28 @@ The `getUser()` method takes the following parameters: | --------- | ---------------------------------------------------------- | | UID | The UID of the user for whom the details are to be fetched | -It returns the `User` object containing the details of the user. + +**On Success** — `getUser()` returns a `User` object containing the requested user's details: + + + +**User Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-5"` | +| `name` | string | Display name of the user | `"John Paul"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-5.webp"` | +| `status` | string | User's online status | `"offline"` | +| `role` | string | User's role | `"admin"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1772087140` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `tags` | array | Tags associated with the user | `["tag1"]` | +| `conversationId` | string | Conversation ID between this user and logged-in user | `"cometchat-uid-5_user_cometchat-uid-7"` | + + ## Get online user count @@ -553,6 +822,19 @@ CometChat.getOnlineUserCount().then( + +**On Success** — `getOnlineUserCount()` returns an object with the count: + + + +**Response Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `count` | number | Total number of online users | `2` | + + + This method returns the total online user count for your app. ## Best Practices diff --git a/sdk/react-native/standalone-calling.mdx b/sdk/react-native/standalone-calling.mdx index 4837548b9..eabf1d10f 100644 --- a/sdk/react-native/standalone-calling.mdx +++ b/sdk/react-native/standalone-calling.mdx @@ -107,6 +107,20 @@ CometChatCalls.generateToken(sessionId, userAuthToken).then( | `sessionId` | A unique session ID for the call. Generate this yourself or use a shared ID for participants to join the same call. | | `userAuthToken` | The user auth token obtained from the CometChat REST API. | + +**On Success** — `generateToken()` returns a `GenerateToken` object containing the session ID and JWT token: + + + +**GenerateToken Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `sessionId` | string | Unique identifier for the call session | `"v1.in.2748663902141719.1772095292a49c6a5198e07f9096447749e87124204d95cfc8"` | +| `token` | string | JWT token for authenticating the call session | `"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImNjcHJvX2p3dF9yczI1Nl9rZXkxIn0..."` | + + + ## Start Call Session Use the `CometChatCalls.Component` to render the call UI. This component requires a call token (generated in the previous step) and a `CallSettings` object that configures the call UI and behavior. @@ -390,6 +404,94 @@ Always remove call event listeners when the component unmounts using `CometChatC | `onScreenShareStopped()` | Invoked when the local user stops sharing a screen. | | `onError(error)` | Invoked when an error occurs during the call session. | + +**On Event** — `onUserJoined` returns a user object when a participant joins the call: + + + +**User Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-6"` | +| `name` | string | Display name of the user | `"Ronald Jerry"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp"` | +| `id` | string | Internal session participant ID | `"cd530243"` | +| `joinedAt` | string | Unix timestamp when user joined (as string) | `"1772095303043"` | +| `isVideoMuted` | boolean | Whether user's video is muted | `true` | +| `isAudioMuted` | boolean | Whether user's audio is muted | `false` | +| `isLocalUser` | boolean | Whether this is the local user | `false` | + + + + +**On Event** — `onUserLeft` returns a user object when a participant leaves the call: + + + +**User Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-6"` | +| `name` | string | Display name of the user | `"Ronald Jerry"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-6.webp"` | +| `id` | string | Internal session participant ID | `"cd530243"` | +| `joinedAt` | string | Unix timestamp when user joined (as string) | `"1772095303043"` | +| `isVideoMuted` | boolean | Whether user's video was muted | `true` | +| `isAudioMuted` | boolean | Whether user's audio was muted | `false` | + + + + +**On Event** — `onUserListUpdated` returns an array of all current participants in the call: + + + +**User Array:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| (array) | array | Array of user objects | [See below ↓](#on-user-list-updated-user-object) | + + + +**User Object (each item in array):** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-7"` | +| `name` | string | Display name of the user | `"Henry Marino"` | +| `avatar` | string | URL to user's avatar image | `"https://assets.cometchat.io/sampleapp/v2/users/cometchat-uid-7.webp"` | + + + + +**On Event** — `onAudioModesUpdated` returns an array of available audio output modes: + + + +**Audio Modes Array:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| (array) | array | Array of audio mode objects | [See below ↓](#on-audio-modes-updated-mode-object) | + + + +**Audio Mode Object (each item in array):** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `type` | string | Type of audio output device | `"SPEAKER"` | +| `selected` | boolean | Whether this mode is currently selected | `true` | + + + + +**On Event** — `onCallSwitchedToVideo` is invoked when an audio call is upgraded to video. This event may not include additional data. + + ## End Call Session To end the call session and release all media resources (camera, microphone, network connections), call `CometChatCalls.endSession()` in the `onCallEndButtonPressed()` callback. @@ -579,6 +681,28 @@ CometChatCalls.getAudioOutputModes().then( + +**On Success** — `getAudioOutputModes()` returns an object containing an array of available audio modes: + + + +**Response Object:** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `modes` | array | Array of available audio output modes | [See below ↓](#get-audio-modes-mode-object) | + + + +**Mode Object (each item in `modes` array):** + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `type` | string | Type of audio output device | `"SPEAKER"` | +| `selected` | boolean | Whether this mode is currently selected | `true` | + + + ### End Call Terminates the current call session and releases all media resources (camera, microphone, network connections). After calling this method, the call view should be closed. diff --git a/sdk/react-native/user-management.mdx b/sdk/react-native/user-management.mdx index b38fdffda..e6a8b0afd 100644 --- a/sdk/react-native/user-management.mdx +++ b/sdk/react-native/user-management.mdx @@ -92,6 +92,40 @@ CometChat.createUser(user, authKey).then( + +**On Success** — `createUser()` returns the created `User` object: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"test_user_1772166127823"` | +| `name` | string | Display name of the user | `"Test User"` | +| `role` | string | User's role | `"default"` | +| `status` | string | User's online status | `"offline"` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `createdAt` | number | Unix timestamp when user was created | `1772166128` | + +When creating a user with all optional fields set: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"test_full_1772166127993"` | +| `name` | string | Display name of the user | `"Full Test User"` | +| `avatar` | string | URL to user's avatar image | `"https://example.com/avatar.png"` | +| `link` | string | URL to user's profile page | `"https://example.com/profile"` | +| `role` | string | User's role | `"default"` | +| `status` | string | User's online status | `"offline"` | +| `statusMessage` | string | Custom status message | `"Hello World"` | +| `metadata` | object | Custom metadata attached to the user | `{"custom": "data"}` | +| `tags` | array | Tags associated with the user | `["tag1", "tag2"]` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `createdAt` | number | Unix timestamp when user was created | `1772166129` | + + + UID can be alphanumeric with underscore and hyphen. Spaces, punctuation and other special characters are not allowed. CometChat automatically converts any uppercase characters in the UID to lowercase. @@ -147,6 +181,40 @@ CometChat.updateUser(user, authKey).then( + +**On Success** — `updateUser()` returns the updated `User` object: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"test_user_1772167015122"` | +| `name` | string | Display name of the user | `"Updated Test User"` | +| `role` | string | User's role | `"default"` | +| `status` | string | User's online status | `"offline"` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `createdAt` | number | Unix timestamp when user was created | `1772167016` | + +When updating a user with all optional fields: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"test_full_1772167015291"` | +| `name` | string | Display name of the user | `"Updated Full User"` | +| `avatar` | string | URL to user's avatar image | `"https://example.com/new-avatar.png"` | +| `link` | string | URL to user's profile page | `"https://example.com/new-profile"` | +| `role` | string | User's role | `"admin"` | +| `status` | string | User's online status | `"offline"` | +| `statusMessage` | string | Custom status message | `"Updated status"` | +| `metadata` | object | Custom metadata attached to the user | `{"updated": true}` | +| `tags` | array | Tags associated with the user | `["updated-tag"]` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `createdAt` | number | Unix timestamp when user was created | `1772167016` | + + + Please make sure the `User` object provided to the `updateUser()` method has the `UID` of the user to be updated set. ## Updating logged-in user @@ -196,6 +264,29 @@ CometChat.updateCurrentUserDetails(user).then( + +**On Success** — `updateCurrentUserDetails()` returns the updated `User` object with additional session data: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-7"` | +| `name` | string | Display name of the user | `"Henry Marino"` | +| `avatar` | string | URL to user's avatar image | `"https://artriva.com/media/k2/galleries/20/d.jpg"` | +| `authToken` | string | Authentication token for the user | `"cometchat-uid-7_177199269018c2c2995f0b69b3844abc9fdb9843"` | +| `role` | string | User's role | `"default"` | +| `status` | string | User's online status | `"online"` | +| `statusMessage` | string | Custom status message | `"Testing CometChat SDK"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1772163866` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | +| `tags` | array | Tags associated with the user | `["vip"]` | +| `wsChannel` | object | WebSocket channel information | `{"identity": "[2748663902141719]cometchat-uid-7"}` | +| `settings` | object | App settings and feature flags (large object with trial info, extensions, parameters) | See CometChat Dashboard | +| `jwt` | string | JSON Web Token for API authentication | JWT string | + + + By using the `updateCurrentUserDetails()` method one can only update the logged-in user irrespective of the UID passed. Also, it is not possible to update the role of a logged-in user. ## Deleting a user diff --git a/sdk/react-native/user-presence.mdx b/sdk/react-native/user-presence.mdx index 69f414f69..f03f1fd85 100644 --- a/sdk/react-native/user-presence.mdx +++ b/sdk/react-native/user-presence.mdx @@ -82,6 +82,40 @@ CometChat.addUserListener( + +**On Event** — `onUserOnline` returns a `User` object when a user comes online: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-7"` | +| `name` | string | Display name of the user | `"Henry Marino"` | +| `avatar` | string | URL to user's avatar image | `"https://artriva.com/media/k2/galleries/20/d.jpg"` | +| `status` | string | User's online status | `"online"` | +| `role` | string | User's role | `"default"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1772174142305` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | + + + + +**On Event** — `onUserOffline` returns a `User` object when a user goes offline: + +| Parameter | Type | Description | Sample Value | +|-----------|------|-------------|--------------| +| `uid` | string | Unique identifier of the user | `"cometchat-uid-7"` | +| `name` | string | Display name of the user | `"Henry Marino"` | +| `avatar` | string | URL to user's avatar image | `"https://artriva.com/media/k2/galleries/20/d.jpg"` | +| `status` | string | User's online status | `"offline"` | +| `role` | string | User's role | `"default"` | +| `lastActiveAt` | number | Unix timestamp of last activity | `1772174136215` | +| `hasBlockedMe` | boolean | Whether this user has blocked the current user | `false` | +| `blockedByMe` | boolean | Whether the current user has blocked this user | `false` | +| `deactivatedAt` | number | Timestamp when user was deactivated (0 if active) | `0` | + + + | Parameter | Description | | ------------ | --------------------------------------------- | | `listenerID` | An ID that uniquely identifies that listener. |

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 M)78&qol`;+0GoDt(EtDd literal 0 HcmV?d00001 diff --git a/images/xcode-notificaion-service-screenshot.png b/images/xcode-notificaion-service-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..c974c7c67ab3511ba7bc32cb7ee128ae7ba7c862 GIT binary patch literal 410473 zcmbTe1z225(=H0Z-2w!6*WfUNySuvucN-u$1ef6M1cwkjxVvj`3Bld{PPTk|-+Q0` zob#P|o=Gp(>h9H2)%Dg}H3?TzkVHYmM}&ZYK#`UbQ-Od$0zyE*!NS9W?|5d2xj;Z5 z%UOwvDoKlqk}5ene6X@Lhk%d@Ptt_bQq?37@GujBM-TIl`kF#YPT?Pgt^x5wS4{+y zH0m8zU<3hOrO_&RAXa4{tyZP~TU=}Xw|#AqP}oH{Hckw$2#|GGBonXv6V116r}yLD z?WZlfF;Ea~kt|8S^3x%HN?(}2?|P{y{P`AVA5RDZ!4gt6cK~;=D6^!*5yI~7$-~TEEL3ol zL^!*8lY01!`rTHpq8>8tmLx>n-2F#wY6yIvI16lewmej#4@jAmA~nz^f?+-v7a!os z44`XJt^!=9lOB$)s$JP$zoZG|5A9mS7^yP{NuZ*S6g5BbzFP3UH16!sf7<=}NuFO8 z2eV)lZ~j<$Jc^Y{BlND4lAj#Y#12A9kCE_7)8s=kIi=OJ>JuUXmU{E}eJDIz8 z0RA4*7@a^QlWZs&p5%gV7#)tz$LM(y(Mf;>)r3FHM(m<&a|9EIRQnrU=P0{L<9 z?fYRpM$+VP%B~lBp9-KT&Rh1M9RNjvOn^J1>}ce>?v#t#EfKZ)ZeoPHpz|KRuL7Tg zu>>n9;%P$AcFEtuK$kfW43SHJtcV!6F1&wvUsltU#ldYoNOFt21Iysa9=81xrl!Xf z>0)zBZGW3;`l*CRJriWkCCDLzjnSy>t$^Lt^n+PGupMudQNtvKvRU#sxex)20DmdUL9<<;9 zJy7L4wfHEpI0#~4iKp1GyRQgFsLfyL9$)zdM}3WX;t)to-uAG6+v~~h6*7T%AN)?N zt`EhLWCaN=R8nv;(~0ZkedYkJU$?0U%_ig~eO{!a%l9TJF8bl2T%-dylsTH`!-owG zr5Wtofwnw8wf?jwNXJh74ItqP?)VX+_KDKUaM@Q0t5>F=>XXShlD_ajm42lsTCM^~ z>qV=km=ao>XEz_UnlG`l8GvbaFW(c*IoxiSMN7paz!8KyJ|HHmPp5{uvpdFQObg(y z6)vfbDv&H3>>QS;W`-LYoC!Ce{w^##-bu4KRtyY@gsJ|o}48)?jc$9 ze9FP$gcv8pq&0(~N7W>TKN}McRm>4!h5gkD`)eC{#UJ+!DuDE@SRhXv@|Ui?+6}&x z0Bs{;Eo2!XJS~Lz0GY2aws4$AEQ@IALJT~pzL2|J;*QuWpUR5~fN(w=oOk}D@CbQi z$YLb#g&8rtd-04Z1f)nYV|q!4r10azrO;v6(6j>+$;v;=m=UN%K7|pA#86m#R`^Nn zOtLThBDPlWt}NytSE2-)kJ!9`kOMhdv^YO)Pp%G~Ng|~H+miD;oSj%~!R}PKCGG>^ z@c_h^Pw(HWjzXH6>M>%iRi-!00cOM;*Hu_d5}CM zW}28yKHwuxLimr~=3et&`Cizq_a-#wWHmWre~)MggW=)56}WVoM4hFXRs2U7+W2T5qt-^xbNP{orMj^oCjvtMm!eKB;=PJt= zDiCcT#ZpX?YnXd$t-?{s(VYHq3?^MYJ(Q!`=EmlI9kr#n^^O(O%u=PB#$hR!^s)>< zNw-A5qD}uX_(l}ApVh(i#;Di`3>(?9t~@o6%d-sD8)(uzp4&Rl#4=soY+s*H2esUPWFgUYgfyhqYHw z*DhC@``r8MoSi5~$oVKA@NBtw%qIaF78MIxU5nE-j{|FLVkpPRrpUYa_T0AIN8D^& zh+OgbcC38Hvo@m~H|*nF1~wmin+Af7w@k^ov~8Scf8xoe^cnAbqt~L*_WAPZ3)vUM z8M`k;Ur0tP#HM)5~a(pATP{KETXGqybX$SB81tvgy6MS}gx_M%q;+^KUs{kbcM?yrx1Huyk8&MBYBw+@jVN~P095&y%yP0i4Kr`PC z-?8I&eqnEsz2JNVCaf3N1{WM2O3VPMf{I!ddi>^u?Gn^zED2^k`aq50`#D z42`YI|I#>}-?rb({?$J9%%>Yl)MwByuq}LccB{2Fb#OjDGseE|(y>cofNH>N(9)Kz z@GYA%z0P!6)Pdch{g&&LnIu^;eL^FL*-+K6-J$*zO3+0xZ(X5-hEP|5%K~jTq$8nY z^fmXDpo+#r;8qI)2c1v}e-fjF=pBg`9*AX-k(RxLxrAkr6J&o@gDxVaHCPsR2&BmN z*Bm)Sazo1^@nVzXXXL72I}&cvZ(?jUXXE2_y+|MOAZMhY#E}0?8jssdePN&IHal99 zQxHC-Jf%JrYf9Za8p%sE5|%~W0=RL@^jnE&T0ZAGkGN}q_7brcvFpz0_3xbv*O%T- z_(hYY$R&kC!(AMwf~n&E2CWcd z8gs_I*ypF@Mfv^ne(P2AzR#N~qqdFaNyR3OMT!fYN*w;7vvIAgbB-B+i~I-0WCsmT zjp|f}s<$1Zs6%V<&(t(*7MkNi_9phC#Jns_r*UGs@f5tgJ)r(0yet)OtMEFTFT0~| z?2l%~-?E&=1k~3utD*d^ma(}a9Nyj{eMBrnTpO23bu((1w;ejV;dOUO9`{svr*_w) z_p!>zei=C98M(WfGm+L|2lc3GZ(7Ax zt+nKCle=quHpwz^P^QZ7@cKCU^z5{E-HkD;$+c&CqNsb?#azLB$DAYuAvx>OxBC`* z9gT59Yptf+uJ2b;Z&G~Hg2sJSnRaFUcgO1<&V&VyD)UMv{l|sx`-kJnEr|}=iu%=B z>*^Q=Q>|SlJ;Nv@47K#t8uyxuG<;%-SR11k9Jk-CUr%&Baf9^mD~+54mK4H zWz6deD+XVm&trm#iv5gUm0D(uEPjkDwotZww>Gg>nE$>of5NrWmXBJgI(vO2z3SrR z(7E=@EA+t*W%ScGAEO+T^;(h{-_`~}Tfb$ z6;IkLCEZBPk**vfzqL8*B^@`d+p`FYS&BYM*ccq*V?k>Ed2it5T~EWlU85ppR+BT^ zgV{joS5*sNgomA8tMUB;i`I#{>}#O+9^s?jjA!Fz^l{ZOoS)nCwNa?9E?%%2h%F1Ft7qjd-_J;pzLHyk!VeQG{RdMVfUYkr!WCz||d)~|?E8{;Vee;S?eiIi2`>J=aDd^+M^3>9d+SyJ7p(X6&MGv9O0kH*y z;B(rNB3K(iIRPX|1bYWnlI2WaPIq;@pUb`~Z<5RjP?>{?5_m-#dm99?`hZ^!b}u5# zwWL4D%R|tEui+t}A@Lz#z*msquK*;$f377UX(6Egxc>$MBGd{3`mZ_);PUq;4*dPy z=Fbu;{u2Zo_%BTG7nJ+v@7hSfT&TaV;eNX|5W=dW($e5k)zsPC+}_2~!8Mf03LAU_ z!BI*Z?DgPK{r*Bqt5BYS`(LzD({k04m*X>auwynhb1*Sy2H83O?gs)0;samWnY$X3 zg6wSVUHCx!#iaasfnAQc|F^*#|xq zF^RvLga6_uw{&%Nq3CnwC zR+j(t4Q>kjeV0$k3S@4pEoNm0UNi7J1m1J=@&Ny6@c(=C&ny4cRO_FnY&_gt|8DxP zNB`fZ>MrKaq7HW8m%0l4vtfTV{`bSb8Uk5<&;4I(@#jMSaTmPO0*FAC|LmFoqHix@ z6nG;Et;7`7z$IABet)2X!2i(xS%R;jq0860ru!ivgdn8Fgw;ThNBVI7vtqcu9LjOz z(~*uc*w~OrxzlPwU54mI9_Y}89>QLyZMSO~q+EPbs-I&>#i5nUrVB4S9KI!Fn0cJu z*q=6GtpzPpvM10PQYT3N%5c~MCa|CKV`4!=LkbI_qyH{Q@iBOu9g8ELi&6~3`_(9| z|9>LyOzupG4884l&w@%x;)oP~PrO$Fyc&dn>d2ome{R8lv&4VwnGkvyA9Q}~ z6=U#jNsA0-!apOt6BdG>@b$;A_%KPvL`e_ACqzKL8}#9CrT!jam=8SsChv_t z*3jpF-u7SaB)Sj07}LHs{KS+;5#@(}MtBC^M2k|y|LYy>>#6xe$DVs9bAyZ!b(0?Xf9@?TDb6#mHrLrR~6w}>${ zD&9=-CvESJ=)&GgvaIWe)pgX{GgR;f6N_y9tAAk%u%PCWCBpxsdH?0s1iV7ONgFQC zzcN?(l(rzKky)^gn}xz2wNDppfrat|_itr`4zTJU?E0;GMw1CHFafEeq`psgY7Ms9^eTm{SwPQt9A-T+$r!@$ zW@PE%S6*mx)lf`oIVq>D-n_$w>gAoWWKIU3yUoxlg63 z9V`ueb9qIl)u?z^Z?!tCaMp-LQ)1jBapRN=aF!4Eay^y!QESmimcix2=X1Y9|9B_7 zicp8zc58q~ua)a>4VMGjLVy|Qi^MIpu0M!)0@|-=4X2U?p{Sm&`B={U8oP0_T}OBu zx@dqpl=IJ6|BuAem@JM%(`0z=ru1td=$>fLFOZq2>0sx?9lg7j0D~9jANin_1j|P| zna^&PN6A&oDO=YmT?8&mHpOHTgXUg}XsG3AYR%OEi674s@l}vW2%>UvOwNzKR*zHS zB<9O(AHpO6Y1-}Sf~I&Hr8H)J+sAu0x8wONR6-u~Bx!MNy`gxjZLjy~TYb?s1I_+P zDY(pfmL!K+=i39y-wLI#$?7eq;$L`tmIV40VhDLlyc?@f8v}x1XJUu|sYfg65!eg| zXXV=ETv^eiWP*z}>9kX(9KI_&GM~vqC|H^_md0}g6(4U-i=Q9SCaZG%z97jZN6T}0 z%}Nc&Q$=PK;jvpxXY#rnZ=bo-YgUPwuluc|Hkjd8)jezR=A+tiIEM6XsNWi|7qXefc2@2TVdMi-yYHMNI{iv&7Q)ONh% zr~KbX;$KJc|E35KLYGqK;pNu{=#vT`vq~0ceyJsRX^4G3hTr@_!nVcyr$(JkQlN)o zG{L<+B0|DEjPu+6T3rpH!79Ln>b>rgc@i;67E*Xo62tSuL(Lu{D=(%Rj}Mo77oRNW|o;muHrBn~x+HJ&-K0 z2PsD;SMH@4`sQu*MJgX^_rIjrj5Ahee&ug8lN? z%Knd9xSf%V1$UiRGX(ieo*{vlh%BKhACTMLlq5-!I1(-`wuMLb%gZiFnMzUFMMme( z=d1mhW#NZg5~0KS>c&`8XBv9Pu%Rc}B{b?cAdL+)tgj#aPpUo|r}Q3H^s}(V5EC%N0CM*RC%jQBYUEyMytW@6b3Rd^g_5Xb13mYa>dQGi z);@{{H$YvEw>G;-m7Deu1@E%7YZ=2fp9Wh{q9$F%WC;}agrWg1Fje7{%z8~i z(fEEcDa`s8^z+Z8Kse{)o^sI%{*(;$`A6Q14(mD1t2s@>sT{v&ah*PZ=6I&HbGK`_9^!8ZAw>H|!Twul#E}u@ z;nzqWV`$t6%K+!xyUe$Gxs=I*do%^YqAvx&@ExA8oF&u*U%W-AYA9Y8zb%&&W-K#J<+2D<|LRd0|vpaDI* zjqR5+=&-V}#60p>!{Jy4cd5z_z3cOX+cHzbDYP?M?+u&O3o$aZkZV6Zrpez6@*hn4 zFZlgF6r$ZJ@Q#uCADbT7*%R?EJDTrL+VpV`pNQBk!e0M7kv)hE7>e{6`mYlYWQl%e zLhMbLNkBtrup8`^VIXiTFPZsEU>=p&gT*0dSIqn&&k3f5CU{o~+Nbp7=5Re{zIxpV zE|AYO^yawKsOwDwfto_OTIH8yiJ2I!{B~A`%MT;TNo?%GeELguuGdSPeC}88hycEs z4Yof-{AxtXtazP&=5j~kHfC+S_C;XRXMgm(REZ({u}?zX_u_S@nGWz^)^7qShxkNG zFN!1LZn|cx96&#!5$5LjE|pGyrPwAiJZI5qO*JqUKLndLm40MA^)tcOhXk&grL%_P z<+j0+fOu2kBYK@Wcx=$Mx=a#1CzV2GD)Wnv@@HSoY6DTh*QZ*|l@A64v(<{H9j}5j zLp86*jq6i!c?!QFE<~Hf~v4z4crn^f{Ii z_^h<^J9_f^2~PxcRBC3@{vNE5^D!S74vu>m;n&#^rY-v_IeKD_E+xnW8`t zK?u71HBo%IJ8`Hw%XJ#bQU(k)L&%d$W1Fhf<=($LU*DtM{%$&e`T(9b;il6@7HMg>y?6F{u3y;e zYh{_Poe+@ac33IIqEVRqetl>KXl!|5WOG|K)Z6m)!$ALb`P`?g@;~ELQby?DD?%K; zEt-E63=Qf{X(V-VT>4tRdHb-h?UEH=?TLe-fq}gU=q6B%@GtvBEC9_&U&EcZ=y-nA zZ;W}t|6)PMMDT*@{0+?mc8(8j&)RQSgCu0jp$X(}%J@7fCvFW!19@NP%Cr;c)$V9# z18#-PULGARc9~SaM5z_K+W}TkG@#!NLQgC=R^r)_Ue;T#Wqz}m_z>!Js@Lq5^l)_| z3P}4|d>n)}tjw>`I(M_1<2Sw5_PAHsxHhYBa|2%R*?e<`GM%Cba-3!2{_$C>8OxU^ zn1)ErC%M+goeg0y^baHIUxD0oncV35l3?gufk&(T&5Xmb6Jj`ytZn~j(XhvCQ8)