mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-04-21 07:32:02 +00:00
refactor(Discover): simplify
This commit is contained in:
parent
a9d9c8d808
commit
f73fa5931e
1 changed files with 13 additions and 27 deletions
|
|
@ -10,6 +10,7 @@ const { CONSTANTS, useBinaryState, useOnScrollToBottom, withCoreSuspender } = re
|
||||||
const { AddonDetailsModal, Button, DelayedRenderer, Image, MainNavBars, MetaItem, MetaPreview, ModalDialog, MultiselectMenu } = require('stremio/components');
|
const { AddonDetailsModal, Button, DelayedRenderer, Image, MainNavBars, MetaItem, MetaPreview, ModalDialog, MultiselectMenu } = require('stremio/components');
|
||||||
const useDiscover = require('./useDiscover');
|
const useDiscover = require('./useDiscover');
|
||||||
const useSelectableInputs = require('./useSelectableInputs');
|
const useSelectableInputs = require('./useSelectableInputs');
|
||||||
|
const useMetaDetails = require('../MetaDetails/useMetaDetails');
|
||||||
const styles = require('./styles');
|
const styles = require('./styles');
|
||||||
|
|
||||||
const SCROLL_TO_BOTTOM_THRESHOLD = 400;
|
const SCROLL_TO_BOTTOM_THRESHOLD = 400;
|
||||||
|
|
@ -23,6 +24,18 @@ const Discover = ({ urlParams, queryParams }) => {
|
||||||
const [addonModalOpen, openAddonModal, closeAddonModal] = useBinaryState(false);
|
const [addonModalOpen, openAddonModal, closeAddonModal] = useBinaryState(false);
|
||||||
const [selectedMetaItemIndex, setSelectedMetaItemIndex] = React.useState(0);
|
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 metasContainerRef = React.useRef();
|
||||||
const metaPreviewRef = React.useRef();
|
const metaPreviewRef = React.useRef();
|
||||||
|
|
||||||
|
|
@ -40,33 +53,6 @@ const Discover = ({ urlParams, queryParams }) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [hasNextPage, loadNextPage]);
|
}, [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(() => {
|
const addToLibrary = React.useCallback(() => {
|
||||||
if (selectedMetaItem === null) {
|
if (selectedMetaItem === null) {
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue