blob: 69e6b6e98943884bd4a4239221960b9767ed376b [file] [log] [blame]
simond47ef9e2022-09-28 22:24:28 -04001import { Divider, InputBase } from '@mui/material';
simon07b4eb02022-09-29 17:50:26 -04002import { Stack } from '@mui/system';
3import { useCallback, useState } from 'react';
4
simond47ef9e2022-09-28 22:24:28 -04005import {
6 RecordVideoMessageButton,
7 RecordVoiceMessageButton,
8 SelectEmojiButton,
9 SendMessageButton,
10 UploadFileButton,
11} from './buttons';
Larbi Gharibe9af9732021-03-31 15:08:01 +010012
Adrien Béraud8a438f82021-04-14 16:18:57 -040013export default function SendMessageForm(props) {
simond47ef9e2022-09-28 22:24:28 -040014 const [currentMessage, setCurrentMessage] = useState('');
Adrien Béraud35e7d7c2021-04-13 03:28:39 -040015
simond47ef9e2022-09-28 22:24:28 -040016 const handleSubmit = (e) => {
17 e.preventDefault();
Adrien Béraud88a52442021-04-26 12:11:41 -040018 if (currentMessage) {
simond47ef9e2022-09-28 22:24:28 -040019 props.onSend(currentMessage);
20 setCurrentMessage('');
Adrien Béraud88a52442021-04-26 12:11:41 -040021 }
simond47ef9e2022-09-28 22:24:28 -040022 };
23 const handleInputChange = (event) => setCurrentMessage(event.target.value);
idillonaedab942022-09-01 14:29:43 -040024
Adrien Béraud023f7cf2022-09-18 14:57:53 -040025 const onEmojiSelected = useCallback(
idillonaedab942022-09-01 14:29:43 -040026 (emoji) => setCurrentMessage((currentMessage) => currentMessage + emoji),
simond47ef9e2022-09-28 22:24:28 -040027 [setCurrentMessage]
28 );
Larbi Gharibe9af9732021-03-31 15:08:01 +010029
Adrien Béraud8a438f82021-04-14 16:18:57 -040030 return (
simond47ef9e2022-09-28 22:24:28 -040031 <Stack padding="30px 16px 0px 16px">
idillonaedab942022-09-01 14:29:43 -040032 <Divider
33 sx={{
simond47ef9e2022-09-28 22:24:28 -040034 bordeTop: '1px solid #E5E5E5',
idillonaedab942022-09-01 14:29:43 -040035 }}
36 />
37 <Stack
38 component="form"
Adrien Béraud8a438f82021-04-14 16:18:57 -040039 onSubmit={handleSubmit}
idillonaedab942022-09-01 14:29:43 -040040 direction="row"
41 alignItems="center"
42 flexGrow={1}
43 spacing="20px"
44 padding="16px 0px"
45 >
simond47ef9e2022-09-28 22:24:28 -040046 <UploadFileButton />
47 <RecordVoiceMessageButton />
48 <RecordVideoMessageButton />
Adrien Béraud8a438f82021-04-14 16:18:57 -040049
simond47ef9e2022-09-28 22:24:28 -040050 <Stack flexGrow={1}>
idillonaedab942022-09-01 14:29:43 -040051 <InputBase
52 placeholder="Write something nice"
53 value={currentMessage}
54 onChange={handleInputChange}
55 sx={{
simond47ef9e2022-09-28 22:24:28 -040056 fontSize: '15px',
57 color: 'black',
58 '& ::placeholder': {
59 color: '#7E7E7E',
idillonaedab942022-09-01 14:29:43 -040060 opacity: 1,
61 },
62 }}
63 />
64 </Stack>
simond47ef9e2022-09-28 22:24:28 -040065 <SelectEmojiButton onEmojiSelected={onEmojiSelected} />
66 {currentMessage && <SendMessageButton type="submit" />}
idillonaedab942022-09-01 14:29:43 -040067 </Stack>
68 </Stack>
Adrien Béraudab519ff2022-05-03 15:34:48 -040069 );
Larbi Gharibe9af9732021-03-31 15:08:01 +010070}