Proyectos de Subversion LeadersLinked - SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3746 stevensc 1
import { useState } from 'react';
2
 
3
import { useApi, useAlert } from '@shared/hooks';
4
import {
5
  addComment as addCommentService,
6
  deleteComment as deleteCommentService
7
} from '@my-coach/services';
8
 
9
export function useAnswerComments(initialComments = [], { onAddComment, onDeleteComment }) {
10
  const [comments, setComments] = useState(initialComments);
11
 
12
  const { showError, showSuccess } = useAlert();
13
 
14
  const { execute: executeAddComment } = useApi(addCommentService);
15
  const { execute: executeDeleteComment } = useApi(deleteCommentService);
16
 
17
  const deleteComment = async (url) => {
18
    await executeDeleteComment(url)
19
      .then(({ message, ...data }) => {
20
        setComments((prev) => prev.filter((c) => c.link_delete !== url));
21
        showSuccess(message);
22
        onDeleteComment(data);
23
      })
24
      .catch((error) => {
25
        showError(error.message);
26
      });
27
  };
28
 
29
  const addComment = async (url, comment) => {
30
    await executeAddComment(url, comment)
31
      .then(({ message, ...data }) => {
32
        setComments((prev) => [...prev, data.item]);
33
        showSuccess(message);
34
        onAddComment(data.total_comments_answer);
35
      })
36
      .catch((error) => {
37
        showError(error.message);
38
      });
39
  };
40
 
41
  return {
42
    comments,
43
    addComment,
44
    deleteComment
45
  };
46
}