import { useEffect, FC } from "react"; import Tippy from "@tippyjs/react"; import { hideAll } from "tippy.js"; import toast from "react-hot-toast"; import { useUpdateUserMutation } from "../../../app/services/user"; import User from "../User"; import InviteLink from "../InviteLink"; import moreIcon from "../../../assets/icons/more.svg?url"; import IconOwner from "../../../assets/icons/owner.svg"; import IconArrowDown from "../../../assets/icons/arrow.down.mini.svg"; import IconCheck from "../../../assets/icons/check.sign.svg"; import useUserOperation from "../../hook/useUserOperation"; import { useAppSelector } from "../../../app/store"; import { useTranslation } from "react-i18next"; interface Props { cid?: number; } const ManageMembers: FC = ({ cid }) => { const { t } = useTranslation("member"); const { t: ct } = useTranslation(); const { users, channels, loginUser } = useAppSelector((store) => { return { users: store.users, channels: store.channels, loginUser: store.authData.user }; }); const { copyEmail, removeFromChannel, removeUser } = useUserOperation({ cid }); const [updateUser, { isSuccess: updateSuccess }] = useUpdateUserMutation(); useEffect(() => { if (updateSuccess) { toast.success(ct("tip.update")); } }, [updateSuccess]); const handleToggleRole = ({ ignore = false, uid, isAdmin = true }: { ignore: boolean; uid: number; isAdmin: boolean; }) => { hideAll(); if (ignore) return; updateUser({ id: uid, is_admin: isAdmin }); }; const channel = cid ? channels.byId[cid] : null; const uids = channel ? (channel.is_public ? users.ids : channel.members) : users.ids; return (
{loginUser?.is_admin && }

{t("manage_members")}

{t("manage_tip")}

    {uids.map((uid) => { const currUser = users.byId[uid]; if (!currUser) return null; const { name, email, is_admin } = currUser; const owner = channel && channel.owner == uid; const switchRoleVisible = loginUser?.is_admin && loginUser.uid !== uid && uid !== 1; const dotsVisible = email || loginUser?.is_admin; const canRemove = loginUser?.is_admin && loginUser?.uid != uid && uid !== 1; const canRemoveFromChannel = channel && channel.owner == loginUser?.uid && loginUser?.uid != uid; return (
  • {name} {owner && } {email}
    {is_admin ? t("admin") : t("user")} {switchRoleVisible && (
  • {t("admin")} {is_admin && }
  • {t("user")} {!is_admin && }
} > )} {dotsVisible && ( {email && (
  • {ct("action.copy_email")}
  • )} {canRemoveFromChannel && (
  • {t("remove_from_channel")}
  • )} {canRemove && (
  • {ct("action.remove")}
  • )} } >
    dots icon
    )} ); })}
    ); }; export default ManageMembers;