Browse SDKs · HarmonyOS
Platform
SDKsHarmonyOSEnterprise

Paginate friend list

Paginate friend relationships for the signed-in user and listen for real-time friend updates.

Copy

Initialize contact lists by starting with pageNumber: 1. When friends are added or deleted, reset the pagination offset to page 1 to prevent duplicated or missing rows across page boundaries:

Code example

import sdk, {
  EventOnFriendAddedData,
  EventOnFriendDeletedData,
  EventOnFriendInfoChangedData,
  GetFriendsPageReq,
  GetFriendsPageResp,
  OpenIMSDKEvent,
} from '@openimsdk/imsdk';

const request: GetFriendsPageReq = {
  filterBlack: true,
  pagination: {
    pageNumber: 1,
    showNumber: 50,
  },
};
const response: GetFriendsPageResp = await sdk.getFriendsPage(request);
replaceFriends(response.friends);

const handleFriendAdded = (data: EventOnFriendAddedData): void => {
  mergeFriend(data.friend);
};
const handleFriendChanged = (data: EventOnFriendInfoChangedData): void => {
  mergeFriend(data.friend);
};
const handleFriendDeleted = (data: EventOnFriendDeletedData): void => {
  removeFriend(data.friend.friendUserID);
};

const unsubscribeAdded = sdk.on(OpenIMSDKEvent.EventOnFriendAdded, handleFriendAdded);
const unsubscribeChanged = sdk.on(OpenIMSDKEvent.EventOnFriendInfoChanged, handleFriendChanged);
const unsubscribeDeleted = sdk.on(OpenIMSDKEvent.EventOnFriendDeleted, handleFriendDeleted);

export function removeFriendListListeners(): void {
  unsubscribeAdded();
  unsubscribeChanged();
  unsubscribeDeleted();
}

Parameters

ParameterTypeRequiredDescription
filterBlackbooleanYesSet to true to exclude blocked users from the returned list.
pagination.pageNumbernumberYesPage index, starting from 1.
pagination.showNumbernumberYesNumber of friend items to fetch per page.

Return value

Returns a Promise that resolves to a GetFriendsPageResp object containing friends: IMFriend[]:

PropertyTypeDescription
friendUserIDstringUnique user identifier of the friend.
nicknamestringFriend's public nickname.
faceURLstringFriend's avatar URL.
remarkstringPrivate remark note set by the current account.
isPinnedbooleanWhether this friend is pinned in the contact directory.
exstringApplication-defined relationship metadata string.
ownerUserIDstringCurrent signed-in user ID owning this friendship record.
createTimenumberFriendship creation timestamp in Unix milliseconds.

State changes after the call

Resolving the Promise populates the initial friend snapshot. Real-time changes arrive through EventOnFriendAdded, EventOnFriendInfoChanged, and EventOnFriendDeleted; correlate updates using friendUserID. Invoke removeFriendListListeners() when signing out or unmounting contact components. Re-query whenever network synchronization completes or page boundaries require reconciliation.