import { useSession } from "next-auth/react"; import { useState } from "react"; import { ENABLE_PROFILE_SWITCHER } from "@calcom/lib/constants"; import { useRefreshData } from "@calcom/lib/hooks/useRefreshData"; import { trpc } from "@calcom/trpc/react"; import { Avatar } from "@calcom/ui/components/avatar"; import classNames from "@calcom/ui/classNames"; import { Dropdown, DropdownItem, DropdownMenuContent, DropdownMenuItem, DropdownMenuPortal, DropdownMenuTrigger, } from "@calcom/ui/components/dropdown"; import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "@coss/ui/icons"; export function ProfileDropdown() { const { update, data: sessionData } = useSession(); const { data } = trpc.viewer.me.get.useQuery(); const [menuOpen, setMenuOpen] = useState(false); const refreshData = useRefreshData(); if (!data || !ENABLE_PROFILE_SWITCHER || !sessionData) { return null; } const options = data.profiles.map((profile) => { let label; if (profile.organization) { label = profile.organization.name; } else { label = sessionData.user.name; } return { label, value: profile.upId, }; }); const currentOption = options.find((option) => option.value === sessionData.upId) || options[0]; return ( { setMenuOpen(false); }} className="min-w-56 hariom group overflow-hidden rounded-md"> Switch to {options.map((option) => { const isSelected = currentOption.value === option.value; return ( { setMenuOpen(false); if (isSelected) return; update({ upId: option.value, }).then(() => { refreshData(); }); }} className={classNames("flex w-full", isSelected ? "bg-subtle text-emphasis" : "")}> {option.label} {isSelected ? ( ) : null} ); })} {/* */} ); }