import { Button, IconButton } from "@mui/joy"; import { useEffect, useState } from "react"; import toast from "react-hot-toast"; import { useTranslation } from "react-i18next"; import { showCommonDialog } from "@/components/Alert"; import CreateUserDialog from "@/components/CreateUserDialog"; import Icon from "@/components/Icon"; import { useUserStore } from "@/stores"; import { User } from "@/types/proto/api/v1/user_service"; import { convertRoleFromPb } from "@/utils/user"; const WorkspaceMembersSection = () => { const { t } = useTranslation(); const userStore = useUserStore(); const [showCreateUserDialog, setShowCreateUserDialog] = useState(false); const [currentEditingUser, setCurrentEditingUser] = useState(undefined); const userList = Object.values(userStore.userMapById); useEffect(() => { userStore.fetchUserList(); }, []); const handleCreateUserDialogClose = () => { setShowCreateUserDialog(false); setCurrentEditingUser(undefined); }; const handleDeleteUser = async (user: User) => { showCommonDialog({ title: "Delete User", content: `Are you sure to delete user \`${user.nickname}\`? You cannot undo this action.`, style: "danger", onConfirm: async () => { try { await userStore.deleteUser(user.id); toast.success(`User \`${user.nickname}\` deleted successfully`); } catch (error: any) { toast.error(`Failed to delete user \`${user.nickname}\`: ${error.details}`); } }, }); }; return ( <>

Members

{userList.map((user) => ( ))}
{t("user.nickname")} {t("user.email")} {t("user.role")} {t("common.edit")}
{user.nickname} {user.email} {convertRoleFromPb(user.role)} { setCurrentEditingUser(user); setShowCreateUserDialog(true); }} > handleDeleteUser(user)}>
{showCreateUserDialog && } ); }; export default WorkspaceMembersSection;