UNPKG

@amityco/ts-sdk-react-native

Version:

Amity Social Cloud Typescript SDK

38 lines (36 loc) 1.37 kB
import { pullFromCache } from '~/cache/api'; import { userLinkedObject } from './userLinkedObject'; import { acceptInvitation, rejectInvitation } from '~/invitationRepository/internalApi'; export const invitationLinkedObject = (invitation: Amity.InternalInvitation): Amity.Invitation => { return { ...invitation, get user(): Amity.User | undefined { const cacheData = pullFromCache<Amity.User>(['user', 'get', invitation.invitedUserPublicId]); if (cacheData?.data) return userLinkedObject(cacheData.data); return undefined; }, get createdBy(): Amity.User | undefined { const cacheData = pullFromCache<Amity.User>(['user', 'get', invitation.inviterUserPublicId]); if (cacheData?.data) return userLinkedObject(cacheData.data); return undefined; }, get target(): Amity.InvitationTarget<Amity.InvitationTargetType> | undefined { if (invitation.targetType === 'community') { const cacheData = pullFromCache<Amity.InternalCommunity>([ 'community', 'get', invitation.targetId, ]); if (cacheData?.data) return cacheData.data; return undefined; } return undefined; }, accept: async () => { await acceptInvitation(invitation._id); }, reject: async () => { await rejectInvitation(invitation._id); }, }; };