UNPKG

@amityco/ts-sdk-react-native

Version:

Amity Social Cloud Typescript SDK

65 lines (52 loc) 1.56 kB
import { getActiveClient } from '~/client/api'; import { upsertInCache } from '~/cache/api'; import { fireEvent } from '~/core/events'; import { getPost } from '~/postRepository/api/getPost'; import { pushToTombstone } from '~/cache/api/pushToTombstone'; import { scheduleTask } from '~/core/microtasks'; import { getComment } from './getComment'; export const deleteComment = async ( commentId: Amity.InternalComment['commentId'], permanent = false, ): Promise<Amity.InternalComment> => { const client = getActiveClient(); const comment = await getComment(commentId); // API-FIX: This endpoint has not been implemented yet. await client.http.delete<{ success: boolean }>( `/api/v4/comments/${encodeURIComponent(commentId)}`, { params: { commentId, permanent, }, }, ); // to support hard deletion const deleted = { ...comment.data, isDeleted: true }; const post = await getPost(comment.data.referenceId); fireEvent('local.post.updated', { posts: [post.data], categories: [], comments: [], communities: [], communityUsers: [], feeds: [], files: [], postChildren: [], users: [], videoStreamings: [], }); fireEvent('local.comment.deleted', { comments: [deleted], commentChildren: [], files: [], users: [], communityUsers: [], }); if (permanent) { scheduleTask(() => pushToTombstone('comment', commentId)); } else { upsertInCache(['comment', 'get', commentId], { isDeleted: true }); } return deleted; };