192a7e801S猫头猫import React, {useEffect, useState} from 'react'; 2bf6e62f2S猫头猫import {useAtomValue} from 'jotai'; 3bf6e62f2S猫头猫import {searchResultsAtom} from '../../store/atoms'; 4bf6e62f2S猫头猫import getMediaItems from '../../common/getMediaItems'; 5bf6e62f2S猫头猫import {renderMap} from './results'; 6*3a76c6afS猫头猫import useSearch from '../../hooks/useSearch'; 7*3a76c6afS猫头猫import Loading from '@/components/base/loading'; 8*3a76c6afS猫头猫import {FlatList} from 'react-native'; 9bf6e62f2S猫头猫 10bf6e62f2S猫头猫interface IResultWrapperProps { 11bf6e62f2S猫头猫 tab: ICommon.SupportMediaType; 129d40a3faS猫头猫 pluginHash: string; 13*3a76c6afS猫头猫 pluginName: string; 14bf6e62f2S猫头猫} 15bf6e62f2S猫头猫export default function ResultWrapper(props: IResultWrapperProps) { 169d40a3faS猫头猫 const {tab, pluginHash} = props; 17*3a76c6afS猫头猫 const search = useSearch(); 18bf6e62f2S猫头猫 const searchResults = useAtomValue(searchResultsAtom); 1992a7e801S猫头猫 const [pendingState, setPendingState] = useState<string>('pending'); 209d40a3faS猫头猫 const data = getMediaItems(searchResults, pluginHash, tab); 21bf6e62f2S猫头猫 const ResultComponent = renderMap[tab]!; 2292a7e801S猫头猫 2392a7e801S猫头猫 useEffect(() => { 2492a7e801S猫头猫 setPendingState( 259d40a3faS猫头猫 pluginHash === 'all' 2692a7e801S猫头猫 ? Object.values(searchResults).every(_ => _.state !== 'pending') 2792a7e801S猫头猫 ? 'resolved' 2892a7e801S猫头猫 : 'pending' 299d40a3faS猫头猫 : searchResults[pluginHash]?.state ?? 'pending', 3092a7e801S猫头猫 ); 3192a7e801S猫头猫 }, [searchResults]); 32*3a76c6afS猫头猫 33*3a76c6afS猫头猫 return (!data || !data?.length) && pendingState === 'pending' ? ( 34*3a76c6afS猫头猫 <Loading></Loading> 35*3a76c6afS猫头猫 ) : ( 36*3a76c6afS猫头猫 <FlatList 37*3a76c6afS猫头猫 data={data ?? []} 38*3a76c6afS猫头猫 contentContainerStyle={{flex: 1}} 39*3a76c6afS猫头猫 onEndReached={() => { 40*3a76c6afS猫头猫 pendingState === 'resolved' && search(undefined, pluginHash); 41*3a76c6afS猫头猫 }} 42*3a76c6afS猫头猫 renderItem={({item, index}) => ( 43*3a76c6afS猫头猫 <ResultComponent item={item} index={index}></ResultComponent> 44*3a76c6afS猫头猫 )}></FlatList> 4592a7e801S猫头猫 ); 46bf6e62f2S猫头猫} 47