import React, { useEffect, useState } from 'react'; import { Link } from 'react-router-dom'; import styled from 'styled-components'; import Profile from '../../assets/img/datamanage/img-profile.png'; import NicknameChangeModal from '../../components/DataManage/NicknameChangeModal'; import EditIcon from '../../assets/img/icon/icon-edit.png'; import { UserChangeAdminLevel, UserInfoView, UserKick } from '../../apis/Users'; import { SelectInput } from '../../styles/Components'; import { adminLevelType, authType, modalTypes } from '../../assets/data'; import DynamicModal from '../common/modal/DynamicModal'; import { useTranslation } from 'react-i18next'; import { useRecoilValue } from 'recoil'; import { authList } from '../../store/authList'; import { convertKTC } from '../../utils'; import { EditButton, ProfileWrapper, UserDefault, UserInfoTable } from '../../styles/ModuleComponents'; import { TableSkeleton } from '../Skeleton/TableSkeleton'; import { UserInfoSkeleton } from '../Skeleton/UserInfoSkeleton'; import { opUserSessionType } from '../../assets/data/options'; import Button from '../common/button/Button'; import { useModal } from '../../hooks/hook'; import { InitData } from '../../apis/Data'; import { useAlert } from '../../context/AlertProvider'; import { useLoading } from '../../context/LoadingProvider'; import { alertTypes } from '../../assets/data/types'; const UserDefaultInfo = ({ userInfo }) => { const { t } = useTranslation(); const authInfo = useRecoilValue(authList); const token = sessionStorage.getItem('token'); const {showModal, showToast} = useAlert(); const {withLoading} = useLoading(); const { modalState, handleModalView, handleModalClose } = useModal({ pwChange: 'hidden' }); const [dataList, setDataList] = useState({}); const [loading, setLoading] = useState(true); const [authDelete, setAuthDelete] = useState(false); useEffect(() => { setAuthDelete(authInfo?.auth_list?.some(auth => auth.id === authType.userSearchDelete)); }, [authInfo]); useEffect(() => { if(userInfo && Object.keys(userInfo).length > 0) { fetchData(); } }, [userInfo]); const fetchData = async () => { setLoading(true); await UserInfoView(token, userInfo.guid).then(data => { setDataList(data); setLoading(false); }); }; const handleSubmit = async (type, param = null) => { let params = {}; switch (type) { case "gmLevelChangeSubmit": showModal('USER_GM_CHANGE', { type: alertTypes.confirm, onConfirm: () => handleSubmit('gmLevelChange', param) }); break; case "userKickSubmit": showModal('USER_KICK_CONFIRM', { type: alertTypes.confirm, onConfirm: () => handleSubmit('userKick') }); break; case "gmLevelChange": params.guid = userInfo.guid; params.admin_level = param; await withLoading(async () => { return await UserChangeAdminLevel(token, params); }).then(data =>{ showToast('USER_GM_CHANGE_COMPLETE', {type: alertTypes.success}); }).catch(error => { showToast(error, {type: alertTypes.error}); }).finally(() => { fetchData(); }); break; case "userKick": params.guid = userInfo.guid; await withLoading(async () => { return await UserKick(token, params); }).then((data) =>{ showToast('USER_KICK_COMPLETE', {type: alertTypes.success}); }).catch(error => { showToast(error, {type: alertTypes.error}); }).finally(() => { fetchData(); }); break; } } return ( loading ? : <>
GUID {dataList.user_info && dataList.user_info.aid} Account ID {dataList.user_info && dataList.user_info.user_id} 국가 {dataList.user_info && dataList.user_info.nation} 접속상태 {dataList.user_session !== undefined && opUserSessionType.find(session => session.value === dataList.user_session)?.name} {
{ handleModalClose('pwChange'); fetchData(); }} dataList={dataList} /> ); }; export default UserDefaultInfo; const StatusCell = styled.td` display: flex; justify-content: space-between; align-items: center; padding: 12px; `;