import { Settings } from "@mui/icons-material"; import { IconButton, Menu, MenuItem } from "@mui/material"; import { useState } from "react"; import UserLite from "../../api-bodies/UserLite"; import UserStatus from "../../api-bodies/UserStatus"; import { useAppDispatch, useAppSelector } from "../../redux/hooks"; import { selectFavorites, addFavorite, removeFavorite, } from "../../redux/slices/favoritesSlice"; import { open as openMeetingDetails } from "../../redux/slices/meetingDetailsOpenSlice"; import { selectMeeting } from "../../redux/slices/meetingsAndUserStatusSlice"; import { useNavigate } from "react-router-dom"; import { selectMe } from "../../redux/slices/usersSlice"; import NewMeeting from "../../api-bodies/NewMeeting"; import axios from "../../api/axios"; interface Props { user: UserLite; status: UserStatus; } const SettingsButton: React.FC = ({ user, status }: Props) => { const navigate = useNavigate(); const [anchorEl, setAnchorEl] = useState(null); const me = useAppSelector(selectMe); const favoritesUuids = useAppSelector(selectFavorites); const meeting = useAppSelector((state) => selectMeeting(state, status.meetingId) ); const dispatch = useAppDispatch(); const open = Boolean(anchorEl); const handleClick = (event: React.MouseEvent) => { setAnchorEl(event.currentTarget); }; const handleClose = () => { setAnchorEl(null); }; const startCall = async () => { const newMeeting: NewMeeting = { startTime: "2022-03-30T23:40:00Z", duration: 30, topic: `Meeting with ${user.name}`, registrantIds: [user.uuid], }; try { const response = await axios.post( `/users/${me}/meetings`, JSON.stringify(newMeeting) ); window.open(response.data.joinUrl, "_blank")?.focus(); } catch (e) { console.log(e); } }; return (
{favoritesUuids.includes(user.uuid) ? ( { handleClose(); dispatch(removeFavorite({ userId: me, toBeRemoved: user.uuid })); }} > Remove from Favorites ) : ( { handleClose(); dispatch(addFavorite({ userId: me, toBeAdded: user.uuid })); }} > Add to Favorites )} {status.inMeeting ? ( { handleClose(); dispatch(openMeetingDetails(meeting)); }} > View current meeting ) : null} { handleClose(); navigate(`../contacts/${user.uuid}`); }} > View upcoming meetings { handleClose(); startCall(); }} > Create meeting
); }; export default SettingsButton;