Browse SDKs · uni-app / uni-app x
SDKsuni-app

List group members

OpenIM uni-app / uni-app x SDK guide for List group members.

Copy

getGroupMemberList() reads members by filter and page. This page owns the added, deleted, and info-changed member events.

Parameters

ParameterTypeRequiredDescription
groupIDstringYesTarget group ID.
filternumberYesServer-defined member filter; do not use a UI index.
offsetnumberYesOffset; use 0 for the first page.
countnumberYesMembers requested in this page.
import { getGroupMemberList, off, onGroupMemberAdded, onGroupMemberDeleted, onGroupMemberInfoChanged } from '@/uni_modules/unix-openim-sdk'

const added = onGroupMemberAdded((member) => upsertMember(member))
const deleted = onGroupMemberDeleted((member) => removeMember(member.groupID, member.userID))
const changed = onGroupMemberInfoChanged((member) => upsertMember(member))
const result = await getGroupMemberList({ groupID, filter: 0, offset: 0, count: 100 })
replaceMembers(result?.members ?? [])
off(added); off(deleted); off(changed)

The Promise resolves directly to OpenIMGroupMemberListResult or null; members contains the current page. A null result is not the same as an empty member page. Preserve error/loading state for null, and interpret an empty array as a valid page with no members.

Group member fields

FieldDescription
groupID, userIDStable member identity, combined as groupID:userID.
nickname, faceURLIn-group display profile.
roleLevelOwner, administrator, or regular-member role.
joinTime, joinSource, inviterUserIDJoin time, source, and inviter.
muteEndTimeMute end time; compare it with current time.
operatorUserIDUser that performed the latest relevant operation.
ex, attachedInfoExtension data; parse only a confirmed business contract.

Cache by groupID:userID. Do not overwrite in-group display data with account-level getUsersInfo() results, and do not reuse role or mute state across groups.

Continue until a page is shorter than count. Joins, exits, removals, and role changes can move page boundaries, so merge events by key and rebuild from offset 0 when complete ordering matters.

Listen for member changes

This page is the complete owner for the three member events. Add or replace by groupID:userID; delete the exact same key. Do not mutate an array position when pagination and events run concurrently.

If deletion targets the current user, stop sending and refresh the joined-group list. Recompute permissions after role or mute changes. Release every handle on logout, account switch, or member-store destruction. Query Promise success establishes only a page snapshot and does not itself trigger member events.

Inviting, removing, muting, or editing a member has three possible observations: the mutation Promise, the member event, and a reconciliation query. Treat them separately and never make a local object change stand in for server confirmation.