import { useState, Fragment, useRef } from 'react'; import { Title, FormWrapper } from '../../styles/Components'; import { useNavigate } from 'react-router-dom'; import { CommonSearchBar, useCommonSearch, UserBlockDetailModal, } from '../../components/ServiceManage/'; import { BlackListDetail, BlackListDelete } from '../../apis'; import Pagination from '../../components/common/Pagination/Pagination'; import { authType } from '../../assets/data'; import { CaliTable, TableHeader } from '../../components/common'; import { useModal, useTable, withAuth } from '../../hooks/hook'; import { alertTypes } from '../../assets/data/types'; import { INITIAL_PAGE_LIMIT } from '../../assets/data/adminConstants'; import tableInfo from '../../assets/data/pages/userBlockTable.json' import { useAlert } from '../../context/AlertProvider'; import { useLoading } from '../../context/LoadingProvider'; const UserBlock = () => { const token = sessionStorage.getItem('token'); const navigate = useNavigate(); const {showModal, showToast} = useAlert(); const {withLoading} = useLoading(); const [detail, setDetail] = useState([]); const { modalState, handleModalView, handleModalClose } = useModal({ detail: 'hidden', }); const { config, searchParams, data: dataList, handleSearch, handleReset, handlePageChange, handlePageSizeChange, handleOrderByChange, updateSearchParams, configLoaded } = useCommonSearch(token, "userBlockSearch"); const { selectedRows, handleSelectRow, isRowSelected } = useTable(dataList?.list || [], {mode: 'single'}); const handleAction = async (action, item = null) => { switch (action) { case "detail": await BlackListDetail(token, item.id).then(data => { setDetail(data); handleModalView('detail'); }); break; case "delete": showModal('USER_BLOCK_DELETE_CONFIRM', { type: alertTypes.confirm, onConfirm: () => handleAction('deleteConfirm') }); break; case "deleteConfirm": let list = []; selectedRows.map(data => { list.push({ id: data.id, }); }); await withLoading(async () => { return BlackListDelete(token, list); }).then(data => { showToast('DEL_COMPLETE', {type: alertTypes.success}); }).catch(reason => { showToast('API_FAIL', {type: alertTypes.error}); }).finally(() => { handleSearch(updateSearchParams); }); break; } }; return ( <>