1*5830c002S猫头猫import PluginManager from '@/core/pluginManager'; 2*5830c002S猫头猫import {useCallback, useEffect, useRef, useState} from 'react'; 3*5830c002S猫头猫 4*5830c002S猫头猫export default function usePluginSheetMusicList( 5*5830c002S猫头猫 originalSheetItem: IMusic.IMusicSheetItem | null, 6*5830c002S猫头猫) { 7*5830c002S猫头猫 const currentPageRef = useRef(1); 8*5830c002S猫头猫 const [loadMore, setLoadMore] = useState<'idle' | 'loading' | 'done'>( 9*5830c002S猫头猫 'idle', 10*5830c002S猫头猫 ); 11*5830c002S猫头猫 const [sheetItem, setSheetItem] = useState<IMusic.IMusicSheetItem | null>( 12*5830c002S猫头猫 originalSheetItem, 13*5830c002S猫头猫 ); 14*5830c002S猫头猫 const [musicList, setMusicList] = useState<IMusic.IMusicItem[]>( 15*5830c002S猫头猫 originalSheetItem?.musicList ?? [], 16*5830c002S猫头猫 ); 17*5830c002S猫头猫 18*5830c002S猫头猫 const getSheetDetail = useCallback( 19*5830c002S猫头猫 async function () { 20*5830c002S猫头猫 if (originalSheetItem === null || loadMore !== 'idle') { 21*5830c002S猫头猫 return; 22*5830c002S猫头猫 } 23*5830c002S猫头猫 24*5830c002S猫头猫 try { 25*5830c002S猫头猫 setLoadMore('loading'); 26*5830c002S猫头猫 const result = await PluginManager.getByMedia( 27*5830c002S猫头猫 originalSheetItem, 28*5830c002S猫头猫 )?.methods?.getMusicSheetInfo?.( 29*5830c002S猫头猫 originalSheetItem, 30*5830c002S猫头猫 currentPageRef.current, 31*5830c002S猫头猫 ); 32*5830c002S猫头猫 console.log(result, 'ddd'); 33*5830c002S猫头猫 if (result === null || result === undefined) { 34*5830c002S猫头猫 throw new Error(); 35*5830c002S猫头猫 } 36*5830c002S猫头猫 if (result?.sheetItem) { 37*5830c002S猫头猫 setSheetItem(prev => ({ 38*5830c002S猫头猫 ...(prev ?? {}), 39*5830c002S猫头猫 ...(result.sheetItem as IMusic.IMusicSheetItem), 40*5830c002S猫头猫 platform: originalSheetItem.platform, 41*5830c002S猫头猫 })); 42*5830c002S猫头猫 } 43*5830c002S猫头猫 if (result?.musicList) { 44*5830c002S猫头猫 setMusicList(prev => { 45*5830c002S猫头猫 if (currentPageRef.current === 1) { 46*5830c002S猫头猫 return result?.musicList ?? prev; 47*5830c002S猫头猫 } else { 48*5830c002S猫头猫 return [...prev, ...(result.musicList ?? [])]; 49*5830c002S猫头猫 } 50*5830c002S猫头猫 }); 51*5830c002S猫头猫 } 52*5830c002S猫头猫 setLoadMore(result.isEnd ? 'done' : 'idle'); 53*5830c002S猫头猫 currentPageRef.current += 1; 54*5830c002S猫头猫 } catch { 55*5830c002S猫头猫 setLoadMore('idle'); 56*5830c002S猫头猫 } 57*5830c002S猫头猫 }, 58*5830c002S猫头猫 [loadMore], 59*5830c002S猫头猫 ); 60*5830c002S猫头猫 61*5830c002S猫头猫 useEffect(() => { 62*5830c002S猫头猫 getSheetDetail(); 63*5830c002S猫头猫 }, []); 64*5830c002S猫头猫 65*5830c002S猫头猫 return [loadMore, sheetItem, musicList, getSheetDetail] as const; 66*5830c002S猫头猫} 67