feat(NavMenu): handle play magnet link

This commit is contained in:
Tim 2022-10-31 17:23:43 +01:00
parent 8689861f64
commit 5fa033a2a6

View file

@ -3,6 +3,7 @@
const React = require('react');
const PropTypes = require('prop-types');
const classnames = require('classnames');
const magnet = require('magnet-uri');
const Icon = require('@stremio/stremio-icons/dom');
const { useServices } = require('stremio/services');
const Button = require('stremio/common/Button');
@ -23,6 +24,23 @@ const NavMenuContent = ({ onClick }) => {
}
});
}, []);
const onPlayMagnetLinkClick = React.useCallback(async () => {
try {
const clipboardText = await navigator.clipboard.readText();
const parsed = magnet.decode(clipboardText);
if (parsed && typeof parsed.infoHash === 'string') {
core.transport.dispatch({
action: 'StreamingServer',
args: {
action: 'CreateTorrent',
args: clipboardText
}
});
}
} catch(e) {
console.error(e);
}
}, []);
return (
<div className={classnames(styles['nav-menu-container'], 'animation-fade-in')} onClick={onClick}>
<div className={styles['user-info-container']}>
@ -57,7 +75,7 @@ const NavMenuContent = ({ onClick }) => {
<Icon className={styles['icon']} icon={'ic_addons'} />
<div className={styles['nav-menu-option-label']}>Addons</div>
</Button>
<Button className={styles['nav-menu-option-container']} title={'Play Magnet Link'} disabled={true}>
<Button className={styles['nav-menu-option-container']} title={'Play Magnet Link'} onClick={onPlayMagnetLinkClick}>
<Icon className={styles['icon']} icon={'ic_magnet'} />
<div className={styles['nav-menu-option-label']}>Play Magnet Link</div>
</Button>