Proyectos de Subversion LeadersLinked - SPA

Rev

Autoría | Ultima modificación | Ver Log |

import React, { useRef, useState } from 'react';
import { useDispatch } from 'react-redux';

import { axios, scrollToBottom } from '@utils';
import { useMessages } from '@hooks';
import { addNotification } from '@store/notification/notification.actions';

import Chat from '@components/chat/Chat';
import MessagesList from './MessageList0';
import ConfirmModal from '@components/modals/ConfirmModal';
import Options from '@components/UI/Option';

const InmailChat = ({ conversation, changeConversation }) => {
  const [isShowConfirm, setIsShowConfirm] = useState(false);
  const messagesList = useRef(null);
  const dispatch = useDispatch();

  const { messages, loadMore, loading, report } = useMessages(conversation?.messages_link);

  const deleteConversation = () => {
    axios.post(conversation.delete_link).then((response) => {
      const { success, data } = response.data;

      if (!success) {
        dispatch(addNotification({ style: 'danger', msg: data }));
        return;
      }

      dispatch(addNotification({ style: 'success', msg: data }));
      toggleConfirmModal();
      changeConversation(null);
    });
  };

  const toggleConfirmModal = () => {
    setIsShowConfirm(!isShowConfirm);
  };

  return (
    <>
      <Chat>
        <Chat.Header onClose={() => changeConversation(null)}>
          <Chat.Title url={conversation.profile}>{conversation.name}</Chat.Title>
          <Options>
            {conversation.delete_link && (
              <Options.Item onClick={toggleConfirmModal}>Borrar convesación</Options.Item>
            )}
          </Options>
        </Chat.Header>

        <MessagesList
          messages={messages}
          onReport={report}
          onPagination={loadMore}
          loading={loading}
          scrollRef={messagesList}
        />

        <Chat.SubmitForm
          sendUrl={conversation.send_link}
          uploadUrl={conversation.send_link}
          onSubmit={() => scrollToBottom(messagesList)}
        />
      </Chat>
      <ConfirmModal
        show={isShowConfirm}
        onClose={toggleConfirmModal}
        onAccept={deleteConversation}
      />
    </>
  );
};

export default InmailChat;