import { KnownFact, Memori } from '@memori.ai/memori-api-client/dist/types'; import { useEffect, useState } from 'react'; import memoriApiClient from '@memori.ai/memori-api-client'; import Button from '../ui/Button'; import Drawer from '../ui/Drawer'; import Spin from '../ui/Spin'; import Modal from '../ui/Modal'; import toast from 'react-hot-toast'; import { getErrori18nKey } from '../../helpers/error'; import { useTranslation } from 'react-i18next'; import Delete from '../icons/Delete'; import Checkbox from '../ui/Checkbox'; import Select from '../ui/Select'; import ChevronLeft from '../icons/ChevronLeft'; import ChevronRight from '../icons/ChevronRight'; export interface Props { apiClient: ReturnType; sessionID: string; memori: Memori; initialKnownFacts?: KnownFact[]; visible?: boolean; closeDrawer: () => void; } const KnownFacts = ({ apiClient, sessionID, memori, visible = true, initialKnownFacts = [], closeDrawer, }: Props) => { const { t } = useTranslation(); const { getKnownFactsPaginated, deleteKnownFact } = apiClient.knownFacts; const [knownFacts, setKnownFacts] = useState(initialKnownFacts); const [numberOfResults, setNumberOfResults] = useState(25); const [pageIndex, setPageIndex] = useState(0); const [knownFactsCount, setKnownFactsCount] = useState( initialKnownFacts?.length ?? 0 ); const [loading, setLoading] = useState(false); /** * Fetch known facts */ const fetchKnownFacts = async ( sessionId?: string, from?: number, howMany?: number ) => { if (!sessionID && !sessionId) return; setLoading(true); try { const { knownFacts, count, ...response } = await getKnownFactsPaginated( sessionId ?? sessionID, from ?? pageIndex, howMany ?? numberOfResults ); setKnownFacts(knownFacts ?? initialKnownFacts); setKnownFactsCount(count ?? 0); if (response.resultCode !== 0) { console.error(response); toast.error(t(getErrori18nKey(response.resultCode))); } } catch (err) { console.error('KNOWN_FACTS/FETCH', err); setKnownFacts(initialKnownFacts ?? []); } setLoading(false); }; useEffect(() => { fetchKnownFacts(); }, []); /** * Table selection */ const [bulkDeleteModalVisible, setBulkDeleteModalVisible] = useState(false); const [deleteModalVisibleFor, setDeleteModalVisibleFor] = useState(); const [selectedRowKeys, setSelectedRowKeys] = useState<(string | number)[]>( [] ); return ( closeDrawer()} title={t('knownFacts.title')} >

{t('knownFacts.description', { memoriName: memori.name, })}

1 ? t('knownFacts.deleteSelectedConfirmTitle') : t('knownFacts.deleteConfirmTitle') } description={ selectedRowKeys.length > 1 ? t('knownFacts.deleteSelectedConfirmMessage', { number: selectedRowKeys.length, }) : t('knownFacts.deleteConfirmMessage') } onClose={() => { setBulkDeleteModalVisible(false); }} footer={ <> } />
{knownFactsCount > 25 && (