MessageForm.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import TextareaAutosize from '@mui/material/TextareaAutosize';
  2. import Button from '@mui/material/Button';
  3. import Box from '@mui/material/Box';
  4. import { useDispatch, useSelector } from 'react-redux';
  5. import { sendMessage, storeMessage } from '../../../reducers/messageReducer';
  6. import { useState } from 'react';
  7. export const MessageForm = () => {
  8. const dispatch = useDispatch();
  9. const user = useSelector(state => state.getUserSocketReducer.socketUserData)
  10. const socket = useSelector(state => state.getUserSocketReducer.socket)
  11. const [message, setMessage] = useState({message: ''});
  12. return (
  13. <Box
  14. component="form"
  15. onSubmit = {e =>
  16. {
  17. e.preventDefault()
  18. dispatch(sendMessage({user, socket}))
  19. setMessage({message: ''})
  20. }}
  21. sx={{
  22. display: 'flex',
  23. margin: '20px 5px'
  24. }}>
  25. <TextareaAutosize
  26. id="outlined-basic"
  27. label="Type a message..."
  28. variant="outlined"
  29. value={message.message}
  30. placeholder='type you message...'
  31. minRows={3}
  32. maxRows={4}
  33. // onKeyPress={(e) => {
  34. // if (e.key === "Enter") {
  35. // e.preventDefault();
  36. // dispatch(sendStoreMessage())
  37. // dispatch(setMessage({message: ''}));// add localstorage save message later
  38. // }
  39. // }}
  40. onChange={e => {
  41. dispatch(storeMessage({message: e.target.value}))
  42. setMessage({message: e.target.value})}
  43. }
  44. style={{
  45. width: '80%',
  46. resize: 'none',
  47. borderRadius: '4px',
  48. }}
  49. />
  50. <Button
  51. variant="contained"
  52. type='submit'
  53. disabled={user?.isMutted}
  54. style={{
  55. width: '20%',
  56. }}
  57. >
  58. Send
  59. </Button>
  60. </Box>
  61. )
  62. }