Skip to main content
FieldValue
Packagecom.cometchat:chat-uikit-android
Conversation eventsccConversationDeleted
User eventsccUserBlocked, ccUserUnblocked
Group eventsccGroupCreated, ccGroupDeleted, ccGroupLeft, ccGroupMemberScopeChanged, ccGroupMemberKicked, ccGroupMemberBanned, ccGroupMemberUnBanned, ccGroupMemberJoined, ccGroupMemberAdded, ccOwnershipChanged
Message eventsccMessageSent, ccMessageEdited, ccMessageDeleted, ccMessageRead, ccLiveReaction
Call eventsccOutgoingCall, ccCallAccepted, ccCallRejected, ccCallEnded
PurposeDecoupled communication between UI Kit components — subscribe to events to react to changes without direct component references
Events enable a decoupled, flexible architecture in the CometChat UI Kit. Components and Composite Components emit events in response to user interactions or state changes, allowing other parts of your application to react without direct references between components.

When to use this

  • You need to update your UI when a user is blocked or unblocked.
  • You need to respond to group actions such as member joins, kicks, bans, or ownership transfers.
  • You need to track conversation deletions or updates in real time.
  • You need to react to messages being sent, edited, deleted, or read.
  • You need to handle call lifecycle events (outgoing, accepted, rejected, ended).
  • You need to respond to UI-level events such as panel visibility changes or active chat changes.

Prerequisites

  • The cometchat-chat-uikit-android dependency added to your project.
  • CometChatUIKit.init() called and completed successfully.
  • A logged-in CometChat user (call CometChatUIKit.login() before registering listeners).

API reference

User Events

CometChatUserEvents emits events when the logged-in user executes actions on another user. This class provides methods to add and remove listeners for user events, as well as methods to handle specific user actions such as blocking and unblocking users. Events:
EventDescription
ccUserBlockedTriggered when the logged-in user blocks another user.
ccUserUnblockedTriggered when the logged-in user unblocks another user.
Listener registration:
CometChatUserEvents.addUserListener(LISTENERS_TAG, object : CometChatUserEvents() {
    override fun ccUserBlocked(user: User) {
        // Perform action when user is blocked
    }

    override fun ccUserUnblocked(user: User) {
        // Perform action when user is unblocked
    }
})
What this does: Registers a listener on CometChatUserEvents using a unique LISTENERS_TAG. The ccUserBlocked callback fires when the logged-in user blocks another user, and ccUserUnblocked fires when the logged-in user unblocks another user.

Group Events

CometChatGroupEvents emits events when the logged-in user performs actions related to groups. This class provides methods to listen to various group-related events and handle them. Events:
EventDescription
ccGroupCreatedTriggered when the logged-in user creates a group.
ccGroupDeletedTriggered when the logged-in user deletes a group.
ccGroupLeftTriggered when the logged-in user leaves a group. Provides the action message, the user who left, and the group.
ccGroupMemberScopeChangedTriggered when the logged-in user changes the scope of another group member. Provides the action message, updated user, new scope, previous scope, and group.
ccGroupMemberBannedTriggered when the logged-in user bans a group member from the group. Provides the action message, banned user, who banned them, and the group.
ccGroupMemberKickedTriggered when the logged-in user kicks another group member from the group. Provides the action message, kicked user, who kicked them, and the group.
ccGroupMemberUnBannedTriggered when the logged-in user unbans a user banned from the group. Provides the action message, unbanned user, who unbanned them, and the group.
ccGroupMemberJoinedTriggered when the logged-in user joins a group. Provides the joined user and the group.
ccGroupMemberAddedTriggered when the logged-in user adds new members to the group. Provides action messages, added users, the group, and who added them.
ccOwnershipChangedTriggered when the logged-in user transfers the ownership of their group to some other member. Provides the group and the new owner (as GroupMember).
Listener registration:
CometChatGroupEvents.addGroupListener(LISTENERS_TAG, object : CometChatGroupEvents() {
    override fun ccGroupCreated(group: Group) {
        // Perform action when group is created
    }

    override fun ccGroupDeleted(group: Group) {
        // Perform action when group is deleted
    }

    override fun ccGroupLeft(actionMessage: Action, leftUser: User, leftGroup: Group) {
        // Perform action when user leaves group
    }

    override fun ccGroupMemberScopeChanged(actionMessage: Action, updatedUser: User, scopeChangedTo: String, scopeChangedFrom: String, group: Group) {
        // Perform action when group member scope is changed
    }

    override fun ccGroupMemberBanned(actionMessage: Action, bannedUser: User, bannedBy: User, bannedFrom: Group) {
        // Perform action when user is banned from group
    }

    override fun ccGroupMemberKicked(actionMessage: Action, kickedUser: User, kickedBy: User, kickedFrom: Group) {
        // Perform action when user is kicked from group
    }

    override fun ccGroupMemberUnBanned(actionMessage: Action, unbannedUser: User, unBannedBy: User, unBannedFrom: Group) {
        // Perform action when user is unbanned from group
    }

    override fun ccGroupMemberJoined(joinedUser: User, joinedGroup: Group) {
        // Perform action when user joins group
    }

    override fun ccGroupMemberAdded(actionMessages: List<Action>, usersAdded: List<User>, userAddedIn: Group, addedBy: User) {
        // Perform action when members are added to group
    }

    override fun ccOwnershipChanged(group: Group, newOwner: GroupMember) {
        // Perform action when group ownership is changed
    }
})
What this does: Registers a listener on CometChatGroupEvents using a unique LISTENERS_TAG. Each callback fires when the logged-in user performs the corresponding group action — creating, deleting, leaving a group, or managing members (scope change, ban, kick, unban, join, add, ownership transfer).

