1*92a7e801S猫头猫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; 9bf6e62f2S猫头猫 platform: string; 10bf6e62f2S猫头猫} 11bf6e62f2S猫头猫export default function ResultWrapper(props: IResultWrapperProps) { 12bf6e62f2S猫头猫 const {tab, platform} = props; 13bf6e62f2S猫头猫 const searchResults = useAtomValue(searchResultsAtom); 14*92a7e801S猫头猫 const [pendingState, setPendingState] = useState<string>('pending'); 15*92a7e801S猫头猫 const data = getMediaItems(searchResults, platform, tab); 16bf6e62f2S猫头猫 const ResultComponent = renderMap[tab]!; 17*92a7e801S猫头猫 18*92a7e801S猫头猫 useEffect(() => { 19*92a7e801S猫头猫 setPendingState( 20*92a7e801S猫头猫 platform === 'all' 21*92a7e801S猫头猫 ? Object.values(searchResults).every(_ => _.state !== 'pending') 22*92a7e801S猫头猫 ? 'resolved' 23*92a7e801S猫头猫 : 'pending' 24*92a7e801S猫头猫 : searchResults[platform]?.state ?? 'pending', 25*92a7e801S猫头猫 ); 26*92a7e801S猫头猫 }, [searchResults]); 27*92a7e801S猫头猫 return ( 28*92a7e801S猫头猫 <ResultComponent 29*92a7e801S猫头猫 platform={platform} 30*92a7e801S猫头猫 data={data} 31*92a7e801S猫头猫 pendingState={pendingState}></ResultComponent> 32*92a7e801S猫头猫 ); 33bf6e62f2S猫头猫} 34