import { useAuth } from "../../contexts/authContext"; import Image from "next/image"; import { FaMicrophoneAlt, FaHeadphonesAlt, FaTh, FaBell, FaSearch, FaBuilding, FaCalendarDay, FaClock, FaPeopleCarry, FaAngleDown, FaCheck, FaDatabase, FaMicrophoneAltSlash, FaVolumeMute, FaLayerGroup, } from "react-icons/fa"; import { useTeamDashboardContext } from "../../contexts/teamDashboardContext"; import router from "next/router"; import Moment from "react-moment"; import { User } from "../../models/user"; import { generateGreetings } from "../../helpers/dateTime"; import { Dropdown, Menu, Tooltip } from "antd"; import { useRouter } from "next/router"; import { TeamMemberRole, TeamMemberStatus } from "../../models/teamMember"; import { toast } from "react-hot-toast"; import SubMenu from "antd/lib/menu/SubMenu"; import { useEffect, useState } from "react"; import TeamService from "../../services/teamService"; import { Team } from "../../models/team"; import Loading from "../Loading"; import { useKeyboardContext } from "../../contexts/keyboardContext"; import UserStatusBubble from "../UserStatusBubble"; const teamService = new TeamService(); const today = new Date(); export default function Header() { const { currUser, logOut } = useAuth(); const { team, user, userTeamMember } = useTeamDashboardContext(); const router = useRouter(); const { teamid } = router.query; const { hasRecPermit, audioInputDeviceId, audioOutputDeviceId, selectAudioOutput, selectAudioInput, inputDevices, outputDevices, isMuted, isSilenceMode, muteOrUnmute, silenceOrLivenMode, } = useKeyboardContext(); const [usersTeams, setUserTeams] = useState(null); // get team data for the team dropdown useEffect(() => { (async function () { try { // get all the teams that this user is part of const newTeams: Team[] = await teamService.getActiveOrInvitedTeamsbyUser( currUser.uid, currUser.email ); setUserTeams(newTeams); } catch (error) { console.log("problem getting teams of this user"); toast.error("problem on load"); } })(); }, []); async function handleSignOut() { console.log("clicked log out button"); try { await logOut(); } catch (error) { console.log(error); toast.error("Unable to log out!"); } } async function handleAdminRoute() { if (userTeamMember.role == TeamMemberRole.admin) { router.push("/teams/" + teamid + "/admin"); return; } toast.error("You are not a team admin!"); } const searchBar = (
); const TeamsMenu = ( window.open("/teams", "_self")} key={"team hub"} icon={} > }> {/* all current teams that this person is a part of */} {usersTeams && usersTeams.map((uteam, i) => { return ( : <>} onClick={() => { console.log("going to " + uteam.id); window.location.href = "/teams/" + uteam.id; }} > ); })} ); const UserMenu = ( router.push("/teams/profile")}> ); const handleSilenceOrLivenMode = (event) => { event.preventDefault(); silenceOrLivenMode(); }; const handleMuteUnmute = (event) => { event.preventDefault(); muteOrUnmute(); }; const audioInputDropMenu = ( {/* device */} {inputDevices.map((device, i) => { return ( : <>} onClick={() => selectAudioInput(device.deviceId)} > ); })} ); const audioOutputDropMenu = ( {/* devices */} {outputDevices.map((device, i) => { return ( : <>} onClick={() => selectAudioOutput(device.deviceId)} > ); })} ); function renderAudioInput() { if (!hasRecPermit) { return ( ); } if (isMuted) { return ( ); } return ( ); } function renderAudioOutput() { if (isSilenceMode) { return ( ); } return ( ); } const periodOfDay = generateGreetings(); return (
{/* welcome message */} 👋Hey {user.firstName}, {periodOfDay}! {/* Date and time */} {/* header control section */} {/* search bar */} {renderAudioOutput()} {renderAudioInput()} {/* teams menu */} {/* avatar */} asdf
); }