AutorÃa | Ultima modificación | Ver Log |
import { useEffect, useRef, useState } from 'react';
import { useAlert, useApi, usePagination } from '@shared/hooks';
import { saveMessage } from '@inmail/services';
export const useMessages = (url) => {
const [messages, setMessages] = useState([]);
const messagesEndRef = useRef(null);
const { items, loading, elementRef, resetPagination } = usePagination(url);
const { showError } = useAlert();
const { execute } = useApi(saveMessage, {
onSuccess: (data) => {
setMessages([...messages, data]);
},
onError: (error) => {
showError(error.message);
}
});
const sendMessage = async (message) => {
await execute(url, message);
messagesEndRef.current?.scrollIntoView({
behavior: 'smooth',
block: 'end'
});
};
const reportMessage = (message) => {
console.log(message);
// TODO: Implementar reporte de mensaje
};
useEffect(() => {
setMessages(items);
}, [items]);
return {
messages,
loading,
messagesEndRef,
elementRef,
resetPagination,
sendMessage,
reportMessage
};
};