diff --git a/src/routes/MetaDetails/StreamsList/Stream/Stream.js b/src/routes/MetaDetails/StreamsList/Stream/Stream.js index 23a1ce607..aa47b1765 100644 --- a/src/routes/MetaDetails/StreamsList/Stream/Stream.js +++ b/src/routes/MetaDetails/StreamsList/Stream/Stream.js @@ -4,11 +4,11 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); const { default: Icon } = require('@stremio/stremio-icons/react'); +const { t } = require('i18next'); const { Button, Image, useProfile, platform, useToast, Popup, useBinaryState } = require('stremio/common'); const { useServices } = require('stremio/services'); const { useRouteFocused } = require('stremio-router'); const StreamPlaceholder = require('./StreamPlaceholder'); -const { t } = require('i18next'); const styles = require('./styles'); const Stream = ({ className, videoId, videoReleased, addonName, name, description, thumbnail, progress, deepLinks, ...props }) => { @@ -19,12 +19,6 @@ const Stream = ({ className, videoId, videoReleased, addonName, name, descriptio const [menuOpen, , closeMenu, toggleMenu] = useBinaryState(false); - React.useEffect(() => { - if (!routeFocused) { - closeMenu(); - } - }, [routeFocused]); - const popupLabelOnMouseUp = React.useCallback((event) => { if (!event.nativeEvent.togglePopupPrevented) { if (event.nativeEvent.ctrlKey || event.nativeEvent.button === 2) { @@ -89,6 +83,10 @@ const Stream = ({ className, videoId, videoReleased, addonName, name, descriptio null; }, [href, deepLinks]); + const streamLink = React.useMemo(() => { + return deepLinks?.externalPlayer?.download; + }, [deepLinks]); + const markVideoAsWatched = React.useCallback(() => { if (typeof videoId === 'string') { core.transport.dispatch({ @@ -116,12 +114,9 @@ const Stream = ({ className, videoId, videoReleased, addonName, name, descriptio } }, [props.onClick, profile.settings, markVideoAsWatched]); - const streamLink = React.useMemo(() => { - return deepLinks?.externalPlayer?.download; - }, [deepLinks]); - const copyStreamLink = React.useCallback((event) => { event.preventDefault(); + closeMenu(); if (streamLink && navigator?.clipboard) { navigator.clipboard.writeText(deepLinks.externalPlayer.download) .then(() => { @@ -146,68 +141,69 @@ const Stream = ({ className, videoId, videoReleased, addonName, name, descriptio timeout: 4000, }); } - closeMenu(); }, [streamLink]); const renderThumbnailFallback = React.useCallback(() => ( ), []); - const renderLabel = React.useMemo( - () => - function renderLabel({ className, thumbnail, progress, addonName, name, description, children, ...props }) { - return ( - - ); - }, - [onClick] - ); + const renderLabel = React.useMemo(() => function renderLabel({ className, thumbnail, progress, addonName, name, description, children, ...props }) { + return ( + + ); + }, [onClick]); - const renderMenu = React.useMemo( - () => - function renderMenu() { - return ( -
- - {streamLink && + { + streamLink && + } -
- ); - }, [copyStreamLink, onClick] - ); + + } + + ); + }, [copyStreamLink, onClick]); + + React.useEffect(() => { + if (!routeFocused) { + closeMenu(); + } + }, [routeFocused]); return (