Browse SDKs · HarmonyOS
Platform
SDKsHarmonyOSEnterprise

Retrieve received group applications

Paginate group join applications that the current user has authority to process, and listen for application lifecycle events.

Copy

When querying applications received by group owners or administrators, set send: false. Filter by group IDs and review states by supplying non-empty arrays; pass empty arrays to query without restrictions:

Code example

import sdk, {
  EventOnGroupApplicationAcceptedData,
  EventOnGroupApplicationAddedData,
  EventOnGroupApplicationBadgeCountChangedData,
  EventOnGroupApplicationDeletedData,
  EventOnGroupApplicationRejectedData,
  GetGroupApplicationReq,
  GetGroupApplicationResp,
  HandleResult,
  OpenIMSDKEvent,
} from '@openimsdk/imsdk';

const request: GetGroupApplicationReq = {
  send: false,
  groupIDs: [],
  handleResults: [HandleResult.ResultDefault],
  pagination: { pageNumber: 1, showNumber: 20 },
};
const response: GetGroupApplicationResp = await sdk.getGroupApplication(request);
const applications = response.applications;

const handleApplicationAdded = (data: EventOnGroupApplicationAddedData): void => {
  mergeGroupApplication(data.application);
};
const handleApplicationAccepted = (data: EventOnGroupApplicationAcceptedData): void => {
  mergeGroupApplication(data.application);
};
const handleApplicationRejected = (data: EventOnGroupApplicationRejectedData): void => {
  mergeGroupApplication(data.application);
};
const handleApplicationDeleted = (data: EventOnGroupApplicationDeletedData): void => {
  removeGroupApplication(data.application.groupID, data.application.userID);
};
const handleApplicationBadge = (data: EventOnGroupApplicationBadgeCountChangedData): void => {
  setGroupApplicationBadge(data.count);
};

const unsubscribeApplicationAdded = sdk.on(
  OpenIMSDKEvent.EventOnGroupApplicationAdded,
  handleApplicationAdded,
);
const unsubscribeApplicationAccepted = sdk.on(
  OpenIMSDKEvent.EventOnGroupApplicationAccepted,
  handleApplicationAccepted,
);
const unsubscribeApplicationRejected = sdk.on(
  OpenIMSDKEvent.EventOnGroupApplicationRejected,
  handleApplicationRejected,
);
const unsubscribeApplicationDeleted = sdk.on(
  OpenIMSDKEvent.EventOnGroupApplicationDeleted,
  handleApplicationDeleted,
);
const unsubscribeApplicationBadge = sdk.on(
  OpenIMSDKEvent.EventOnGroupApplicationBadgeCountChanged,
  handleApplicationBadge,
);

export function removeGroupApplicationListeners(): void {
  unsubscribeApplicationAdded();
  unsubscribeApplicationAccepted();
  unsubscribeApplicationRejected();
  unsubscribeApplicationDeleted();
  unsubscribeApplicationBadge();
}

Parameters

ParameterTypeRequiredDescription
sendbooleanYesFixed as false when querying incoming received applications.
groupIDsstring[]YesTarget group IDs to filter. Pass [] for all administered groups.
handleResultsHandleResult[]YesReview status filter (ResultDefault, ResultAccept, ResultDecline). Pass [] for all.
pagination.pageNumbernumberYesPage index, starting from 1.
pagination.showNumbernumberYesNumber of records to retrieve per page.

Return value

Returns a Promise that resolves to a GetGroupApplicationResp object containing applications: IMGroupApplication[].

State changes after the call

Identify unique applications using the composite key groupID:userID. The nickname, avatar, and group information embedded in an application record capture historical snapshots from when the application was created; query current user or group endpoints if real-time profiles are needed. If application events arrive while paging, reset the pagination offset and re-query. Release all subscriptions using removeGroupApplicationListeners() upon signing out or unmounting application components.