added more checks

This commit is contained in:
Daniel Shleifman
2021-06-09 18:14:25 +03:00
parent dbf7f9a556
commit 00abbe1a3d

View File

@@ -45,6 +45,7 @@ export default function AddDialog({ handleClose }) {
const [isPosterUrlCorrect, setIsPosterUrlCorrect] = useState(false) const [isPosterUrlCorrect, setIsPosterUrlCorrect] = useState(false)
const [posterList, setPosterList] = useState() const [posterList, setPosterList] = useState()
const [isUserInteractedWithPoster, setIsUserInteractedWithPoster] = useState(false) const [isUserInteractedWithPoster, setIsUserInteractedWithPoster] = useState(false)
const [isUserInteractedWithTitle, setIsUserInteractedWithTitle] = useState(false)
const [currentLang] = useChangeLanguage() const [currentLang] = useChangeLanguage()
const [selectedFile, setSelectedFile] = useState() const [selectedFile, setSelectedFile] = useState()
const [posterSearchLanguage, setPosterSearchLanguage] = useState(currentLang === 'ru' ? 'ru' : 'en') const [posterSearchLanguage, setPosterSearchLanguage] = useState(currentLang === 'ru' ? 'ru' : 'en')
@@ -52,33 +53,37 @@ export default function AddDialog({ handleClose }) {
const fullScreen = useMediaQuery('@media (max-width:930px)') const fullScreen = useMediaQuery('@media (max-width:930px)')
const posterSearch = useMemo( const posterSearch = useMemo(
() => (movieName, language) => { () =>
getMoviePosters(movieName, language).then(urlList => { (movieName, language, settings = {}) => {
if (urlList) { const { shouldRefreshMainPoster = false } = settings
setPosterList(urlList) getMoviePosters(movieName, language).then(urlList => {
if (isUserInteractedWithPoster) return if (urlList) {
setPosterList(urlList)
if (!shouldRefreshMainPoster && isUserInteractedWithPoster) return
const [firstPoster] = urlList const [firstPoster] = urlList
checkImageURL(firstPoster).then(correctImage => { checkImageURL(firstPoster).then(correctImage => {
if (correctImage) { if (correctImage) {
setIsPosterUrlCorrect(true) setIsPosterUrlCorrect(true)
setPosterUrl(firstPoster) setPosterUrl(firstPoster)
} else removePoster() } else removePoster()
}) })
} else { } else {
setPosterList() setPosterList()
if (isUserInteractedWithPoster) return if (isUserInteractedWithPoster) return
removePoster() removePoster()
} }
}) })
}, },
[isUserInteractedWithPoster], [isUserInteractedWithPoster],
) )
const delayedPosterSearch = useMemo(() => debounce(posterSearch, 700), [posterSearch]) const delayedPosterSearch = useMemo(() => debounce(posterSearch, 700), [posterSearch])
useEffect(() => { useEffect(() => {
if (isUserInteractedWithTitle) return
parseTorrent.remote(selectedFile || torrentSource, (err, parsedTorrent) => { parseTorrent.remote(selectedFile || torrentSource, (err, parsedTorrent) => {
if (err) throw err if (err) throw err
if (!parsedTorrent.name) return if (!parsedTorrent.name) return
@@ -94,7 +99,7 @@ export default function AddDialog({ handleClose }) {
setTitle(value) setTitle(value)
delayedPosterSearch(value, posterSearchLanguage) delayedPosterSearch(value, posterSearchLanguage)
}) })
}, [selectedFile, delayedPosterSearch, torrentSource, posterSearchLanguage]) }, [selectedFile, delayedPosterSearch, torrentSource, posterSearchLanguage, isUserInteractedWithTitle])
const handleCapture = files => { const handleCapture = files => {
const [file] = files const [file] = files
@@ -116,6 +121,8 @@ export default function AddDialog({ handleClose }) {
const handleTitleChange = ({ target: { value } }) => { const handleTitleChange = ({ target: { value } }) => {
setTitle(value) setTitle(value)
delayedPosterSearch(value, posterSearchLanguage) delayedPosterSearch(value, posterSearchLanguage)
torrentSource && setIsUserInteractedWithTitle(true)
} }
const handlePosterUrlChange = ({ target: { value } }) => { const handlePosterUrlChange = ({ target: { value } }) => {
setPosterUrl(value) setPosterUrl(value)
@@ -144,6 +151,7 @@ export default function AddDialog({ handleClose }) {
const clearSelectedFile = () => { const clearSelectedFile = () => {
setSelectedFile() setSelectedFile()
setTorrentSource('') setTorrentSource('')
setIsUserInteractedWithTitle(false)
} }
const userChangesPosterUrl = url => { const userChangesPosterUrl = url => {
@@ -201,9 +209,9 @@ export default function AddDialog({ handleClose }) {
{currentLang !== 'en' && ( {currentLang !== 'en' && (
<PosterLanguageSwitch <PosterLanguageSwitch
onClick={() => { onClick={() => {
setPosterSearchLanguage(posterSearchLanguage === 'en' ? 'ru' : 'en') const newLanguage = posterSearchLanguage === 'en' ? 'ru' : 'en'
posterSearch(title, posterSearchLanguage === 'en' ? 'ru' : 'en') setPosterSearchLanguage(newLanguage)
setIsUserInteractedWithPoster(false) posterSearch(title, newLanguage, { shouldRefreshMainPoster: true })
}} }}
showbutton={+isPosterUrlCorrect} showbutton={+isPosterUrlCorrect}
color='primary' color='primary'