import { memo, useCallback, useEffect, useState } from 'react' import { EditableTable, makeActionHandler, makeColumn, makeStringSorter } from '@components/Table' import LoaderPortal from '@components/LoaderPortal' import { invokeWebApiWrapperAsync } from '@components/factory' import { AdminPermissionService } from '@api' import { arrayOrDefault } from '@utils' import { min1 } from '@utils/validationRules' import { hasPermission } from '@utils/permissions' const columns = [ makeColumn('Название', 'name', { editable: true, sorter: makeStringSorter('name'), isRequired: true, formItemRules: min1, }), makeColumn('Описание', 'description', { editable: true, sorter: makeStringSorter('description'), }), ] export const PermissionController = memo(() => { const [showLoader, setShowLoader] = useState(false) const [permissions, setPermissions] = useState([]) const updateTable = useCallback(async () => invokeWebApiWrapperAsync( async () => { const permission = await AdminPermissionService.getAll() setPermissions(arrayOrDefault(permission)) }, setShowLoader, `Не удалось загрузить список прав`, 'Получение списка прав' ), []) useEffect(() => updateTable(), [updateTable]) const handlerProps = { service: AdminPermissionService, setLoader: setShowLoader, errorMsg: `Не удалось выполнить операцию`, onComplete: updateTable } return ( ) }) export default PermissionController