import { useContext, useState } from 'react'; import { Typography, makeStyles, Theme } from '@material-ui/core'; import { useTranslation } from 'react-i18next'; import { CollectionHttp } from '@/http/Collection'; import { rootContext } from '@/context/Root'; import DialogTemplate from '@/components/customDialog/DialogTemplate'; const useStyles = makeStyles((theme: Theme) => ({ desc: { margin: '8px 0 16px 0', maxWidth: 480, }, })); const ReleaseCollectionDialog = (props: any) => { const classes = useStyles(); const { collection, onRelease } = props; const { t: dialogTrans } = useTranslation('dialog'); const { t: btnTrans } = useTranslation('btn'); const { handleCloseDialog } = useContext(rootContext); const [disabled, setDisabled] = useState(false); // confirm action const handleConfirm = async () => { // disable confirm button setDisabled(true); try { // release collection await CollectionHttp.releaseCollection(collection); // execute callback onRelease && onRelease(); // enable confirm button setDisabled(false); // close dialog handleCloseDialog(); } finally { // enable confirm button setDisabled(false); } }; return ( {dialogTrans('releaseContent', { type: collection })} } confirmLabel={btnTrans('release')} handleConfirm={handleConfirm} confirmDisabled={disabled} /> ); }; export default ReleaseCollectionDialog;