Conversation Events

CometChatConversationEvents emits events when the logged-in user performs actions related to conversations. This allows the UI to be updated when conversations change. Events:
EventDescription
ccConversationDeletedTriggered when the logged-in user deletes a conversation.
ccUpdateConversationTriggered when there is an update in the conversation.
Listener registration:
CometChatConversationEvents.addListener("LISTENERS_TAG", object : CometChatConversationEvents() {
    override fun ccConversationDeleted(conversation: Conversation) {
        // Perform action when conversation is deleted
    }

    override fun ccUpdateConversation(conversation: Conversation) {
        // Perform action when conversation is updated
    }
})
What this does: Registers a listener on CometChatConversationEvents using a unique listener tag. The ccConversationDeleted callback fires when the logged-in user deletes a conversation, and ccUpdateConversation fires when a conversation is updated.

Message Events

CometChatMessageEvents emits events when various actions are performed on messages within the application. These events facilitate updating the UI when messages change. Events:
EventDescription
ccMessageSentTriggered whenever a logged-in user sends any message. It can have two states: inProgress and sent.
ccMessageEditedTriggered whenever a logged-in user edits any message from the list of messages. It can have two states: inProgress and sent.
ccMessageDeletedTriggered whenever a logged-in user deletes any message from the list of messages.
ccMessageReadTriggered whenever a logged-in user reads any message.
ccLiveReactionTriggered whenever a logged-in user clicks on live reaction.
onFormMessageReceivedTriggered when a form message is received.
onCardMessageReceivedTriggered when a card message is received.
onCustomInteractiveMessageReceivedTriggered when a custom interactive message is received.
onInteractionGoalCompletedTriggered when an interaction goal is completed.
onSchedulerMessageReceivedTriggered when a scheduler message is received.
Listener registration:
CometChatMessageEvents.addListener("UNIQUE_ID", object : CometChatMessageEvents() {
    override fun ccMessageSent(baseMessage: BaseMessage?, status: Int) {
        // Perform action when message is sent
    }

    override fun ccMessageEdited(baseMessage: BaseMessage?, status: Int) {
        // Perform action when message is edited
    }

    override fun ccMessageDeleted(baseMessage: BaseMessage?) {
        // Perform action when message is deleted
    }

    override fun ccMessageRead(baseMessage: BaseMessage?) {
        // Perform action when message is read
    }

    override fun ccLiveReaction(icon: Int) {
        // Perform action on live reaction
    }

    // Other overridden methods for handling specific message types and actions
})
What this does: Registers a listener on CometChatMessageEvents using a unique ID string. The callbacks fire for message lifecycle events — sending, editing, deleting, reading messages, and reacting with live reactions. Additional overrides handle interactive message types (onFormMessageReceived, onCardMessageReceived, onCustomInteractiveMessageReceived, onInteractionGoalCompleted, onSchedulerMessageReceived).

Call Events

CometChatCallEvents emits events related to calls within the application. This class provides methods to listen to call-related events and handle them. Events:
EventDescription
ccOutgoingCallTriggered when the logged-in user initiates an outgoing call.
ccCallAcceptedTriggered when a call is accepted.
ccCallRejectedTriggered when a call is rejected.
ccCallEndedTriggered when a call is ended.
Listener registration:
CometChatCallEvents.addListener("ListenerID", object : CometChatCallEvents() {
    override fun ccOutgoingCall(call: Call) {
        // Perform action when outgoing call is initiated
    }

    override fun ccCallAccepted(call: Call) {
        // Perform action when call is accepted
    }

    override fun ccCallRejected(call: Call) {
        // Perform action when call is rejected
    }

    override fun ccCallEnded(call: Call) {
        // Perform action when call is ended
    }
})
What this does: Registers a listener on CometChatCallEvents using a unique "ListenerID". The callbacks fire for each stage of the call lifecycle — initiating an outgoing call, accepting, rejecting, and ending a call.

UI Events

CometChatUIEvents emits events related to UI components within the CometChat UI Kit. This class provides methods to listen to UI-related events and handle them. Events:
EventDescription
showPanelTriggered to show an additional UI panel with custom elements.
hidePanelTriggered to hide a previously shown UI panel.
ccActiveChatChangedTriggered when the active chat changes, providing information about the current message, user, and group.
ccOpenChatTriggered to open a chat with a specific user or group.
Listener registration:
CometChatUIEvents.addListener("UNIQUE_ID", object : CometChatUIEvents() {
    override fun showPanel(id: HashMap<String, String>, alignment: UIKitConstants.CustomUIPosition, view: Function1<Context, View>) {
        // Perform action to show UI panel with custom elements
    }

    override fun hidePanel(id: HashMap<String, String>, alignment: UIKitConstants.CustomUIPosition) {
        // Perform action to hide UI panel
    }

    override fun ccActiveChatChanged(id: HashMap<String, String>, message: BaseMessage, user: User, group: Group) {
        // Perform action when active chat changes
    }

    override fun ccOpenChat(user: User, group: Group) {
        // Perform action to open a chat with a specific user or group
    }
})
What this does: Registers a listener on CometChatUIEvents using a unique ID string. The callbacks fire for UI-level actions — showing or hiding custom panels, reacting to active chat changes, and opening a chat with a specific user or group.

Removing event listeners

Each event listener class provides methods to add and remove listeners. If you register a listener, remove it when the component or activity is destroyed to prevent memory leaks. Use the same tag or ID string you passed during registration.

Next steps