'use client' import type { FC } from 'react' import React, { useCallback, useMemo } from 'react' import { useTranslation } from 'react-i18next' import { RiAddLine, RiArrowDownSLine, RiErrorWarningFill, RiLoader2Line, } from '@remixicon/react' import cn from '@/utils/classnames' import { CheckCircle } from '@/app/components/base/icons/src/vender/solid/general' import Popover from '@/app/components/base/popover' import { useBoolean } from 'ahooks' import { useProviderContext } from '@/context/provider-context' import PlanUpgradeModal from '@/app/components/billing/plan-upgrade-modal' import { Plan } from '@/app/components/billing/type' export type ISegmentAddProps = { importStatus: ProcessStatus | string | undefined clearProcessStatus: () => void showNewSegmentModal: () => void showBatchModal: () => void embedding: boolean } export enum ProcessStatus { WAITING = 'waiting', PROCESSING = 'processing', COMPLETED = 'completed', ERROR = 'error', } const SegmentAdd: FC = ({ importStatus, clearProcessStatus, showNewSegmentModal, showBatchModal, embedding, }) => { const { t } = useTranslation() const [isShowPlanUpgradeModal, { setTrue: showPlanUpgradeModal, setFalse: hidePlanUpgradeModal, }] = useBoolean(false) const { plan, enableBilling } = useProviderContext() const { type } = plan const canAdd = enableBilling ? type !== Plan.sandbox : true const withNeedUpgradeCheck = useCallback((fn: () => void) => { return () => { if (!canAdd) { showPlanUpgradeModal() return } fn() } }, [canAdd, showPlanUpgradeModal]) const textColor = useMemo(() => { return embedding ? 'text-components-button-secondary-accent-text-disabled' : 'text-components-button-secondary-accent-text' }, [embedding]) if (importStatus) { return ( <> {(importStatus === ProcessStatus.WAITING || importStatus === ProcessStatus.PROCESSING) && (
{t('datasetDocuments.list.batchModal.processing')}
)} {importStatus === ProcessStatus.COMPLETED && (
{t('datasetDocuments.list.batchModal.completed')}
{t('datasetDocuments.list.batchModal.ok')}
)} {importStatus === ProcessStatus.ERROR && (
{t('datasetDocuments.list.batchModal.error')}
{t('datasetDocuments.list.batchModal.ok')}
)} ) } return (
} btnElement={
} btnClassName={open => cn( `!hover:bg-state-base-hover !rounded-l-none !rounded-r-lg !border-0 !p-2 backdrop-blur-[5px] disabled:cursor-not-allowed disabled:bg-transparent disabled:hover:bg-transparent`, open ? '!bg-state-base-hover' : '', )} popupClassName='!min-w-[128px] !bg-components-panel-bg-blur !rounded-xl border-[0.5px] !ring-0 border-components-panel-border !shadow-xl !shadow-shadow-shadow-5 backdrop-blur-[5px]' className='h-fit min-w-[128px]' disabled={embedding} /> {isShowPlanUpgradeModal && ( )}
) } export default React.memo(SegmentAdd)