memo stuff

This commit is contained in:
Namyts 2024-07-26 10:20:28 +01:00
parent 9b1e5841e6
commit 24ef298694

View file

@ -116,9 +116,13 @@ const Stream = ({ className, videoId, videoReleased, addonName, name, descriptio
} }
}, [props.onClick, profile.settings, markVideoAsWatched]); }, [props.onClick, profile.settings, markVideoAsWatched]);
const copyMagneticLinkToClipboard = React.useCallback((event) => { const streamLink = React.useMemo(() => {
return deepLinks?.externalPlayer?.download;
}, [deepLinks]);
const copyStreamLink = React.useCallback((event) => {
event.preventDefault(); event.preventDefault();
if (deepLinks?.externalPlayer?.download && navigator?.clipboard) { if (streamLink && navigator?.clipboard) {
navigator.clipboard.writeText(deepLinks.externalPlayer.download) navigator.clipboard.writeText(deepLinks.externalPlayer.download)
.then(() => { .then(() => {
toast.show({ toast.show({
@ -143,7 +147,7 @@ const Stream = ({ className, videoId, videoReleased, addonName, name, descriptio
}); });
} }
closeMenu(); closeMenu();
}, []); }, [streamLink]);
const renderThumbnailFallback = React.useCallback(() => ( const renderThumbnailFallback = React.useCallback(() => (
<Icon className={styles['placeholder-icon']} name={'ic_broken_link'} /> <Icon className={styles['placeholder-icon']} name={'ic_broken_link'} />
@ -186,21 +190,23 @@ const Stream = ({ className, videoId, videoReleased, addonName, name, descriptio
</Button> </Button>
); );
}, },
[] [onClick]
); );
const renderMenu = function renderMenu() { const renderMenu = React.useMemo(
return ( () => {
<div className={styles['context-menu-content']} onPointerDown={popupMenuOnPointerDown} onContextMenu={popupMenuOnContextMenu} onClick={popupMenuOnClick} onKeyDown={popupMenuOnKeyDown}> return (
<Button className={styles['context-menu-option-container']} title={t('CTX_PLAY')}> <div className={styles['context-menu-content']} onPointerDown={popupMenuOnPointerDown} onContextMenu={popupMenuOnContextMenu} onClick={popupMenuOnClick} onKeyDown={popupMenuOnKeyDown}>
<div className={styles['context-menu-option-label']}>{t('CTX_PLAY')}</div> <Button className={styles['context-menu-option-container']} title={t('CTX_PLAY')}>
</Button> <div className={styles['context-menu-option-label']}>{t('CTX_PLAY')}</div>
{deepLinks?.externalPlayer?.download && <Button className={styles['context-menu-option-container']} title={t('CTX_COPY_STREAM_LINK')} onClick={copyMagneticLinkToClipboard}> </Button>
<div className={styles['context-menu-option-label']}>{t('CTX_COPY_STREAM_LINK')}</div> {streamLink && <Button className={styles['context-menu-option-container']} title={t('CTX_COPY_STREAM_LINK')} onClick={copyStreamLink}>
</Button>} <div className={styles['context-menu-option-label']}>{t('CTX_COPY_STREAM_LINK')}</div>
</div> </Button>}
); </div>
}; );
}, [copyStreamLink, onClick]
);
return ( return (
<Popup <Popup