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