import React, { ChangeEvent, ReactElement, useState } from 'react'; import cn from 'classnames'; import { FunctionTypeStringToVoid, FunctionTypeVoidToVoid, } from '../../../CommonTypes/BaseViewModel'; import VoiceRecordingProgress from './VoiceRecordingProgress/VoiceRecordingProgress'; import AttachmentUploader from './AttachmentUploader/AttachmentUploader'; import './MessageInput.scss'; import { AttachmentSvg, SendSvg, VoiceSvg } from '../../icons'; import Loader from '../Loader/Loader'; export type MessageInputProps = { value: string; onChange?: FunctionTypeStringToVoid; onChanging?: FunctionTypeStringToVoid; onSend?: FunctionTypeStringToVoid; enableVoice?: boolean; onVoice?: FunctionTypeVoidToVoid; disableAttachment?: boolean; onAttachment: (event: React.ChangeEvent) => void; previewMessage?: ReactElement; rephrase?: ReactElement; loading?: boolean; placeholder?: string; disableActions?: boolean; className?: string; }; // eslint-disable-next-line react/function-component-definition const MessageInput = ({ value, onChange, onChanging, onSend, enableVoice, onVoice, // eslint-disable-next-line @typescript-eslint/no-unused-vars disableAttachment, onAttachment, // eslint-disable-next-line @typescript-eslint/no-unused-vars previewMessage, rephrase, loading, placeholder, disableActions = false, className, }: MessageInputProps) => { const [isVoiceMessage, setVoiceMessage] = useState(true); const handleChange = (event: ChangeEvent) => { if (onChange) { onChange(event.target.value); } }; const handleChanging = (event: ChangeEvent) => { if (onChanging) { onChanging(event.target.value); } }; function sendTextMessageActions() { if (value && onSend) { onSend(value); if (onChange && !disableActions) { onChange(''); } } } return (
{previewMessage}
{ if (!(value && value.length > 0)) { setVoiceMessage(true); } }} className="chat-input" > } onChangeFile={onAttachment} /> {!enableVoice && (