import React, { useMemo, useState } from "react"; import { useSelector } from "react-redux"; import IconWrapper from "../../globals/IconWrapper"; import AttachFileModal from "./AttachFileModal"; import MessageInput from "./MessageInput"; import useRecorder from "../../../hooks/useRecorder"; import StopRecordModal from "./StopRecordModal"; import useMessageInput from "../../../hooks/useMessageInput"; import CTAButtons from "./CTAButtons"; import AttachFileOrRecordDuration from "./AttachFileOrRecordDuration"; import EmojiModal from "./EmojiModal"; import BubbleTail from "./BubbleTail"; function NewMessage({ currentChatRoom }) { // Get current message mode const messageMode = useSelector((state) => state.chatReducer.mode); // Message Input const { addEmojiToMessage, handleInput, messageEmpty, getCaretIndex, emitTypingEvent, setMessageEmpty, } = useMessageInput({ currentChatRoom }); // Emoji modal visibility const [emojiVisible, setEmojiVisible] = useState(false); const isRecording = useMemo(() => messageMode === "recording", [messageMode]); const isTyping = useMemo(() => messageMode === "typing", [messageMode]); // Recorder hook to record messages const { formattedTime, startRecording, endRecording, playRecording, clearRecording, pauseRecording, } = useRecorder({ currentChatRoom }); return (