import React from 'react'; import { useHistory } from 'react-router'; import { SchemaSubject } from 'generated-sources'; import { ClusterName, SchemaName } from 'redux/interfaces'; import { clusterSchemasPath } from 'lib/paths'; import ClusterContext from 'components/contexts/ClusterContext'; import ConfirmationModal from 'components/common/ConfirmationModal/ConfirmationModal'; import PageLoader from 'components/common/PageLoader/PageLoader'; import Breadcrumb from 'components/common/Breadcrumb/Breadcrumb'; import SchemaVersion from './SchemaVersion'; import LatestVersionItem from './LatestVersionItem'; export interface DetailsProps { subject: SchemaName; schema: SchemaSubject; clusterName: ClusterName; versions: SchemaSubject[]; isFetched: boolean; fetchSchemaVersions: ( clusterName: ClusterName, schemaName: SchemaName ) => void; deleteSchema: (clusterName: ClusterName, subject: string) => Promise; } const Details: React.FC = ({ subject, schema, clusterName, fetchSchemaVersions, deleteSchema, versions, isFetched, }) => { const { isReadOnly } = React.useContext(ClusterContext); const [ isDeleteSchemaConfirmationVisible, setDeleteSchemaConfirmationVisible, ] = React.useState(false); React.useEffect(() => { fetchSchemaVersions(clusterName, subject); }, [fetchSchemaVersions, clusterName]); const history = useHistory(); const onDelete = React.useCallback(() => { deleteSchema(clusterName, subject); history.push(clusterSchemasPath(clusterName)); }, [deleteSchema, clusterName, subject]); return (
{subject}
{isFetched ? ( <>
Latest Version
#{schema.version}
{!isReadOnly && (
setDeleteSchemaConfirmationVisible(false)} onConfirm={onDelete} > Are you sure want to remove {subject} schema?
)}
{versions.map((version) => ( ))}
Version ID Schema
) : ( )}
); }; export default Details;