Proyectos de Subversion LeadersLinked - SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3622 stevensc 1
import { useEffect, useRef, useState } from 'react';
2
 
3
import { useAlert, useApi, usePagination } from '@shared/hooks';
4
import { saveMessage } from '@inmail/services';
5
 
6
export const useMessages = (url) => {
7
  const [messages, setMessages] = useState([]);
8
  const messagesEndRef = useRef(null);
9
 
10
  const { items, loading, elementRef, resetPagination } = usePagination(url);
11
 
12
  const { showError } = useAlert();
13
 
14
  const { execute } = useApi(saveMessage, {
15
    onSuccess: (data) => {
16
      setMessages([...messages, data]);
17
    },
18
    onError: (error) => {
19
      showError(error.message);
20
    }
21
  });
22
 
23
  const sendMessage = async (message) => {
24
    await execute(url, message);
25
    messagesEndRef.current?.scrollIntoView({
26
      behavior: 'smooth',
27
      block: 'end'
28
    });
29
  };
30
 
31
  const reportMessage = (message) => {
32
    console.log(message);
33
    // TODO: Implementar reporte de mensaje
34
  };
35
 
36
  useEffect(() => {
37
    setMessages(items);
38
  }, [items]);
39
 
40
  return {
41
    messages,
42
    loading,
43
    messagesEndRef,
44
    elementRef,
45
    resetPagination,
46
    sendMessage,
47
    reportMessage
48
  };
49
};