InputArea.jsx 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { useEffect, useRef, useState } from "react"
  2. import { connect } from "react-redux"
  3. import { actionSendMessage, actionUpsertMSG } from "../../actions/actionsMessages"
  4. import { InputAreaWrapper, TextArea} from "./InputArea.style";
  5. import Plane from "./icons8-plane.png";
  6. import MessageDropZone from "../DropZone/MessageDropZone/MessageDropZone";
  7. import { actionAddDraftMessage, actionDeleteDraftMessageId, actionDeleteReplyMessageId, actionSetInputMessageValue } from "../../reducers/chatReducer";
  8. import SendRoundedIcon from '@mui/icons-material/SendRounded';
  9. import ReplyMessage from "../MessageDraft/ReplyMessageDraft";
  10. import { MessageDraftBox } from "../MessageDraft/MessageDraftBox";
  11. import InputAreaMessageEditor from "./InputAreaMessageEditor";
  12. const InputArea = ({sendMessage, deleteDraftMessage, chatId, chats, setInputValue, modal: {content, isOpen}}) => {
  13. const message = chats[chatId]?.draft?.mainInputValue?.message;
  14. const inputValue = chats[chatId]?.draft?.mainInputValue?.value || '';
  15. let replyMessageId = (message && typeof message !== 'object') ? message : null;
  16. let forwardedMessageId = (message && typeof message === 'object') ? message._id : null;
  17. console.log(forwardedMessageId)
  18. return (chats[chatId]?.draft?.messageEditor && !chats[chatId]?.draft?.messageEditor?.message?.media) ?
  19. <InputAreaMessageEditor chatId={chatId}/>
  20. :
  21. <InputAreaWrapper>
  22. <MessageDraftBox chat={chats[chatId]}>
  23. </MessageDraftBox>
  24. <div style={{display: 'flex', alignItems: 'center', padding: '10px 0'}}>
  25. <MessageDropZone chatId={chatId}/>
  26. <TextArea
  27. value={content === 'messageMediaModal' && isOpen ? '' : inputValue}
  28. onChange={e=>{setInputValue(chatId, e.target.value, 'mainInputValue')}}
  29. maxRows={8}
  30. placeholder="Write a message..."
  31. />
  32. {inputValue ?
  33. <SendRoundedIcon
  34. style={{margin: '0 16px', cursor: "pointer"}}
  35. color="primary"
  36. // src={Plane}
  37. onClick={
  38. async() => {
  39. let val = await sendMessage(null, chatId, inputValue.replace(/^\s+|\s+$/g, ''), null, replyMessageId, forwardedMessageId);
  40. (val?.replyTo?._id || val?.forwarded?._id) && deleteDraftMessage(chatId, null)
  41. val && setInputValue(chatId, "", 'mainInputValue')
  42. }
  43. }
  44. /> : <div></div>}
  45. </div>
  46. </InputAreaWrapper>
  47. }
  48. export default connect(state => ({chats: state.chats, modal: state?.modal}), {
  49. sendMessage: actionSendMessage,
  50. setInputValue: actionSetInputMessageValue,
  51. deleteDraftMessage: actionAddDraftMessage
  52. })(InputArea);