@amityco/ts-sdk-react-native
Version:
Amity Social Cloud Typescript SDK
38 lines (36 loc) • 1.37 kB
text/typescript
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);
},
};
};