Spaces:
Sleeping
Sleeping
| import SendIcon from "@mui/icons-material/Send"; | |
| import { Button, TextField, useTheme } from "@mui/material"; | |
| import Grid from "@mui/material/Unstable_Grid2"; | |
| import { useState } from "react"; | |
| import { useSnackbar } from "notistack"; | |
| import postData from "../../services/api/basePostData"; | |
| export default function SendMessage({ fetchMessages }) { | |
| const [userMessage, setUserMessage] = useState(""); | |
| const { enqueueSnackbar } = useSnackbar(); | |
| const theme = useTheme(); | |
| const onMessageChange = (e) => { | |
| setUserMessage(e.target.value); | |
| }; | |
| const onPressButton = () => { | |
| const url = `/query/query_search`; | |
| if (!userMessage.trim()) { | |
| enqueueSnackbar("Please enter a message.", { | |
| variant: "warning", | |
| }); | |
| return; | |
| } | |
| const data = { q: userMessage }; | |
| postData(url, data) | |
| .then(fetchMessages) | |
| .catch((error) => { | |
| enqueueSnackbar(error.detail || error.message, { | |
| variant: "error", | |
| }); | |
| }); | |
| setUserMessage(""); | |
| }; | |
| return ( | |
| <> | |
| <Grid | |
| container | |
| alignItems={"center"} | |
| xs={12} | |
| sm={12} | |
| p={2} | |
| pl={3} | |
| border={1} | |
| borderRadius={2} | |
| borderColor={theme.palette.border.default} | |
| sx={{ | |
| backgroundColor: theme.palette.background.default, | |
| }} | |
| > | |
| <Grid item xs={12} sm={10}> | |
| <TextField | |
| fullWidth | |
| size="small" | |
| label="Ask me anything" | |
| value={userMessage} | |
| onChange={onMessageChange} | |
| slotProps={{ | |
| input: { | |
| sx: { | |
| backgroundColor: "white", | |
| borderRadius: "4px", | |
| }, | |
| }, | |
| }} | |
| /> | |
| </Grid> | |
| <Grid | |
| ml={4} | |
| item | |
| xs={12} | |
| border={1} | |
| borderColor={theme.palette.border.default} | |
| borderRadius={20} | |
| display="flex" | |
| justifyContent="center" | |
| alignItems="center" | |
| sx={{ | |
| backgroundColor: theme.palette.secondary.main, | |
| width: 35, | |
| height: 35, | |
| }} | |
| > | |
| <Button onClick={onPressButton}> | |
| <SendIcon | |
| fontSize="small" | |
| sx={{ | |
| color: theme.palette.border.default, | |
| }} | |
| /> | |
| </Button> | |
| </Grid> | |
| </Grid> | |
| </> | |
| ); | |
| } | |