mirror of
https://github.com/Ernous/TorrServerJellyfin.git
synced 2025-12-19 21:46:11 +05:00
added more checks
This commit is contained in:
@@ -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'
|
||||||
|
|||||||
Reference in New Issue
Block a user