UNPKG

@amityco/ts-sdk-react-native

Version:

Amity Social Cloud Typescript SDK

48 lines (40 loc) 1.53 kB
import { getActiveClient } from '~/client/api/activeClient'; import { fireEvent } from '~/core/events'; import { toPage, toToken } from '~/core/query'; import { ingestInCache } from '~/cache/api/ingestInCache'; import { convertChannelMarkerResponse } from '~/utils/marker'; /** * ```js * import { getChannelMarker } from '@amityco/ts-sdk-react-native' * const channelMarkers = await getChannelMarkers(['ch1', 'ch2']) * ``` * * @param channelIds the IDs of the {@link Amity.RawChannel} marker to fetch * @returns A List of {@link Amity.ChannelMarker} by channelIds * * @category Channel API * @async * @private */ export const getChannelMarkers = async ( channelIds: Amity.Channel['channelId'][], ): Promise<Amity.Cached<Amity.ChannelMarker[]>> => { const client = getActiveClient(); client.log('channel/getChannelMarkers', channelIds); const { data: queryPayload } = await client.http.get< Amity.ChannelMarkerPayload & Amity.Pagination >(`/api/v1/markers/channels`, { params: { channelIds, }, }); const { userEntityMarkers: userEntityMarkersPayload, userMarkers } = queryPayload; const userEntityMarkers = convertChannelMarkerResponse(userEntityMarkersPayload); const cachedAt = client.cache && Date.now(); if (client.cache) ingestInCache({ userEntityMarkers, userMarkers }, { cachedAt }); fireEvent('local.channelMarker.fetched', { userEntityMarkers, }); fireEvent('local.userMarker.fetched', { userMarkers }); return { data: userEntityMarkers, cachedAt }; };