From 659c40338e4df75322197d35f19a16492d5acbd2 Mon Sep 17 00:00:00 2001 From: Anant Jain Date: Sun, 21 Jul 2024 18:37:43 -0700 Subject: [PATCH 1/3] Introduce IMDB rating on Card View --- src/common/MetaItem/MetaItem.js | 40 +++++++++++++++++++++++++++++++-- src/common/MetaItem/styles.less | 29 ++++++++++++++++++++++++ src/routes/Discover/Discover.js | 1 + 3 files changed, 68 insertions(+), 2 deletions(-) diff --git a/src/common/MetaItem/MetaItem.js b/src/common/MetaItem/MetaItem.js index 5656ea6da..118979b10 100644 --- a/src/common/MetaItem/MetaItem.js +++ b/src/common/MetaItem/MetaItem.js @@ -12,10 +12,32 @@ const Multiselect = require('stremio/common/Multiselect'); const useBinaryState = require('stremio/common/useBinaryState'); const { ICON_FOR_TYPE } = require('stremio/common/CONSTANTS'); const styles = require('./styles'); +const UrlUtils = require('url'); +const CONSTANTS = require('stremio/common/CONSTANTS'); -const MetaItem = React.memo(({ className, type, name, poster, posterShape, posterChangeCursor, progress, newVideos, options, deepLinks, dataset, optionOnSelect, onDismissClick, onPlayClick, watched, ...props }) => { +const MetaItem = React.memo(({ className, type, name, poster, links, posterShape, posterChangeCursor, progress, newVideos, options, deepLinks, dataset, optionOnSelect, onDismissClick, onPlayClick, watched, ...props }) => { const { t } = useTranslation(); const [menuOpen, onMenuOpen, onMenuClose] = useBinaryState(false); + const imdbLink = React.useMemo(() => { + if (!Array.isArray(links)) { + return null; + } + + const imdbLink = links.find((link) => { + if (!link || typeof link.category !== 'string' || typeof link.url !== 'string') { + return false; + } + + const { hostname } = UrlUtils.parse(link.url); + return link.category === CONSTANTS.IMDB_LINK_CATEGORY && hostname === 'imdb.com'; + }); + + return imdbLink ? { + label: imdbLink.name, + href: `https://www.stremio.com/warning#${encodeURIComponent(imdbLink.url)}` + } : null; + }, [links]); + const href = React.useMemo(() => { return deepLinks ? typeof deepLinks.player === 'string' ? @@ -130,6 +152,15 @@ const MetaItem = React.memo(({ className, type, name, poster, posterShape, poste
{typeof name === 'string' && name.length > 0 ? name : ''}
+ { + imdbLink ? +
+ +
{imdbLink.label}
+
+ : + null + } { Array.isArray(options) && options.length > 0 ? { className={classnames({ 'selected': selectedMetaItemIndex === index })} type={metaItem.type} name={metaItem.name} + links={metaItem.links} poster={metaItem.poster} posterShape={metaItem.posterShape} playname={selectedMetaItemIndex === index} From eb6dc8b26380223bddf0f96f1b487e92f9c0f125 Mon Sep 17 00:00:00 2001 From: Anant Jain Date: Sun, 21 Jul 2024 19:13:28 -0700 Subject: [PATCH 2/3] Remove from discover page --- src/common/MetaItem/MetaItem.js | 2 +- src/routes/Discover/Discover.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/common/MetaItem/MetaItem.js b/src/common/MetaItem/MetaItem.js index 118979b10..8f5b6feba 100644 --- a/src/common/MetaItem/MetaItem.js +++ b/src/common/MetaItem/MetaItem.js @@ -15,7 +15,7 @@ const styles = require('./styles'); const UrlUtils = require('url'); const CONSTANTS = require('stremio/common/CONSTANTS'); -const MetaItem = React.memo(({ className, type, name, poster, links, posterShape, posterChangeCursor, progress, newVideos, options, deepLinks, dataset, optionOnSelect, onDismissClick, onPlayClick, watched, ...props }) => { +const MetaItem = React.memo(({ className, type, name, poster, posterShape, posterChangeCursor, progress, newVideos, options, deepLinks, dataset, optionOnSelect, onDismissClick, onPlayClick, watched, links, ...props }) => { const { t } = useTranslation(); const [menuOpen, onMenuOpen, onMenuClose] = useBinaryState(false); const imdbLink = React.useMemo(() => { diff --git a/src/routes/Discover/Discover.js b/src/routes/Discover/Discover.js index e8795c3c9..2e2e90beb 100644 --- a/src/routes/Discover/Discover.js +++ b/src/routes/Discover/Discover.js @@ -146,7 +146,6 @@ const Discover = ({ urlParams, queryParams }) => { className={classnames({ 'selected': selectedMetaItemIndex === index })} type={metaItem.type} name={metaItem.name} - links={metaItem.links} poster={metaItem.poster} posterShape={metaItem.posterShape} playname={selectedMetaItemIndex === index} From e041fe01c3cd98e9f5c8dda9d10266f7ed12ae40 Mon Sep 17 00:00:00 2001 From: Anant Jain Date: Sun, 21 Jul 2024 19:14:57 -0700 Subject: [PATCH 3/3] Fix formatting --- src/common/MetaItem/MetaItem.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/MetaItem/MetaItem.js b/src/common/MetaItem/MetaItem.js index 8f5b6feba..82bbcbb16 100644 --- a/src/common/MetaItem/MetaItem.js +++ b/src/common/MetaItem/MetaItem.js @@ -211,7 +211,7 @@ MetaItem.propTypes = { category: PropTypes.string, name: PropTypes.string, url: PropTypes.string - })), + })) }; module.exports = MetaItem;