import { ChevronRight } from "@mui/icons-material"; import { Avatar, Box, Divider, Drawer, IconButton, Theme, Typography } from "@mui/material"; import { makeStyles } from "@mui/styles"; import { useMobile } from "hooks"; import { Team } from "models"; import Chat from "./Chat"; import { pond } from "protobuf-ts/pond"; import { useEffect, useState } from "react"; import { useTeamAPI } from "providers"; import { openCrispChat } from './CrispChat'; import RobotIcon from "products/CommonIcons/robotIcon"; const useStyles = makeStyles((theme: Theme) => ({ chatDrawer: { display: "flex", flexDirection: "column", backgroundColor: theme.palette.background.default, height: "100%", maxHeight: "100%", minHeight: "100%", minWidth: theme.spacing(54), maxWidth: theme.spacing(54), }, chatContainer: { flex: 1, overflow: "hidden", }, chatDrawerMobile: { backgroundColor: theme.palette.background.default, height: "100vh", width: "100%", display: "flex", flexDirection: "column", }, drawerHeader: { display: "flex", alignItems: "center", padding: theme.spacing(1), ...theme.mixins.toolbar, justifyContent: "flex-start", }, })); interface Props { open: boolean; onClose: () => void; team: Team; } export function ChatDrawer(props: Props) { const { open, onClose, team } = props; const isMobile = useMobile(); const classes = useStyles(); const teamAPI = useTeamAPI(); const [selectedTeam, setSelectedTeam] = useState(team); const [teams, setTeams] = useState([]) useEffect(() => { teamAPI.listTeams(10, 0, "desc", "name", undefined, false, undefined).then(resp => { setTeams(resp.data.teams) }) }, [teamAPI]) const openCrisp = () => { openCrispChat() onClose() } return ( {/* Side icon column */} ({ backgroundColor: theme.palette.background.paper, borderRight: `1px solid ${theme.palette.divider}`, })} > setSelectedTeam(team)} sx={{ border: selectedTeam.settings?.key === team.settings.key ? "1px solid white" : "1px solid transparent", borderRadius: "50%", }} > {teams.map((t, i)=> { if (t.settings?.key === team.key()) return null; return ( setSelectedTeam(Team.create(t))} sx={{ border: selectedTeam.key() === t.settings?.key ? "1px solid white" : "1px solid transparent", borderRadius: "50%", }} key={"chat-team-"+i} > ) })} {/* Main chat area */} {selectedTeam.name()} Chat ); }