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