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'; 6bf6e62f2S猫头猫 7bf6e62f2S猫头猫interface IResultWrapperProps { 8bf6e62f2S猫头猫 tab: ICommon.SupportMediaType; 9*9d40a3faS猫头猫 pluginHash: string; 10*9d40a3faS猫头猫 pluginName: string 11bf6e62f2S猫头猫} 12bf6e62f2S猫头猫export default function ResultWrapper(props: IResultWrapperProps) { 13*9d40a3faS猫头猫 const {tab, pluginHash} = props; 14bf6e62f2S猫头猫 const searchResults = useAtomValue(searchResultsAtom); 1592a7e801S猫头猫 const [pendingState, setPendingState] = useState<string>('pending'); 16*9d40a3faS猫头猫 const data = getMediaItems(searchResults, pluginHash, tab); 17bf6e62f2S猫头猫 const ResultComponent = renderMap[tab]!; 1892a7e801S猫头猫 1992a7e801S猫头猫 useEffect(() => { 2092a7e801S猫头猫 setPendingState( 21*9d40a3faS猫头猫 pluginHash === 'all' 2292a7e801S猫头猫 ? Object.values(searchResults).every(_ => _.state !== 'pending') 2392a7e801S猫头猫 ? 'resolved' 2492a7e801S猫头猫 : 'pending' 25*9d40a3faS猫头猫 : searchResults[pluginHash]?.state ?? 'pending', 2692a7e801S猫头猫 ); 2792a7e801S猫头猫 }, [searchResults]); 2892a7e801S猫头猫 return ( 2992a7e801S猫头猫 <ResultComponent 30*9d40a3faS猫头猫 platform={pluginHash} 3192a7e801S猫头猫 data={data} 3292a7e801S猫头猫 pendingState={pendingState}></ResultComponent> 3392a7e801S猫头猫 ); 34bf6e62f2S猫头猫} 35