import React, { useCallback, useMemo } from 'react';
import { useTranslation } from 'next-i18next';
import {
Button, Modal, ModalHeader, ModalBody, ModalFooter,
} from 'reactstrap';
type DeleteSlackBotSettingsModalProps = {
isResetAll: boolean,
isOpen: boolean,
onClose?: () => void,
onClickDeleteButton?: () => void,
}
export const DeleteSlackBotSettingsModal = React.memo((props: DeleteSlackBotSettingsModalProps) => {
const { t } = useTranslation();
const {
isResetAll, isOpen, onClose, onClickDeleteButton,
} = props;
const deleteSlackCredentialsHandler = useCallback(() => {
onClickDeleteButton?.();
onClose?.();
}, [onClickDeleteButton, onClose]);
const closeButtonHandler = useCallback(() => {
onClose?.();
}, [onClose]);
// Memoize conditional content
const headerContent = useMemo(() => {
if (isResetAll) {
return (
<>
delete_forever
{t('admin:slack_integration.reset_all_settings')}
>
);
}
return (
<>
delete
{t('admin:slack_integration.delete_slackbot_settings')}
>
);
}, [isResetAll, t]);
const bodyContent = useMemo(() => {
const htmlContent = isResetAll
? t('admin:slack_integration.all_settings_of_the_bot_will_be_reset')
: t('admin:slack_integration.slackbot_settings_notice');
return (
);
}, [isResetAll, t]);
const deleteButtonContent = useMemo(() => {
if (isResetAll) {
return (
<>
delete_forever
{t('admin:slack_integration.reset')}
>
);
}
return (
<>
delete
{t('admin:slack_integration.delete')}
>
);
}, [isResetAll, t]);
// Early return optimization
if (!isOpen) {
return <>>;
}
return (
{headerContent}
{bodyContent}
);
});
DeleteSlackBotSettingsModal.displayName = 'DeleteSlackBotSettingsModal';