@amityco/ts-sdk-react-native
Version:
Amity Social Cloud Typescript SDK
46 lines (39 loc) • 1.45 kB
text/typescript
import { getActiveClient } from '~/client/api/activeClient';
import { fireEvent } from '~/core/events';
import { ingestInCache } from '~/cache/api/ingestInCache';
/**
* ```js
* import { getMessageMarkers } from '@amityco/ts-sdk-react-native'
* const messageMarkers = await getMessageMarkers(['sch1', 'sch2'])
* ```
*
* Fetches a list of {@link Amity.MessageMarker} by messageIds
*
* @param messageIds the feed IDs of the {@link Amity.RawMessage} marker to fetch
* @returns A list of {@link Amity.MessageMarker} by messageIds
*
* @category Channel API
* @async
* @private
*/
export const getMessageMarkers = async (
messageIds: Amity.RawMessage['messageFeedId'][],
): Promise<Amity.Cached<Amity.MessageMarker[]>> => {
const client = getActiveClient();
client.log('channel/getMessageMarkers', messageIds);
const { data: queryPayload } = await client.http.get<Amity.MessageMarkerPayload>(
`/api/v1/markers/messages`,
{
params: {
messageIds,
},
},
);
const { contentMarkers, feedMarkers, userMarkers } = queryPayload;
const cachedAt = client.cache && Date.now();
if (client.cache) ingestInCache({ contentMarkers, feedMarkers, userMarkers }, { cachedAt });
fireEvent('local.feedMarker.fetched', { feedMarkers });
fireEvent('local.messageMarker.fetched', { contentMarkers });
fireEvent('local.userMarker.fetched', { userMarkers });
return { data: contentMarkers, cachedAt };
};