import { IconButton, ListItemIcon, ListItemText, Menu, MenuItem, Tooltip } from "@mui/material"; import RemoveSelfIcon from "@mui/icons-material/ExitToApp"; import MoreIcon from "@mui/icons-material/MoreVert"; import GroupSettingsIcon from "@mui/icons-material/Settings"; import ShareObjectIcon from "@mui/icons-material/Share"; import ObjectUsersIcon from "@mui/icons-material/AccountCircle"; import { Team, teamScope } from "models"; import { pond } from "protobuf-ts/pond"; import React, { useState } from "react"; import ObjectUsers from "user/ObjectUsers"; import RemoveSelfFromObject from "user/RemoveSelfFromObject"; import ShareObject from "user/ShareObject"; import { isOffline } from "utils/environment"; import TeamSettings from "./TeamSettings"; import NotificationButton from "common/NotificationButton"; import { blue } from "@mui/material/colors"; import { makeStyles } from "@mui/styles"; const useStyles = makeStyles(() => ({ shareIcon: { color: blue["500"], "&:hover": { color: blue["600"] } }, removeIcon: { color: "var(--status-alert)" }, red: { color: "var(--status-alert)" } })); interface Props { team: Team; permissions: pond.Permission[]; refreshCallback: () => void; preferences: pond.TeamPreferences; toggleNotificationPreference: () => void; removeSelfCallback?: () => void; } interface OpenState { share: boolean; users: boolean; teams: boolean; settings: boolean; removeSelf: boolean; } export default function TeamActions(props: Props) { const classes = useStyles(); const { team, permissions, refreshCallback, preferences, toggleNotificationPreference } = props; const [anchorEl, setAnchorEl] = React.useState(null); const [openState, setOpenState] = useState({ share: false, users: false, teams: false, settings: false, removeSelf: false }); const groupMenu = () => { const canShare = permissions.includes(pond.Permission.PERMISSION_SHARE); const canManageUsers = permissions.includes(pond.Permission.PERMISSION_USERS); return ( setAnchorEl(null)} keepMounted disableAutoFocusItem> {!isOffline() && canShare && ( { setOpenState({ ...openState, share: true }); setAnchorEl(null); }} // button > )} {!isOffline() && canManageUsers && ( { setOpenState({ ...openState, users: true }); setAnchorEl(null); }} // button > )} { setOpenState({ ...openState, removeSelf: true }); setAnchorEl(null); }} // button > ); }; const dialogs = () => { const key = team.key(); const label = team.name(); return ( { setOpenState({ ...openState, settings: false }); }} refreshCallback={refreshCallback} /> setOpenState({ ...openState, share: false })} /> setOpenState({ ...openState, users: false })} refreshCallback={refreshCallback} /> { // console.log(removeSelf) if (removeSelf) refreshCallback() setOpenState({ ...openState, removeSelf: false }) }} /> ); }; const canWrite = permissions.includes(pond.Permission.PERMISSION_WRITE); return ( ); }