Proyectos de Subversion LeadersLinked - SPA

Rev

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
  };
};