UNPKG

@amityco/ts-sdk

Version:

Amity Social Cloud Typescript SDK

56 lines (48 loc) 1.56 kB
import { fireEvent } from '~/core/events'; import { ContentFlagReasonEnum } from '~/@types'; import { ingestInCache } from '~/cache/api/ingestInCache'; import { getActiveClient } from '~/client/api/activeClient'; import { prepareMessagePayload } from '~/messageRepository/utils'; /* begin_public_function id: message.flag */ /** * ```js * import { MessageRepository } from '@amityco/ts-sdk' * const flagged = await MessageRepository.flagMessage(messageId, reason) * ``` * * @param messageId of the message to flag * @param reason the reason to flag the message * @returns the created report result * * @category Message API * @async * */ export const flagMessage = async ( messageId: Amity.Message['messageId'], reason?: Amity.ContentFlagReason, ): Promise<boolean> => { const client = getActiveClient(); client.log('message/flag', messageId); const isPredefinedReason = reason && Object.entries(ContentFlagReasonEnum).some( ([key, value]) => key !== ContentFlagReasonEnum.Others && value === reason, ); const body = { reason: isPredefinedReason ? reason : ContentFlagReasonEnum.Others, detail: !isPredefinedReason ? reason : '', }; const { data: payload } = await client.http.post<Amity.MessagePayload>( `/api/v5/messages/${encodeURIComponent(messageId)}/flags`, body, ); if (client.cache) { const messagePayload = await prepareMessagePayload(payload); ingestInCache(messagePayload); } fireEvent('message.flagged', payload); return !!payload; }; /* end_public_function */