import React, { type FC, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { RiLoader2Line } from '@remixicon/react' import { useCountDown } from 'ahooks' import Modal from '@/app/components/base/modal' import Button from '@/app/components/base/button' import { useEventEmitterContextContext } from '@/context/event-emitter' import { noop } from 'lodash-es' type IDefaultContentProps = { onCancel: () => void onConfirm: () => void } const DefaultContent: FC = React.memo(({ onCancel, onConfirm, }) => { const { t } = useTranslation() return ( <>
{t('datasetDocuments.segment.regenerationConfirmTitle')}

{t('datasetDocuments.segment.regenerationConfirmMessage')}

) }) DefaultContent.displayName = 'DefaultContent' const RegeneratingContent: FC = React.memo(() => { const { t } = useTranslation() return ( <>
{t('datasetDocuments.segment.regeneratingTitle')}

{t('datasetDocuments.segment.regeneratingMessage')}

) }) RegeneratingContent.displayName = 'RegeneratingContent' type IRegenerationCompletedContentProps = { onClose: () => void } const RegenerationCompletedContent: FC = React.memo(({ onClose, }) => { const { t } = useTranslation() const targetTime = useRef(Date.now() + 5000) const [countdown] = useCountDown({ targetDate: targetTime.current, onEnd: () => { onClose() }, }) return ( <>
{t('datasetDocuments.segment.regenerationSuccessTitle')}

{t('datasetDocuments.segment.regenerationSuccessMessage')}

) }) RegenerationCompletedContent.displayName = 'RegenerationCompletedContent' type IRegenerationModalProps = { isShow: boolean onConfirm: () => void onCancel: () => void onClose: () => void } const RegenerationModal: FC = ({ isShow, onConfirm, onCancel, onClose, }) => { const [loading, setLoading] = useState(false) const [updateSucceeded, setUpdateSucceeded] = useState(false) const { eventEmitter } = useEventEmitterContextContext() eventEmitter?.useSubscription((v) => { if (v === 'update-segment') { setLoading(true) setUpdateSucceeded(false) } if (v === 'update-segment-success') setUpdateSucceeded(true) if (v === 'update-segment-done') setLoading(false) }) return ( {!loading && !updateSucceeded && } {loading && !updateSucceeded && } {!loading && updateSucceeded && } ) } export default RegenerationModal