> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-22654f5b-docs-rn-guide-message-privately.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Block Users

> Block Users — CometChat documentation.

## Block Users

*In other words, as a logged-in user, how do I block a user from sending me messages?*

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 `List<String>` as a parameter which holds the list of `UIDs` to be blocked.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    List<String > uids = new ArrayList<>();
    uids.add("UID1");
    uids.add("UID2");
    uids.add("UID3");
    CometChat.blockUsers(uids, new CometChat.CallbackListener<HashMap<String, String>>() {
      @Override
        public void onSuccess(HashMap<String, String> resultMap) {
        	// Handle block users success.
      }

      @Override
        public void onError(CometChatException e) {
        	// Handle block users failure
      }
    });
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    val uids = ArrayList<String>()
      uids.add("UID1")
      uids.add("UID2")
      uids.add("UID3")

     CometChat.blockUsers(uids,object:CometChat.CallbackListener<HashMap<String,     String>>() {
                
        override fun onSuccess(resultMap: HashMap<String, String>) {
                    // Handle unblock users success.
         }

        override fun onError(e: CometChatException) {
                    // Handle unblock users failure
         }
    })
    ```
  </Tab>
</Tabs>

In the `onSuccess()` callback, you receive a HashMap which contains `UIDs` 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

*In other words, as a logged-in user, how do I unblock a user I previously blocked?*

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 `List<String>` as a parameter which holds the list of `UIDs` to be unblocked.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    List<String > uids = new ArrayList<>();
    uids.add("UID1");
    uids.add("UID2");
    uids.add("UID3");
    CometChat.unblockUsers(uids, new CometChat.CallbackListener<HashMap<String, String>>() {
      @Override
        public void onSuccess(HashMap<String, String> resultMap) {
        	// Handle unblock users success.
      }

      @Override
        public void onError(CometChatException e) {
        	// Handle unblock users failure
      }
    });
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    val uids = ArrayList<String>()
            uids.add("UID1")
            uids.add("UID2")
            uids.add("UID3")

            CometChat.unblockUsers(uids,object:CometChat.CallbackListener<HashMap<String, String>>() {

            override fun onSuccess(resultMap: HashMap<String, String>) {
                    // Handle unblock users success.
            }

            override fun onError(e: CometChatException) {
                    // Handle unblock users failure
            }
      })
    ```
  </Tab>
</Tabs>

In the `onSuccess()` callback, you receive a HashMap which contains `UIDs` 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

*In other words, as a logged-in user, how do I get a list of all users I've blocked?*

In order to fetch the list of blocked users, you can use the `BlockedUsersRequest` class. To use this class i.e to create an object of the `BlockedUsersRequest class`, you need to use the `BlockedUsersRequestBuilder` class. The `BlockedUsersRequestBuilder` class allows you to set the parameters based on which the blocked users are to be fetched.

The `BlockedUsersRequestBuilder` class allows you to set the below parameters:

### Set Limit

This method sets the limit i.e. the number of blocked users that should be fetched in a single iteration.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    BlockedUsersRequest blockedUsersRequest = new BlockedUsersRequest.BlockedUsersRequestBuilder()
    .setLimit(10)
    .build();
    ```
  </Tab>
</Tabs>

### Set Search Keyword

This method allows you to set the search string based on which the blocked users are to be fetched.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    BlockedUsersRequest blockedUsersRequest = new BlockedUsersRequest.BlockedUsersRequestBuilder()
    .setSearchKeyword("abc")
    .build();
    ```
  </Tab>
</Tabs>

### Set Direction

* CometChat.BlockedUsersRequest.DIRECTION.BLOCKED\_BY\_ME - This will ensure that the list of blocked users only contains the users blocked by the logged in user.
* CometChat.BlockedUsersRequest.DIRECTION.HAS\_BLOCKED\_ME - This will ensure that the list of blocked users only contains the users that have blocked the logged in user.
* CometChat.BlockedUsersRequest.DIRECTION.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.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    BlockedUsersRequest blockedUsersRequest = new BlockedUsersRequest.BlockedUsersRequestBuilder()
    .setDirection(BlockedUsersRequest.DIRECTION_BLOCKED_BY_ME)
    .build();
    ```
  </Tab>
</Tabs>

Finally, once all the parameters are set in 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.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    BlockedUsersRequest blockedUsersRequest = new BlockedUsersRequest.BlockedUsersRequestBuilder().setLimit(10).build();

    blockedUsersRequest.fetchNext(new CometChat.CallbackListener<List<User>>() {
      @Override
        public void onSuccess(List<User> users) {
        for(User user : users){
          Log.e(TAG, user.getUid());
        }
      }

      @Override
        public void onError(CometChatException e) {
        Log.e(TAG, e.getMessage());
      }
    });
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    val blockedUsersRequest = BlockedUsersRequest.BlockedUsersRequestBuilder().setLimit(10).build()

    blockedUsersRequest.fetchNext(object : CometChat.CallbackListener<List<User>>() {
          override fun onSuccess(users: List<User>) {
              for (user in users) {
                        Log.e(TAG, user.getUid())
               }
          }

          override fun onError(e: CometChatException) {
                    Log.e(TAG, e.message)
          }
    })
    ```
  </Tab>
</Tabs>
