import React, { useEffect, useState } from "react"; import { isEmpty } from "lodash-es"; import useI18n from "../../hooks/useI18n"; import { userService } from "../../services"; import { useAppSelector } from "../../store"; import * as api from "../../helpers/api"; import toastHelper from "../Toast"; import Dropdown from "../common/Dropdown"; import { showCommonDialog } from "../Dialog/CommonDialog"; import "../../less/settings/member-section.less"; interface State { createUserEmail: string; createUserPassword: string; } const PreferencesSection = () => { const { t } = useI18n(); const currentUser = useAppSelector((state) => state.user.user); const [state, setState] = useState({ createUserEmail: "", createUserPassword: "", }); const [userList, setUserList] = useState([]); useEffect(() => { fetchUserList(); }, []); const fetchUserList = async () => { const { data } = (await api.getUserList()).data; setUserList(data); }; const handleEmailInputChange = (event: React.ChangeEvent) => { setState({ ...state, createUserEmail: event.target.value, }); }; const handlePasswordInputChange = (event: React.ChangeEvent) => { setState({ ...state, createUserPassword: event.target.value, }); }; const handleCreateUserBtnClick = async () => { if (isEmpty(state.createUserEmail) || isEmpty(state.createUserPassword)) { toastHelper.error("Please fill out this form"); return; } const userCreate: UserCreate = { email: state.createUserEmail, password: state.createUserPassword, role: "USER", name: state.createUserEmail, }; try { await api.createUser(userCreate); } catch (error: any) { console.error(error); toastHelper.error(error.response.data.message); } await fetchUserList(); setState({ createUserEmail: "", createUserPassword: "", }); }; const handleArchiveUserClick = (user: User) => { showCommonDialog({ title: `Archive Member`, content: `❗️Are you sure to archive ${user.name}?`, style: "warning", onConfirm: async () => { await userService.patchUser({ id: user.id, rowStatus: "ARCHIVED", }); fetchUserList(); }, }); }; const handleRestoreUserClick = async (user: User) => { await userService.patchUser({ id: user.id, rowStatus: "NORMAL", }); fetchUserList(); }; const handleDeleteUserClick = (user: User) => { showCommonDialog({ title: `Delete Member`, content: `Are you sure to delete ${user.name}? THIS ACTION IS IRREVERSIABLE.❗️`, style: "warning", onConfirm: async () => { await userService.deleteUser({ id: user.id, }); fetchUserList(); }, }); }; return (

{t("setting.member-section.create-a-member")}

{t("common.email")}
{t("common.password")}

Member list

ID EMAIL
{userList.map((user) => (
{user.id} {user.email}
{currentUser?.id === user.id ? ( Yourself ) : ( {user.rowStatus === "NORMAL" ? ( ) : ( <> )} )}
))}
); }; export default PreferencesSection;