mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-03-11 21:27:05 +00:00
deep links integrated in video
This commit is contained in:
parent
cf9ded23a2
commit
5439eabdf3
2 changed files with 25 additions and 5 deletions
|
|
@ -6,9 +6,21 @@ const { Button, Image } = require('stremio/common');
|
||||||
const VideoPlaceholder = require('./VideoPlaceholder');
|
const VideoPlaceholder = require('./VideoPlaceholder');
|
||||||
const styles = require('./styles');
|
const styles = require('./styles');
|
||||||
|
|
||||||
const Video = ({ className, id, title, thumbnail, episode, released, upcoming, watched, progress, ...props }) => {
|
const Video = ({ className, id, title, thumbnail, episode, released, upcoming, watched, progress, deepLinks, ...props }) => {
|
||||||
|
const href = React.useMemo(() => {
|
||||||
|
return deepLinks ?
|
||||||
|
typeof deepLinks.player === 'string' ?
|
||||||
|
deepLinks.player
|
||||||
|
:
|
||||||
|
typeof deepLinks.meta_details_streams === 'string' ?
|
||||||
|
deepLinks.meta_details_streams
|
||||||
|
:
|
||||||
|
null
|
||||||
|
:
|
||||||
|
null;
|
||||||
|
}, [deepLinks]);
|
||||||
return (
|
return (
|
||||||
<Button {...props} className={classnames(className, styles['video-container'])} title={title}>
|
<Button href={href} {...props} className={classnames(className, styles['video-container'])} title={title}>
|
||||||
{
|
{
|
||||||
typeof thumbnail === 'string' && thumbnail.length > 0 ?
|
typeof thumbnail === 'string' && thumbnail.length > 0 ?
|
||||||
<div className={styles['thumbnail-container']}>
|
<div className={styles['thumbnail-container']}>
|
||||||
|
|
@ -84,7 +96,11 @@ Video.propTypes = {
|
||||||
released: PropTypes.instanceOf(Date),
|
released: PropTypes.instanceOf(Date),
|
||||||
upcoming: PropTypes.bool,
|
upcoming: PropTypes.bool,
|
||||||
watched: PropTypes.bool,
|
watched: PropTypes.bool,
|
||||||
progress: PropTypes.number
|
progress: PropTypes.number,
|
||||||
|
deepLinks: PropTypes.shape({
|
||||||
|
meta_details_streams: PropTypes.string,
|
||||||
|
player: PropTypes.string
|
||||||
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = Video;
|
module.exports = Video;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
const React = require('react');
|
const React = require('react');
|
||||||
const { useModelState } = require('stremio/common');
|
const { deepLinking, useModelState } = require('stremio/common');
|
||||||
|
|
||||||
const initMetaDetailsState = () => ({
|
const initMetaDetailsState = () => ({
|
||||||
selected: null,
|
selected: null,
|
||||||
|
|
@ -32,7 +32,11 @@ const mapMetaDetailsState = (meta_details) => {
|
||||||
NaN
|
NaN
|
||||||
),
|
),
|
||||||
// TODO add watched and progress
|
// TODO add watched and progress
|
||||||
href: `#/metadetails/${meta_resource.content.content.type}/${meta_resource.content.content.id}/${video.id}`
|
deepLinks: deepLinking.withVideo({
|
||||||
|
video,
|
||||||
|
metaTransportUrl: meta_resource.request.base,
|
||||||
|
metaItem: meta_resource.content.content
|
||||||
|
})
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue