import { useEffect, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { ActiveState } from '../models/misc'; import Modal from '../Modal'; import { setSelectedDocs, setSourceDocs, selectSourceDocs, selectSelectedDocs, } from './preferenceSlice'; import { getDocs, Doc } from './preferenceApi'; export default function APIKeyModal({ modalState, setModalState, isCancellable = true, }: { modalState: ActiveState; setModalState: (val: ActiveState) => void; isCancellable?: boolean; }) { const dispatch = useDispatch(); const docs = useSelector(selectSourceDocs); const selectedDoc = useSelector(selectSelectedDocs); const [localSelectedDocs, setLocalSelectedDocs] = useState( selectedDoc, ); const [isDocsListOpen, setIsDocsListOpen] = useState(false); const [isError, setIsError] = useState(false); function handleSubmit() { if (!localSelectedDocs) { setIsError(true); } else { dispatch(setSelectedDocs(localSelectedDocs)); setModalState('INACTIVE'); setIsError(false); } } function handleCancel() { setIsError(false); setModalState('INACTIVE'); } useEffect(() => { async function requestDocs() { const data = await getDocs(); dispatch(setSourceDocs(data)); } requestDocs(); }, []); return ( { return (

Select Source Documentation

Please select the library of documentation that you would like to use with our app.

setIsDocsListOpen(!isDocsListOpen)} > {!localSelectedDocs ? (

Select

) : (

{localSelectedDocs.name} {localSelectedDocs.version}

)}
{isDocsListOpen && (
{docs ? ( docs.map((doc, index) => { if (doc.model) { return (
{ setLocalSelectedDocs(doc); setIsDocsListOpen(false); }} className="h-10 w-full cursor-pointer border-x-2 border-b-2 hover:bg-gray-100" >

{doc.name} {doc.version}

); } }) ) : (

No default documentation.

)}
)}
); }} /> ); }