Browse SDKs · WASM
SDKsWASMEnterprise

Conversation group overview

Understand the WASM SDK conversation-group model, capability boundaries, and state-change events.

Copy

Conversation groups organize the signed-in user's conversation list into categories such as “Work,” “Unread,” or “Later.” They manage relationships between conversationID values and groups. They do not create chat groups, change group membership, or alter message recipients.

Group types

ConversationGroupType exposes three types:

Enum valueNumeric valueMeaning
ConversationGroupTypeNormal0A normal custom group that the user can create and maintain.
ConversationGroupTypeFilter1A filtered group maintained by SDK or server rules.
ConversationGroupTypeAll2Used when querying all types.

Use ConversationGroupTypeNormal for ordinary user-defined categories. The active OpenIMServer deployment determines how filtered groups are generated; do not fabricate system groups in the client from names alone.

Group data

ConversationGroup represents a conversation group. Use conversationGroupID to identify the same group so that an event updates the correct record.

FieldTypeDescription
conversationGroupIDstringConversation group ID.
namestringGroup name.
serialnumberGroup sequence returned by the SDK.
versionnumberGroup data version.
exstringApplication-defined extension string.
conversationGroupTypeConversationGroupTypeGroup type.
hiddenbooleanWhether the group is hidden.
unreadCountnumberTotal unread count for conversations in the group at query time.
conversationIDsstring[]Conversation IDs that currently belong to the group.

Available operations

Listen for group changes

Queries return the group data available at call time, while events report later changes. An operation Promise succeeding, a related event arriving, and a later query returning the latest data are three separate stages.

Eventdata typeHandling
OnConversationGroupAddedConversationGroup[]Add groups that are not already present.
OnConversationGroupChangedConversationGroup[]Update groups by conversationGroupID.
OnConversationGroupDeletedConversationGroup[]Remove deleted groups.
OnConversationGroupMemberAddedConversationGroupMemberChangedCallbackDataAdd newly associated conversations and their details.
OnConversationGroupMemberDeletedConversationGroupMemberChangedCallbackDataRemove the corresponding conversation associations.
import { SdkEvent } from '@openim/wasm-client-sdk';

function handleConversationGroupAdded({ data }) {
  mergeConversationGroups(data);
}

function handleConversationGroupChanged({ data }) {
  mergeConversationGroups(data);
}

function handleConversationGroupDeleted({ data }) {
  for (const group of data) {
    removeConversationGroup(group.conversationGroupID);
  }
}

function handleConversationGroupMemberAdded({ data }) {
  mergeConversationGroupMembers(
    data.group.conversationGroupID,
    data.conversationIDs,
    data.conversations,
  );
}

function handleConversationGroupMemberDeleted({ data }) {
  removeConversationGroupMembers(data.group.conversationGroupID, data.conversationIDs);
}

openimsdk.on(SdkEvent.OnConversationGroupAdded, handleConversationGroupAdded);
openimsdk.on(SdkEvent.OnConversationGroupChanged, handleConversationGroupChanged);
openimsdk.on(SdkEvent.OnConversationGroupDeleted, handleConversationGroupDeleted);
openimsdk.on(SdkEvent.OnConversationGroupMemberAdded, handleConversationGroupMemberAdded);
openimsdk.on(SdkEvent.OnConversationGroupMemberDeleted, handleConversationGroupMemberDeleted);

function disposeConversationGroupEvents() {
  openimsdk.off(SdkEvent.OnConversationGroupAdded, handleConversationGroupAdded);
  openimsdk.off(SdkEvent.OnConversationGroupChanged, handleConversationGroupChanged);
  openimsdk.off(SdkEvent.OnConversationGroupDeleted, handleConversationGroupDeleted);
  openimsdk.off(SdkEvent.OnConversationGroupMemberAdded, handleConversationGroupMemberAdded);
  openimsdk.off(SdkEvent.OnConversationGroupMemberDeleted, handleConversationGroupMemberDeleted);
}

An event may arrive after the operation completes. Before updating state, use the ID to check whether the record already exists so that the same group or conversation is not appended twice.