UNPKG

@amityco/ts-sdk-react-native

Version:

Amity Social Cloud Typescript SDK

53 lines (46 loc) 1.48 kB
import { fireEvent } from '~/core/events'; import { getActiveClient } from '~/client/api/activeClient'; import { pullFromCache, upsertInCache } from '~/cache/api'; import { JoinRequestStatusEnum } from '~/@types/domains/joinRequest'; /* begin_public_function id: joinRequest.approve */ /** * ```js * import { joinRequest } from '@amityco/ts-sdk' * const isAccepted = await joinRequest.approve() * ``` * * Accepts a {@link Amity.JoinRequest} object * * @param joinRequest the {@link Amity.JoinRequest} to accept * @returns A success boolean if the {@link Amity.JoinRequest} was accepted * * @category Join Request API * @async */ export const approveJoinRequest = async ( joinRequest: Amity.InternalJoinRequest, ): Promise<boolean> => { const client = getActiveClient(); client.log('joinRequest/approveJoinRequest', joinRequest.joinRequestId); const { data } = await client.http.post<{ success: boolean }>( `/api/v4/communities/${joinRequest.targetId}/join/approve`, { userId: joinRequest.requestorInternalId, }, ); const joinRequestCache = pullFromCache<Amity.InternalJoinRequest>([ 'joinRequest', 'get', joinRequest.joinRequestId, ])?.data; if (joinRequestCache) { upsertInCache(['joinRequest', 'get', joinRequest.joinRequestId], { status: JoinRequestStatusEnum.Approved, }); fireEvent('local.joinRequest.updated', [joinRequestCache]); } return data.success; }; /* end_public_function */