blob: ae0a7def1feaf258f3118d29fdfd2f6e9048f618 [file] [log] [blame]
Larbi Gharibe9af9732021-03-31 15:08:01 +01001import React from 'react'
Adrien Béraudab519ff2022-05-03 15:34:48 -04002import makeStyles from '@mui/styles/makeStyles';
3import { IconButton, InputBase, Paper, Popper } from '@mui/material'
4import { Send, EmojiEmotionsRounded } from '@mui/icons-material'
Adrien Béraud8a438f82021-04-14 16:18:57 -04005import EmojiPicker from 'emoji-picker-react'
Adrien Béraud5e9e19b2021-04-22 01:38:53 -04006import authManager from '../AuthManager'
Larbi Gharibe9af9732021-03-31 15:08:01 +01007
Adrien Béraud35e7d7c2021-04-13 03:28:39 -04008const useStyles = makeStyles((theme) => ({
Adrien Béraud8a438f82021-04-14 16:18:57 -04009 root: {
Adrien Béraud4e287b92021-04-24 16:15:56 -040010 marginLeft: 16,
11 marginRight: 16,
Adrien Béraud8a438f82021-04-14 16:18:57 -040012 padding: '2px 4px',
13 display: 'flex',
14 alignItems: 'center',
15 borderRadius: 8
16 },
17 input: {
18 marginLeft: theme.spacing(1),
19 flex: 1,
20 },
21 iconButton: {
22 padding: 10,
23 },
24 divider: {
25 height: 28,
26 margin: 4,
27 },
Adrien Béraud5e9e19b2021-04-22 01:38:53 -040028}))
Larbi Gharibe9af9732021-03-31 15:08:01 +010029
Adrien Béraud8a438f82021-04-14 16:18:57 -040030export default function SendMessageForm(props) {
31 const classes = useStyles()
32 const [anchorEl, setAnchorEl] = React.useState(null)
33 const [currentMessage, setCurrentMessage] = React.useState("")
Adrien Béraud35e7d7c2021-04-13 03:28:39 -040034
Adrien Béraud5e9e19b2021-04-22 01:38:53 -040035 const handleOpenEmojiPicker = e => setAnchorEl(anchorEl ? null : e.currentTarget)
36 const handleClose = () => setAnchorEl(null)
37
Adrien Béraud8a438f82021-04-14 16:18:57 -040038 const handleSubmit = e => {
39 e.preventDefault()
Adrien Béraud88a52442021-04-26 12:11:41 -040040 if (currentMessage) {
41 props.onSend(currentMessage)
42 setCurrentMessage('')
43 }
Adrien Béraud8a438f82021-04-14 16:18:57 -040044 }
Adrien Béraud5e9e19b2021-04-22 01:38:53 -040045 const handleInputChange = (event) => setCurrentMessage(event.target.value)
Adrien Béraud8a438f82021-04-14 16:18:57 -040046 const onEmojiClick = (e, emojiObject) => {
Adrien Béraud8a438f82021-04-14 16:18:57 -040047 setCurrentMessage(currentMessage + emojiObject.emoji)
48 handleClose()
49 }
50 const open = Boolean(anchorEl)
51 const id = open ? 'simple-popover' : undefined
Larbi Gharibe9af9732021-03-31 15:08:01 +010052
Adrien Béraud8a438f82021-04-14 16:18:57 -040053 return (
54 <div className="send-message-form">
55 <Paper component="form"
56 onSubmit={handleSubmit}
57 className="send-message-card"
58 className={classes.root}>
Adrien Béraudab519ff2022-05-03 15:34:48 -040059 <IconButton
60 aria-describedby={id}
61 variant="contained"
62 color="primary"
63 onClick={handleOpenEmojiPicker}
64 size="large">
Adrien Béraude74741b2021-04-19 13:22:54 -040065 <EmojiEmotionsRounded />
Adrien Béraud8a438f82021-04-14 16:18:57 -040066 </IconButton>
67 <Popper
68 id={id}
69 open={open}
70 anchorEl={anchorEl}
71 onClose={handleClose}
72 >
Adrien Béraude74741b2021-04-19 13:22:54 -040073 <EmojiPicker.default
Adrien Béraud8a438f82021-04-14 16:18:57 -040074 onEmojiClick={onEmojiClick}
75 disableAutoFocus={true}
76 disableSkinTonePicker={true}
77 native
78 />
79 </Popper>
80
81 <InputBase
82 className={classes.input}
83 placeholder="Write something nice"
84 height="35"
85 value={currentMessage}
86 onChange={handleInputChange}
87 />
Adrien Béraudab519ff2022-05-03 15:34:48 -040088 <IconButton
89 type="submit"
90 className={classes.iconButton}
91 aria-label="search"
92 size="large">
Adrien Béraude74741b2021-04-19 13:22:54 -040093 <Send />
Adrien Béraud8a438f82021-04-14 16:18:57 -040094 </IconButton>
95 </Paper>
96 </div>
Adrien Béraudab519ff2022-05-03 15:34:48 -040097 );
Larbi Gharibe9af9732021-03-31 15:08:01 +010098}