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 ?