// Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); const classnames = require('classnames'); const debounce = require('lodash.debounce'); const useTranslate = require('stremio/common/useTranslate'); const { default: Icon } = require('@stremio/stremio-icons/react'); const { withCoreSuspender, getVisibleChildrenRange } = require('stremio/common'); const { Image, MainNavBars, MetaItem, MetaRow } = require('stremio/components'); const useSearch = require('./useSearch'); const styles = require('./styles'); const { useSearchParams } = require('react-router-dom'); const THRESHOLD = 100; const Search = () => { const [queryParams] = useSearchParams(); const t = useTranslate(); const [search, loadSearchRows] = useSearch(queryParams); const query = React.useMemo(() => { return search.selected !== null ? search.selected.extra.reduceRight((query, [name, value]) => { if (name === 'search') { return value; } return query; }, null) : null; }, [search.selected]); const scrollContainerRef = React.useRef(); const onVisibleRangeChange = React.useCallback(() => { if (search.catalogs.length === 0) { return; } const range = getVisibleChildrenRange(scrollContainerRef.current, THRESHOLD); if (range === null) { return; } loadSearchRows(range); }, [search.catalogs]); const onScroll = React.useCallback(debounce(onVisibleRangeChange, 250), [onVisibleRangeChange]); React.useLayoutEffect(() => { onVisibleRangeChange(); }, [search.catalogs, onVisibleRangeChange]); return (
{ query === null ?
{t.string('SEARCH_ANYTHING')}
{t.string('SEARCH_CATEGORIES')}
{t.string('SEARCH_PERSONS')}
{t.string('SEARCH_PROTOCOLS')}
{t.string('SEARCH_TYPES')}
: search.catalogs.length === 0 ?
{'
{ t.string('STREMIO_TV_SEARCH_NO_ADDONS') }
: search.catalogs.map((catalog, index) => { switch (catalog.content?.type) { case 'Ready': { return ( ); } case 'Err': { if (catalog.content.content !== 'EmptyContent') { return ( ); } return null; } default: { return ( ); } } }) }
); }; const SearchFallback = () => { const [queryParams] = useSearchParams(); return }; module.exports = withCoreSuspender(Search, SearchFallback);