From f73fa5931e126b409d7cd0a82e726cfac0b96570 Mon Sep 17 00:00:00 2001 From: "Timothy Z." Date: Wed, 19 Nov 2025 14:31:04 +0200 Subject: [PATCH] refactor(Discover): simplify --- src/routes/Discover/Discover.js | 40 +++++++++++---------------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/src/routes/Discover/Discover.js b/src/routes/Discover/Discover.js index 230d3b7d0..647f55248 100644 --- a/src/routes/Discover/Discover.js +++ b/src/routes/Discover/Discover.js @@ -10,6 +10,7 @@ const { CONSTANTS, useBinaryState, useOnScrollToBottom, withCoreSuspender } = re const { AddonDetailsModal, Button, DelayedRenderer, Image, MainNavBars, MetaItem, MetaPreview, ModalDialog, MultiselectMenu } = require('stremio/components'); const useDiscover = require('./useDiscover'); const useSelectableInputs = require('./useSelectableInputs'); +const useMetaDetails = require('../MetaDetails/useMetaDetails'); const styles = require('./styles'); const SCROLL_TO_BOTTOM_THRESHOLD = 400; @@ -23,6 +24,18 @@ const Discover = ({ urlParams, queryParams }) => { const [addonModalOpen, openAddonModal, closeAddonModal] = useBinaryState(false); const [selectedMetaItemIndex, setSelectedMetaItemIndex] = React.useState(0); + const { selectedMetaItem, metaDetailsParams } = React.useMemo(() => { + const item = discover.catalog?.content.type === 'Ready' && + discover.catalog.content.content[selectedMetaItemIndex] || null; + + return { + selectedMetaItem: item, + metaDetailsParams: item ? { type: item.type, id: item.id } : {} + }; + }, [discover.catalog, selectedMetaItemIndex]); + + useMetaDetails(metaDetailsParams); + const metasContainerRef = React.useRef(); const metaPreviewRef = React.useRef(); @@ -40,33 +53,6 @@ const Discover = ({ urlParams, queryParams }) => { } } }, [hasNextPage, loadNextPage]); - const selectedMetaItem = React.useMemo(() => { - const item = discover.catalog !== null && - discover.catalog.content.type === 'Ready' && - discover.catalog.content.content[selectedMetaItemIndex] ? - discover.catalog.content.content[selectedMetaItemIndex] - : - null; - - if (item !== null) { - core.transport.dispatch({ - action: 'Load', - args: { - model: 'MetaDetails', - args: { - metaPath: { - resource: 'meta', - type: item.type, - id: item.id, - extra: [] - } - } - } - }); - } - - return item; - }, [discover.catalog, selectedMetaItemIndex]); const addToLibrary = React.useCallback(() => { if (selectedMetaItem === null) { return;