@amityco/ts-sdk-react-native
Version:
Amity Social Cloud Typescript SDK
53 lines (46 loc) • 1.48 kB
text/typescript
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 */