Overview
Blocking a user stops them from sending messages to the blocker. The CometChat UIKit handles most behaviors internally:- Composer Hidden: The message composer is hidden when chatting with a blocked user.
- Unblock Prompt: An “Unblock” button is displayed to reverse the block.
- Message Restrictions: Blocked users cannot send messages to the blocker.
Prerequisites
- Android Studio project with CometChat Android UI Kit v5 added to
build.gradle
. - CometChat App ID, Auth Key, and Region configured and initialized.
<uses-permission android:name="android.permission.INTERNET"/>
inAndroidManifest.xml
.- Logged-in user via
CometChat.login()
. - Existing one-on-one chat screen using
CometChatMessageList
andCometChatMessageComposer
.
Components
Component / Class | Role |
---|---|
UserDetailActivity.java | Displays user profile and provides block/unblock options. |
MessagesActivity.java | Hosts the chat screen and toggles UI based on block state. |
CometChatUIKit.blockUsers() | API to block one or more users by UID. |
CometChatUIKit.unblockUsers() | API to unblock one or more users by UID. |
User.isBlockedByMe() | Checks if the current user has blocked this user. |
unblockLayout (View) | Layout shown when a user is blocked, containing unblock. |
CometChatMessageComposer | Hidden when chatting with a blocked user. |
Integration Steps
1. Detect Block Status
Update UI when block state changes.MessagesActivity.java
Ensures the composer and unblock UI reflect the current block state.
2. Hide Composer & Show Unblock UI
Define layout elements and their visibility toggles.activity_messages.xml
Prepares the UI containers for dynamic show/hide operations.
3. Trigger Unblock Action
Call the unblock API and observe status updates.4. Trigger Block from Detail Screen
Allow blocking directly from a user’s profile.UserDetailActivity.java
Integrates block action into the profile menu, triggering the UI toggle via LiveData.
Implementation Flow
Step | Action | Location |
---|---|---|
1 | Check block status | updateUserBlockStatus() in MessagesActivity.java fileciteturn9file0 |
2 | Show/hide composer and unblock layout | activity_messages.xml fileciteturn9file0 |
3 | Unblock API call and LiveData update | MessagesViewModel.unblockUser() |
4 | Block API call from profile | UserDetailActivity.blockMenuItem |
Customization Options
- Feedback UI: Show a Toast or Snackbar upon success/failure.
- Menu Icons/Text: Toggle icon and text dynamically after block/unblock.
- Disable History: Optionally gray out or hide past messages when blocked.
Filtering & Edge Cases
Case | Behavior |
---|---|
Blocked User | Composer hidden; unblock layout shown. |
Block Self | SDK ignores request; ensure menu is disabled. |
Group Chat | Blocking affects only 1:1 communication. |
Network Failure | Observe error callbacks and retry as needed. |
Error Handling
- Handle errors from
blockUsers
andunblockUsers
callbacks by showing alerts or retry prompts. - Ensure UI LiveData states revert on failure.
Group vs. User-Level Differences
Scenario | UI Behavior |
---|---|
ReceiverType.USER | Block/unblock enabled. |
ReceiverType.GROUP | Block option ignored; chat continues. |
Summary / Feature Matrix
Feature | Component / Method |
---|---|
Check block state | User.isBlockedByMe() |
Block user | CometChatUIKit.blockUsers() |
Unblock user | CometChatUIKit.unblockUsers() |
Update UI | updateUserBlockStatus() |
Profile block menu | UserDetailActivity.blockMenuItem |
Next Steps & Further Reading
Android Sample App (Java)
Explore this feature in the CometChat SampleApp:
GitHub → SampleApp
Android Sample App (Kotlin)
Explore this feature in the CometChat SampleApp:
GitHub → SampleApp