fix: remove all the delete super admin entries

This commit is contained in:
Tristan Yang
2022-12-05 11:38:48 +08:00
parent 4d6895a2fe
commit 35a224b670
5 changed files with 19 additions and 31 deletions
+6 -5
View File
@@ -19,7 +19,8 @@ interface Props {
cid?: number;
}
const ManageMembers: FC<Props> = ({ cid }) => {
const { t } = useTranslation(["member", "common"]);
const { t } = useTranslation("member");
const { t: ct } = useTranslation();
const { users, channels, loginUser } = useAppSelector((store) => {
return {
users: store.users,
@@ -68,9 +69,9 @@ const ManageMembers: FC<Props> = ({ cid }) => {
if (!currUser) return null;
const { name, email, is_admin } = currUser;
const owner = channel && channel.owner == uid;
const switchRoleVisible = loginUser?.is_admin && loginUser.uid !== 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;
const canRemove = loginUser?.is_admin && loginUser?.uid != uid && uid !== 1;
const canRemoveFromChannel =
channel && channel.owner == loginUser?.uid && loginUser?.uid != uid;
return (
@@ -132,7 +133,7 @@ const ManageMembers: FC<Props> = ({ cid }) => {
<StyledMenu className="menu">
{email && (
<li className="item" onClick={copyEmail.bind(null, email)}>
{t("action.copy_email", { ns: "common" })}
{ct("action.copy_email")}
</li>
)}
{canRemoveFromChannel && (
@@ -142,7 +143,7 @@ const ManageMembers: FC<Props> = ({ cid }) => {
)}
{canRemove && (
<li className="item danger" onClick={removeUser.bind(null, uid)}>
{t("action.remove", { ns: "common" })}
{ct("action.remove")}
</li>
)}
</StyledMenu>
+4 -19
View File
@@ -2,7 +2,6 @@ import { FC, memo } from "react";
import { NavLink } from "react-router-dom";
import Tippy from "@tippyjs/react";
import IconMessage from "../../../assets/icons/message.svg";
import IconCall from "../../../assets/icons/call.svg";
import IconMore from "../../../assets/icons/more.svg";
import Avatar from "../Avatar";
import StyledWrapper from "./styled";
@@ -18,10 +17,9 @@ interface Props {
}
const Profile: FC<Props> = ({ uid, type = "embed", cid }) => {
const { t } = useTranslation(["member", "common"]);
const { t } = useTranslation("member");
const { t: ct } = useTranslation();
const {
canCall,
call,
canCopyEmail,
copyEmail,
removeFromChannel,
@@ -44,9 +42,8 @@ const Profile: FC<Props> = ({ uid, type = "embed", cid }) => {
avatar
// introduction = "This guy has nothing to introduce",
} = data;
const enableCall = type == "card" && canCall;
const canRemoveFromServer = type == "embed" && canRemove;
const hasMore = enableCall || email || canRemoveFromChannel || canRemoveFromServer;
const hasMore = email || canRemoveFromChannel || canRemoveFromServer;
return (
<StyledWrapper className={type}>
@@ -62,12 +59,6 @@ const Profile: FC<Props> = ({ uid, type = "embed", cid }) => {
</li>
</NavLink>
{/* <NavLink to={`#`}> */}
{enableCall && (
<li className="icon call" onClick={call}>
<IconCall />
<span className="txt">{t("call")}</span>
</li>
)}
{/* </NavLink> */}
<Tippy
disabled={!hasMore}
@@ -78,12 +69,6 @@ const Profile: FC<Props> = ({ uid, type = "embed", cid }) => {
hideOnClick={true}
content={
<StyledMenu>
{enableCall && (
<li className="item" onClick={call}>
{/* <IconCall className="icon" /> */}
{t("call")}
</li>
)}
{canCopyEmail && (
<li className="item" onClick={copyEmail.bind(undefined, email)}>
{t("copy_email")}
@@ -104,7 +89,7 @@ const Profile: FC<Props> = ({ uid, type = "embed", cid }) => {
>
<li className={`icon more ${hasMore ? "" : "disabled"}`}>
<IconMore />
<span className="txt">{t("more", { ns: "common" })}</span>
<span className="txt">{ct("more")}</span>
</li>
</Tippy>
</ul>
+1 -1
View File
@@ -84,7 +84,7 @@ const useUserOperation = ({ uid, cid }: IProps) => {
(isAdmin || channel?.owner == loginUid) &&
uid != channel?.owner;
const canCall: boolean = (agoraConfig as AgoraConfig)?.enabled && loginUid != uid;
const canRemove: boolean = isAdmin && loginUid != uid && !cid;
const canRemove: boolean = isAdmin && loginUid != uid && !cid && uid !== 1;
return {
canDeleteChannel,
+5 -4
View File
@@ -102,7 +102,8 @@ const StyledWrapper = styled.div`
`;
type EditFields = "name" | "email";
export default function MyAccount() {
const { t } = useTranslation(["member", "common"]);
const { t } = useTranslation("member");
const { t: ct } = useTranslation();
const [passwordModal, setPasswordModal] = useState(false);
const [editModal, setEditModal] = useState<EditFields | null>(null);
const [removeConfirmVisible, setRemoveConfirmVisible] = useState(false);
@@ -164,7 +165,7 @@ export default function MyAccount() {
</span>
</div>
<button data-edit="name" onClick={handleBasicEdit} className="btn">
{t("action.edit", { ns: "common" })}
{ct("action.edit")}
</button>
</div>
<div className="row">
@@ -173,7 +174,7 @@ export default function MyAccount() {
<span className="txt">{email}</span>
</div>
<button data-edit="email" onClick={handleBasicEdit} className="btn">
{t("action.edit", { ns: "common" })}
{ct("action.edit")}
</button>
</div>
<div className="row">
@@ -182,7 +183,7 @@ export default function MyAccount() {
<span className="txt">*********</span>
</div>
<button onClick={togglePasswordModal} className="btn">
{t("action.edit", { ns: "common" })}
{ct("action.edit")}
</button>
</div>
</div>
@@ -14,6 +14,7 @@ interface Props {
const DeleteConfirmModal: FC<Props> = ({ id, closeModal }) => {
const { t } = useTranslation("setting");
const { t: ct } = useTranslation();
const navigateTo = useNavigate();
const [deleteChannel, { isLoading, isSuccess }] = useLazyRemoveChannelQuery();
const handleDelete = () => {
@@ -38,10 +39,10 @@ const DeleteConfirmModal: FC<Props> = ({ id, closeModal }) => {
buttons={
<>
<Button onClick={closeModal.bind(null, undefined)} className="cancel">
{t("action.cancel", { ns: "common" })}
{ct("action.cancel")}
</Button>
<Button onClick={handleDelete} className="danger">
{isLoading ? "Deleting" : t("action.remove", { ns: "common" })}
{isLoading ? "Deleting" : ct("action.remove")}
</Button>
</>
}