import { FC, memo } from "react"; import { useTranslation } from "react-i18next"; import { NavLink } from "react-router-dom"; import Tippy from "@tippyjs/react"; import clsx from "clsx"; import { useGetAgoraStatusQuery } from "@/app/services/server"; import { useAppSelector } from "@/app/store"; import useUserOperation from "@/hooks/useUserOperation"; import IconCall from "@/assets/icons/call.svg"; import IconMessage from "@/assets/icons/message.svg"; import IconMore from "@/assets/icons/more.svg"; import Avatar from "../Avatar"; import ContextMenu, { Item } from "../ContextMenu"; import { shallowEqual } from "react-redux"; interface Props { uid: number; type?: "embed" | "card"; cid?: number; } const Profile: FC = ({ uid, type = "embed", cid }) => { const { data: agoraEnabled } = useGetAgoraStatusQuery(); const { t } = useTranslation("member"); const { t: ct } = useTranslation(); const { canCopyEmail, copyEmail, startCall, removeFromChannel, canRemoveFromChannel, canRemove, removeUser, isAdmin, canUpdateRole, updateRole } = useUserOperation({ uid, cid }); const data = useAppSelector((store) => store.users.byId[uid], shallowEqual); if (!data) return null; // console.log("profile", data); const { name, email, avatar // introduction = "This guy has nothing to introduce", } = data; const isCard = type == "card"; const canRemoveFromServer = !isCard && canRemove; const hasMore = email || canRemoveFromChannel || canRemoveFromServer; const iconClass = `cursor-pointer flex flex-col items-center gap-1 rounded-lg w-32 text-primary-400 bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 text-sm pt-3.5 pb-3`; const containerClass = clsx( `flex-center flex-col gap-1 z-[99] mt-20 select-none`, isCard ? "p-4 w-[280px] bg-white dark:bg-gray-800 drop-shadow rounded-md" : "md:w-[432px]" ); return (

{name} #{uid}

{email} {/*

{introduction}

*/}
  • {t("send_msg")}
  • {agoraEnabled && type == "embed" && (
  • {t("call")}
  • )} } >
  • {ct("more")}
); }; export default memo(Profile);