How to Modify Message Options

Guide Overview

Language/Framework: Android UI Kit

UI Kit Version:

"cometchat_chat_uikit: ^4.5.7"

This guide can be used to modify the message options.

Define Custom template according to your requirement.

Java

List<CometChatMessageTemplate> msgTemplates = CometChatUIKit.getDataSource().getMessageTemplates();

for (CometChatMessageTemplate template : msgTemplates) {
    template.setOptions((context, baseMessage, group) -> {
        List<CometChatMessageOption> optionList = 
            CometChatUIKit.getDataSource().getMessageOptions(context, baseMessage, group);

        // Remove specific message options
        Iterator<CometChatMessageOption> iterator = optionList.iterator();
        while (iterator.hasNext()) {
            String optionId = iterator.next().getId();
            if (optionId.equals(UIKitConstants.MessageOption.REPLY_IN_THREAD) ||
                optionId.equals(UIKitConstants.MessageOption.DELETE) ||
                optionId.equals(UIKitConstants.MessageOption.EDIT)) {
                iterator.remove();
            }
        }
        return optionList;
    });
}

** Kotlin**

val msgTemplates = CometChatUIKit.getDataSource().messageTemplates

for (template in msgTemplates) {
    template.setOptions { context, baseMessage, group ->
        val optionList: MutableList<CometChatMessageOption> =
            CometChatUIKit.getDataSource().getMessageOptions(context, baseMessage, group)

        // Remove specific message options
        optionList.removeAll {
            it.id == UIKitConstants.MessageOption.REPLY_IN_THREAD ||
            it.id == UIKitConstants.MessageOption.DELETE ||
            it.id == UIKitConstants.MessageOption.EDIT
        }

        optionList
    }
}

Message List Configuration

Pass the updated template to the MessageListConfiguration

Java

MessageListConfiguration messageListConfig = new MessageListConfiguration();
messageListConfig.setTemplates(msgTemplates);

Kotlin

val messageListConfig = MessageListConfiguration().apply {
     setTemplates(msgTemplates)
}

Messages Configuration

After defining MessageListConfiguration, pass it to the Messages Configuration.

Java

MessagesConfiguration messagesConfig = new MessagesConfiguration();
messagesConfig.setMessageListConfiguration(messageListConfig);

Kotlin

val messagesConfig = MessagesConfiguration().apply {
messageListConfiguration = messageListConfig

}

Modify the CometChat Component

Use the ConversationsWithMessages component to view the updated message options.

Java

conversationsWithMessages.setMessagesConfiguration(messagesConfig);

Kotlin

binding.conversationWithMessages.messagesConfiguration = messagesConfig

Full Java Code:

List<CometChatMessageTemplate> msgTemplates = CometChatUIKit.getDataSource().getMessageTemplates();

for (CometChatMessageTemplate template : msgTemplates) {
    template.setOptions((context, baseMessage, group) -> {
        List<CometChatMessageOption> optionList =
                new ArrayList<>(CometChatUIKit.getDataSource()
                        .getMessageOptions(context, baseMessage, group));

        Iterator<CometChatMessageOption> iterator = optionList.iterator();
        while (iterator.hasNext()) {
            CometChatMessageOption option = iterator.next();
            if (option.getId().equals(UIKitConstants.MessageOption.REPLY_IN_THREAD) ||
                    option.getId().equals(UIKitConstants.MessageOption.DELETE)) {
                iterator.remove();
            }
        }
        return optionList;
    });
}

MessageListConfiguration messageListConfig = new MessageListConfiguration();
messageListConfig.setTemplates(msgTemplates);

MessagesConfiguration messagesConfig = new MessagesConfiguration();
messagesConfig.setMessageListConfiguration(messageListConfig);

CometChatConversationsWithMessages conversationsWithMessages = view.findViewById(R.id.conversationWithMessages);
conversationsWithMessages.setMessagesConfiguration(messagesConfig);

Full Kotlin Code:

val msgTemplates = CometChatUIKit.getDataSource().messageTemplates
for (template in msgTemplates) {
    template.setOptions { context, baseMessage, group ->
        val optionList: MutableList<CometChatMessageOption> =
            CometChatUIKit.getDataSource()
                .getMessageOptions(context, baseMessage, group)
        optionList.removeAll {
            it.id == UIKitConstants.MessageOption.REPLY_IN_THREAD || 
            it.id == UIKitConstants.MessageOption.DELETE
        }
        optionList
    }

}
val messageListConfig = MessageListConfiguration()
messageListConfig.apply {
    setTemplates(msgTemplates)
}
val messagesConfig = MessagesConfiguration().apply {
    messageListConfiguration = messageListConfig
}
binding.conversationWithMessages.messagesConfiguration = messagesConfig

Default Message options:

Updated Message options:

1 Like