// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); const { default: Icon } = require('@stremio/stremio-icons/react'); const { Image, Button, CONSTANTS } = require('stremio/common'); const styles = require('./styles'); const NextVideoPopup = ({ className, metaItem, nextVideo, onDismiss, onNextVideoRequested }) => { const watchNowButtonRef = React.useRef(null); const [animationEnded, setAnimationEnded] = React.useState(false); const videoName = React.useMemo(() => { const title = nextVideo && nextVideo.title || metaItem && metaItem.title; return nextVideo !== null && typeof nextVideo.season === 'number' && typeof nextVideo.episode === 'number' ? `${title} (S${nextVideo.season}E${nextVideo.episode})` : title; }, [metaItem, nextVideo]); const onAnimationEnd = React.useCallback(() => { setAnimationEnded(true); }, []); const renderPosterFallback = React.useCallback(() => { return metaItem !== null && typeof metaItem.type === 'string' ? : null; }, [metaItem]); const onDismissButtonClick = React.useCallback(() => { if (typeof onDismiss === 'function') { onDismiss(); } }, [onDismiss]); const onWatchNowButtonClick = React.useCallback(() => { if (typeof onNextVideoRequested === 'function') { onNextVideoRequested(); } }, [onNextVideoRequested]); React.useLayoutEffect(() => { if (animationEnded === true && watchNowButtonRef.current !== null) { watchNowButtonRef.current.focus(); } }, [animationEnded]); return (
{'
{ typeof metaItem?.name === 'string' ?
Next on { metaItem.name }
: null } { typeof videoName === 'string' ?
{ videoName }
: null } { nextVideo !== null && typeof nextVideo.overview === 'string' ?
{ nextVideo.overview }
: null }
); }; NextVideoPopup.propTypes = { className: PropTypes.string, metaItem: PropTypes.object, nextVideo: PropTypes.object, onDismiss: PropTypes.func, onNextVideoRequested: PropTypes.func }; module.exports = NextVideoPopup;