import { FormEvent, useCallback, useState } from "react"; import { CloseIcon, PlusIcon } from "@/ui/Icons"; import { useModal } from "@/ui/elements/Modal"; import { CTAButton, GhostButton, IconButton, Modal, NeutralButton, Select } from "@/ui/elements"; import addData from "@/modules/ingestion/addData"; import { Dataset } from "@/modules/ingestion/useDatasets"; import cognifyDataset from "@/modules/datasets/cognifyDataset"; interface AddDataToCogneeProps { datasets: Dataset[]; refreshDatasets: () => void; } export default function AddDataToCognee({ datasets, refreshDatasets }: AddDataToCogneeProps) { const [filesForUpload, setFilesForUpload] = useState(null); const prepareFiles = useCallback((event: FormEvent) => { const formElements = event.currentTarget; const files = formElements.files; setFilesForUpload(files); }, []); const processDataWithCognee = useCallback((state: object, event?: FormEvent) => { event!.preventDefault(); if (!filesForUpload) { return; } const formElements = event!.currentTarget; const datasetId = formElements.datasetName.value; return addData( datasetId ? { id: datasetId, } : { name: "main_dataset", }, Array.from(filesForUpload) ) .then(({ dataset_id, dataset_name }) => { refreshDatasets(); setFilesForUpload(null); return cognifyDataset({ id: dataset_id, name: dataset_name, data: [], // not important, just to mimick Dataset status: "", // not important, just to mimick Dataset }); }); }, [filesForUpload, refreshDatasets]); const { isModalOpen: isAddDataModalOpen, openModal: openAddDataModal, closeModal: closeAddDataModal, isActionLoading: isProcessingDataWithCognee, confirmAction: submitDataToCognee, } = useModal(false, processDataWithCognee); return ( <> Add data to cognee
Add new data to a dataset?
Please select a dataset to add data in.
If you don't have any, don't worry, we will create one for you.
select files {filesForUpload?.length && (
selected files:
{Array.from(filesForUpload || []).map((file) => (
{file.name}
))}
)}
closeAddDataModal()}>cancel {isProcessingDataWithCognee ? "processing..." : "add"}
); }