UNPKG

@amityco/ts-sdk-react-native

Version:

Amity Social Cloud Typescript SDK

82 lines (69 loc) 2.3 kB
import { getActiveClient } from '~/client/api'; import { pullFromCache, upsertInCache } from '~/cache/api'; import { fireEvent } from '~/core/events'; import { getMessage } from '../internalApi/getMessage'; import { LinkedObject } from '~/utils/linkedObject'; /* begin_public_function id: message.soft_delete */ /** * ```js * import { softDeleteMessage } from '@amityco/ts-sdk-react-native' * const success = await softDeleteMessage('foobar') * ``` * * Delete a {@link Amity.Message} * * @param messageId the ID of the {@link Amity.Message} to delete * @return A success boolean if the {@link Amity.Message} was deleted * * @category Message API * @async */ export const softDeleteMessage = async ( messageId: Amity.Message['messageId'], ): Promise<Amity.Message> => { const client = getActiveClient(); client.log('message/softDeleteMessage', messageId); // API-FIX: This endpoint has not been implemented yet. await client.http.delete<{ success: boolean }>( `/api/v5/messages/${encodeURIComponent(messageId)}`, ); const deleted = await getMessage(messageId); fireEvent('local.message.deleted', { messages: [deleted.data] }); return LinkedObject.message(deleted.data); }; /** * ```js * import { softDeleteMessage } from '@amityco/ts-sdk-react-native' * const success = softDeleteMessage.optimistically('foobar') * ``` * * Deletes a {@link Amity.Message} * * @param messageId The {@link Amity.Message} ID to delete * @return A success boolean if the {@link Amity.Message} was deleted * * @category Message API */ softDeleteMessage.optimistically = ( messageId: Amity.Message['messageId'], ): Amity.Cached<Amity.Message> | undefined => { const client = getActiveClient(); client.log('message/softDeleteMessage.optimistically', messageId); const message = pullFromCache<Amity.InternalMessage>(['message', 'get', messageId]); if (!message) return; const cachedAt = -1; const deleted: Amity.InternalMessage = { ...message.data, isDeleted: true, updatedAt: new Date().toISOString(), }; upsertInCache(['message', 'get', messageId], deleted, { cachedAt }); fireEvent('local.message.deleted', { messages: [deleted] }); return { data: LinkedObject.message(deleted), cachedAt, }; }; /* end_public_function */