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';