DeleteSlackBotSettingsModal.jsx 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import React, { useCallback } from 'react';
  2. import { useTranslation } from 'next-i18next';
  3. import PropTypes from 'prop-types';
  4. import {
  5. Button, Modal, ModalHeader, ModalBody, ModalFooter,
  6. } from 'reactstrap';
  7. const DeleteSlackBotSettingsModal = React.memo((props) => {
  8. const { t, onClickDeleteButton, onClose } = useTranslation();
  9. const deleteSlackCredentialsHandler = useCallback(() => {
  10. onClickDeleteButton?.();
  11. onClose?.();
  12. }, [onClickDeleteButton, onClose]);
  13. const closeButtonHandler = useCallback(() => {
  14. onClose?.();
  15. }, [onClose]);
  16. return (
  17. <Modal isOpen={props.isOpen} toggle={closeButtonHandler} className="page-comment-delete-modal">
  18. <ModalHeader tag="h4" toggle={closeButtonHandler} className="bg-danger text-light">
  19. <span>
  20. {props.isResetAll && (
  21. <>
  22. <i className="icon-fw icon-fire" />
  23. {t('admin:slack_integration.reset_all_settings')}
  24. </>
  25. )}
  26. {!props.isResetAll && (
  27. <>
  28. <i className="icon-trash me-1" />
  29. {t('admin:slack_integration.delete_slackbot_settings')}
  30. </>
  31. )}
  32. </span>
  33. </ModalHeader>
  34. <ModalBody>
  35. {props.isResetAll && (
  36. <span
  37. // eslint-disable-next-line react/no-danger
  38. dangerouslySetInnerHTML={{ __html: t('admin:slack_integration.all_settings_of_the_bot_will_be_reset') }}
  39. />
  40. )}
  41. {!props.isResetAll && (
  42. <span
  43. // eslint-disable-next-line react/no-danger
  44. dangerouslySetInnerHTML={{ __html: t('admin:slack_integration.slackbot_settings_notice') }}
  45. />
  46. )}
  47. </ModalBody>
  48. <ModalFooter>
  49. <Button onClick={closeButtonHandler}>{t('Cancel')}</Button>
  50. <Button color="danger" onClick={deleteSlackCredentialsHandler}>
  51. {props.isResetAll && (
  52. <>
  53. <i className="icon icon-fire"></i>
  54. {t('admin:slack_integration.reset')}
  55. </>
  56. )}
  57. {!props.isResetAll && (
  58. <>
  59. <i className="icon-trash me-1" />
  60. {t('admin:slack_integration.delete')}
  61. </>
  62. )}
  63. </Button>
  64. </ModalFooter>
  65. </Modal>
  66. );
  67. });
  68. DeleteSlackBotSettingsModal.propTypes = {
  69. isResetAll: PropTypes.bool.isRequired,
  70. isOpen: PropTypes.bool.isRequired,
  71. onClose: PropTypes.func,
  72. onClickDeleteButton: PropTypes.func,
  73. };
  74. DeleteSlackBotSettingsModal.displayName = 'DeleteSlackBotSettingsModal';
  75. export default DeleteSlackBotSettingsModal;