'use client' import type { FC } from 'react' import { RiAddLine, RiArrowDownSLine, RiErrorWarningFill, RiLoader2Line, } from '@remixicon/react' import { useBoolean } from 'ahooks' import * as React from 'react' import { useCallback, useMemo } from 'react' import { useTranslation } from 'react-i18next' import { CheckCircle } from '@/app/components/base/icons/src/vender/solid/general' import Popover from '@/app/components/base/popover' import PlanUpgradeModal from '@/app/components/billing/plan-upgrade-modal' import { Plan } from '@/app/components/billing/type' import { useProviderContext } from '@/context/provider-context' import { cn } from '@/utils/classnames' 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('list.batchModal.processing', { ns: 'datasetDocuments' })}
)} {importStatus === ProcessStatus.COMPLETED && (
{t('list.batchModal.completed', { ns: 'datasetDocuments' })}
{t('list.batchModal.ok', { ns: 'datasetDocuments' })}
)} {importStatus === ProcessStatus.ERROR && (
{t('list.batchModal.error', { ns: 'datasetDocuments' })}
{t('list.batchModal.ok', { ns: 'datasetDocuments' })}
)} ) } 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)