EmptyTrashModal.jsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import React, { useState } from 'react';
  2. import PropTypes from 'prop-types';
  3. import {
  4. Modal, ModalHeader, ModalBody, ModalFooter,
  5. } from 'reactstrap';
  6. import { withTranslation } from 'react-i18next';
  7. import { withUnstatedContainers } from './UnstatedUtils';
  8. import AppContainer from '../services/AppContainer';
  9. import ApiErrorMessageWrapper from './PageManagement/ApiErrorMessageWrapper';
  10. const EmptyTrashModal = (props) => {
  11. const {
  12. t, isOpen, onClose, appContainer,
  13. } = props;
  14. const [errs, setErrs] = useState(null);
  15. async function emptyTrash() {
  16. setErrs(null);
  17. try {
  18. await appContainer.apiv3Delete('/pages/empty-trash');
  19. window.location.reload();
  20. }
  21. catch (err) {
  22. setErrs(err);
  23. }
  24. }
  25. function emptyButtonHandler() {
  26. emptyTrash();
  27. }
  28. return (
  29. <Modal isOpen={isOpen} toggle={onClose} className="grw-create-page">
  30. <ModalHeader tag="h4" toggle={onClose} className="bg-danger text-light">
  31. { t('modal_empty.empty_the_trash')}
  32. </ModalHeader>
  33. <ModalBody>
  34. { t('modal_empty.notice')}
  35. </ModalBody>
  36. <ModalFooter>
  37. <ApiErrorMessageWrapper errs={errs} />
  38. <button type="button" className="btn btn-danger" onClick={emptyButtonHandler}>
  39. <i className="icon-trash mr-2" aria-hidden="true"></i> Empty
  40. </button>
  41. </ModalFooter>
  42. </Modal>
  43. );
  44. };
  45. /**
  46. * Wrapper component for using unstated
  47. */
  48. const EmptyTrashModalWrapper = withUnstatedContainers(EmptyTrashModal, [AppContainer]);
  49. EmptyTrashModal.propTypes = {
  50. t: PropTypes.func.isRequired, // i18next
  51. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  52. isOpen: PropTypes.bool.isRequired,
  53. onClose: PropTypes.func.isRequired,
  54. };
  55. export default withTranslation()(EmptyTrashModalWrapper);