import { useTranslation, Trans } from 'react-i18next' import useAsync from '@/shared/hooks/use-async' import { deleteJSON } from '@/infrastructure/fetch-json' import { debugConsole } from '@/utils/debugging' import { useState, useEffect } from 'react' import { OLModal, OLModalHeader, OLModalTitle, OLModalBody, OLModalFooter, } from '@/shared/components/ol/ol-modal' import OLButton from '@/shared/components/ol/ol-button' import Notification from '@/shared/components/notification' type ZoteroLinkInfoModalProps = { show: boolean isError: boolean handleHide: () => void } const ZoteroLinkInfoModal = ({ show, isError, handleHide }: ZoteroLinkInfoModalProps) => { const { t } = useTranslation() const [showUnlinkInfo, setShowUnlinkInfo] = useState(false) const { isLoading: isUnlinking, isError: isErrorUnlink, runAsync: runAsyncUnlink, reset: resetUnlink, } = useAsync() const handleUnlink = () => { runAsyncUnlink(deleteJSON('/user/zotero')) .then(handleHide) .catch(err => debugConsole.error(err?.data?.message || err?.message || err)) } useEffect(() => { if (!show) return setShowUnlinkInfo(false) resetUnlink() }, [show, resetUnlink]) return ( {t('zotero_integration')} {isErrorUnlink && ( )} {showUnlinkInfo ? ( ) : isError ? ( ) : ( ]} /> } /> )} {showUnlinkInfo ? ( {t('confirm')} ) : ( setShowUnlinkInfo(true)} > {t('unlink')} )} {t('close')} ) } export default ZoteroLinkInfoModal