UNPKG

@amityco/ts-sdk-react-native

Version:

Amity Social Cloud Typescript SDK

69 lines (66 loc) 2.53 kB
import { InvitationTypeEnum } from '~/@types'; import { pullFromCache } from '~/cache/api/pullFromCache'; import { getMyJoinRequest } from '~/communityRepository/internalAPI/getMyJoinRequest'; import { joinRequest } from '~/communityRepository/internalAPI/joinCommunity'; import { getJoinRequests } from '~/communityRepository/observers/getJoinRequests'; import { createInvitations } from '~/invitationRepository/internalApi'; import { getInvitation } from '~/invitationRepository/internalApi/getInvitation'; import { getInvitations } from '~/invitationRepository/observers/getInvitations'; import { categoryLinkedObject } from './categoryLinkedObject'; export const communityLinkedObject = (community: Amity.InternalCommunity): Amity.Community => { return { ...community, get categories(): Amity.Category[] { return (community?.categoryIds ?? []) .map(categoryId => { const cacheData = pullFromCache<Amity.Category>(['category', 'get', categoryId]); if (cacheData?.data) return categoryLinkedObject(cacheData.data); return undefined; }) .filter(category => !!category); }, createInvitations: async (userIds: string[]): Promise<void> => { await createInvitations({ type: InvitationTypeEnum.CommunityMemberInvite, targetType: 'community', targetId: community.communityId, userIds, }); }, getMemberInvitations: ( params: Pick<Amity.InvitationLiveCollection, 'limit' | 'sortBy' | 'statuses'>, callback: Amity.LiveCollectionCallback<Amity.Invitation>, ): Amity.Unsubscriber => { return getInvitations( { ...params, targetId: community.communityId, targetType: 'community', type: InvitationTypeEnum.CommunityMemberInvite, }, callback, ); }, getInvitation: async () => { const { data } = await getInvitation('community', community.communityId); return data; }, join: async () => joinRequest(community.communityId), getJoinRequests: ( params: Omit<Amity.QueryJoinRequest, 'communityId'>, callback: Amity.LiveCollectionCallback<Amity.JoinRequest>, ): Amity.Unsubscriber => { return getJoinRequests( { ...params, communityId: community.communityId, }, callback, ); }, getMyJoinRequest: async () => { const { data } = await getMyJoinRequest(community.communityId); return data; }, }; };