import { useCallback, useRef, useState } from 'react' import type { CrawlResultItem, DocumentItem, FileIndexingEstimateResponse } from '@/models/datasets' import type { NotionPage } from '@/models/common' import { useTranslation } from 'react-i18next' import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail' import { useDocumentDetail } from '@/service/knowledge/use-document' import AppUnavailable from '@/app/components/base/app-unavailable' import ChunkPreview from '../../../create-from-pipeline/preview/chunk-preview' import Loading from '@/app/components/base/loading' import type { DatasourceType } from '@/models/pipeline' import ProcessDocuments from './process-documents' import LeftHeader from './left-header' type PipelineSettingsProps = { datasetId: string documentId: string } const PipelineSettings = ({ datasetId, documentId, }: PipelineSettingsProps) => { const { t } = useTranslation() const pipelineId = useDatasetDetailContextWithSelector(s => s.dataset?.pipeline_id) const [estimateData, setEstimateData] = useState(undefined) const isPreview = useRef(false) const formRef = useRef(null) const { data: documentDetail, error, isFetching: isFetchingDocumentDetail } = useDocumentDetail({ datasetId, documentId, params: { metadata: 'without' }, }) const handlePreviewChunks = useCallback(async (data: Record) => { // todo: Preview }, []) const handleProcess = useCallback(async (data: Record) => { // todo: Process }, []) const onClickProcess = useCallback(() => { isPreview.current = false formRef.current?.submit() }, []) const onClickPreview = useCallback(() => { isPreview.current = true formRef.current?.submit() }, []) const handleSubmit = useCallback((data: Record) => { isPreview.current ? handlePreviewChunks(data) : handleProcess(data) }, [handlePreviewChunks, handleProcess]) const handlePreviewFileChange = useCallback((file: DocumentItem) => { onClickPreview() }, [onClickPreview]) const handlePreviewOnlineDocumentChange = useCallback((page: NotionPage) => { onClickPreview() }, [onClickPreview]) const handlePreviewWebsiteChange = useCallback((website: CrawlResultItem) => { onClickPreview() }, [onClickPreview]) if (isFetchingDocumentDetail) { return ( ) } if (error) return return (
{/* Preview */}
) } export default PipelineSettings