xref: /MusicFree/src/pages/searchPage/components/resultPanel/resultWrapper.tsx (revision 9d40a3fa971e70a778b405ee3569bce02856db4c)
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