import React, { useCallback, useEffect, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import TextInput from 'Components/Form/TextInput'; import Icon from 'Components/Icon'; import Button from 'Components/Link/Button'; import LoadingIndicator from 'Components/Loading/LoadingIndicator'; import PageContent from 'Components/Page/PageContent'; import PageContentBody from 'Components/Page/PageContentBody'; import { icons } from 'Helpers/Props'; import { clear, fetch } from 'Store/Actions/parseActions'; import getErrorMessage from 'Utilities/Object/getErrorMessage'; import translate from 'Utilities/String/translate'; import ParseResult from './ParseResult'; import parseStateSelector from './parseStateSelector'; import styles from './Parse.css'; function Parse() { const { isFetching, error, item } = useSelector(parseStateSelector()); const [title, setTitle] = useState(''); const dispatch = useDispatch(); const onInputChange = useCallback( ({ value }: { value: string }) => { const trimmedValue = value.trim(); setTitle(value); if (trimmedValue === '') { dispatch(clear()); } else { dispatch(fetch({ title: trimmedValue })); } }, [setTitle, dispatch] ); const onClearPress = useCallback(() => { setTitle(''); dispatch(clear()); }, [setTitle, dispatch]); useEffect( () => { return () => { dispatch(clear()); }; }, // eslint-disable-next-line react-hooks/exhaustive-deps [] ); return (
{isFetching ? : null} {!isFetching && !!error ? (
{translate('ParseModalErrorParsing')}
{getErrorMessage(error)}
) : null} {!isFetching && title && !error && !item.parsedAlbumInfo ? (
{translate('ParseModalUnableToParse')}
) : null} {!isFetching && !error && item.parsedAlbumInfo ? ( ) : null} {title ? null : (
{translate('ParseModalHelpText')}
{translate('ParseModalHelpTextDetails')}
)}
); } export default Parse;