import {
  ISendMessageArgs,
  hasDebugLogger,
  sendMessage as sendMessageApi,
} from '@livelike/javascript';
import { useCallback } from 'react';
import { chatMessageStoreActions } from '../store/chatMessage';
import { useAnalytics } from './useAnalytics';

export function useChatMessageActions({ roomId }) {
  const { trackEvent } = useAnalytics();
  const sendChatMessage = useCallback(
    (messageArgs: ISendMessageArgs) => {
      return sendMessageApi(messageArgs)
        .then((message) => {
          chatMessageStoreActions.addChatMessageAction({
            roomId: messageArgs.roomId,
            chatMessage: message,
          });
          trackEvent('Chat Message Sent', { roomId, message });
          return message;
        })
        .catch((error) => {
          trackEvent('Chat Message Failed', { roomId, error });
          hasDebugLogger() && console.error(error);
          return error;
        });
    },
    [roomId]
  );

  const deleteChatMessage = chatMessageStoreActions.deleteChatMessageAction;

  return { sendChatMessage, deleteChatMessage };
}
