UNPKG

@amityco/ts-sdk-react-native

Version:

Amity Social Cloud Typescript SDK

68 lines (66 loc) 1.9 kB
import { liveObject } from '~/utils/liveObject'; import { getCommunity as _getCommunity } from '../api/getCommunity'; import { onCommunityUpdated, onCommunityDeleted } from '../events'; import { onCommunityUserBanned, onCommunityUserUnbanned, onCommunityUserChanged, onCommunityJoined, onCommunityLeft, onLocalCommunityJoined, onLocalCommunityLeft, onLocalCommunityJoin, } from '../communityMembership/events'; import { convertEventPayload } from '~/utils/event'; import { LinkedObject } from '~/utils/linkedObject'; /* begin_public_function id: community.get */ /** * ```js * import { CommunityRepository } from '@amityco/ts-sdk-react-native'; * * let community; * * const unsub = CommunityRepository.getCommunity(communityId, response => { * community = response.data; * }); * ``` * * Observe all mutation on a given {@link Amity.Community} * * @param communityId the ID of the message to observe * @param callback the function to call when new data are available * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the community * * @category Community Live Object */ export const getCommunity = ( communityId: Amity.Community['communityId'], callback: Amity.LiveObjectCallback<Amity.Community>, ): Amity.Unsubscriber => { return liveObject( communityId, callback, 'communityId', _getCommunity, [ onCommunityUpdated, onCommunityDeleted, onCommunityJoined, onCommunityLeft, onLocalCommunityJoined, onLocalCommunityLeft, onCommunityUserBanned, onCommunityUserUnbanned, onCommunityUserChanged, convertEventPayload(onLocalCommunityJoin, 'targetId', 'community'), ], { callbackDataSelector: (data: Amity.InternalCommunity) => { return LinkedObject.community(data); }, }, ); }; /* end_public_function */