Listen to events

Profile, participants and typing events are not managed with store implementation and the app should register appropriate listeners for relevant events.

You can register listeners from client instance

/* add events listener:
 * ProfileListener - changes to user profile details
 * ParticipantsListener - changes to participant list in conversation
 * TypingListener - user started/stopped typing in a conversation
 */
client.addListener(listener);

// remove events listener
client.removeListener(listener);

or set them up in a configuration when initialising

ComapiConfig config = new ComapiConfig()
   .participantsListener(listener /* extends ParticipantsListener */)
   .profileListener(listener /* extends ProfileListener */)
   .typingListener(listener /* extends TypingListeners */);

Listeners classes are abstract with empty implementation of onEventName methods. Override some or all of them to receive socket events from foundation SDK. Real time events are available only when the application is in foreground (visible to the user). If app is put to the background use FCM to communicate messages to the user. Update the internal state after app is put back to foreground using services APIs.

Available events

Event Name

Description

ProfileUpdateEvent

Sent when a user's profile is updated.

ParticipantAddedEvent

Sent when a participant is added to a conversation. When a conversation is created, this event will also fire with the owner's profileId.

ParticipantUpdatedEvent

Sent when a participant role is updated in a conversation.

ParticipantRemovedEvent

Sent when a participant is removed from a conversation.

ParticipantTypingEvent

Sent when 'isTyping' method has been called informing conversation participants that the user started typing a new message

ParticipantTypingOffEvent

Sent when 'isTyping' method has been called informing conversation participants that the user stopped typing a new message

// event unique identifier
getEventId()

// event name/type
getName()

And the specific event types provides also

// profile unique identifier
getProfileId();

// time when the update event was published
getPublishedOn();

// revision of the profile details on the server
getRevision();

// gets profileId of an user that performed this update
getCreatedBy();

// gets profile update details
getPayload();

// tag specifying server data version
getETag();
// conversation unique identifier
getConversationId();

// profile unique identifier
getProfileId();

// role definition for this participant in this conversation
getRole();
// Same as ParticipantAddedEvent
// Same as ParticipantAddedEvent
// conversation unique identifier
getConversationId();

// get profile id of an participant who started typing a new message
getProfileId();
// conversation unique identifier
getConversationId();

// get profile id of an participant who stopped typing a new message
getProfileId();