@amityco/ts-sdk-react-native
Version:
Amity Social Cloud Typescript SDK
46 lines (39 loc) • 1.31 kB
text/typescript
import { fireEvent } from '~/core/events';
import { getActiveClient } from '~/client/api/activeClient';
import { pullFromCache, upsertInCache } from '~/cache/api';
import { InvitationStatusEnum } from '~/@types';
/* begin_public_function
id: invitation.accept
*/
/**
* ```js
* import { acceptInvitation } from '@amityco/ts-sdk'
* const isAccepted = await acceptInvitation(invitationId)
* ```
*
* Accepts a {@link Amity.Invitation} object
*
* @param invitationId the {@link Amity.Invitation} to accept
* @returns A success boolean if the {@link Amity.Invitation} was accepted
*
* @category Invitation API
* @async
*/
export const acceptInvitation = async (invitationId: Amity.Invitation['_id']): Promise<boolean> => {
const client = getActiveClient();
client.log('invitation/acceptInvitation', invitationId);
const { data } = await client.http.post<{ success: boolean }>(
`/api/v1/invitations/${invitationId}/accept`,
);
const invitation = pullFromCache<Amity.InternalInvitation>([
'invitation',
'get',
invitationId,
])?.data;
if (invitation) {
upsertInCache(['invitation', 'get', invitationId], { status: InvitationStatusEnum.Approved });
fireEvent('local.invitation.updated', [invitation]);
}
return data.success;
};
/* end_public_function */