10412c91bS猫头猫import {isSameMediaItem} from '@/utils/mediaItem'; 20412c91bS猫头猫import {GlobalState} from '@/utils/stateMapper'; 3*5500cea7S猫头猫import {getStorage, setStorage} from '@/utils/storage'; 40412c91bS猫头猫import Config from './config'; 50412c91bS猫头猫import {musicHistorySheetId} from '@/constants/commonConst'; 60412c91bS猫头猫 70412c91bS猫头猫const musicHistory = new GlobalState<IMusic.IMusicItem[]>([]); 80412c91bS猫头猫 9*5500cea7S猫头猫async function setupMusicHistory() { 10*5500cea7S猫头猫 const history = await getStorage(musicHistorySheetId); 11*5500cea7S猫头猫 musicHistory.setValue(history ?? []); 12*5500cea7S猫头猫} 13*5500cea7S猫头猫 140412c91bS猫头猫async function addMusic(musicItem: IMusic.IMusicItem) { 150412c91bS猫头猫 const newMusicHistory = [ 160412c91bS猫头猫 musicItem, 170412c91bS猫头猫 ...musicHistory 180412c91bS猫头猫 .getValue() 190412c91bS猫头猫 .filter(item => !isSameMediaItem(item, musicItem)), 200412c91bS猫头猫 ].slice(0, Config.get('setting.basic.maxHistoryLen') ?? 50); 210412c91bS猫头猫 await setStorage(musicHistorySheetId, newMusicHistory); 220412c91bS猫头猫 musicHistory.setValue(newMusicHistory); 230412c91bS猫头猫} 240412c91bS猫头猫 250412c91bS猫头猫async function removeMusic(musicItem: IMusic.IMusicItem) { 260412c91bS猫头猫 const newMusicHistory = musicHistory 270412c91bS猫头猫 .getValue() 280412c91bS猫头猫 .filter(item => !isSameMediaItem(item, musicItem)); 290412c91bS猫头猫 await setStorage(musicHistorySheetId, newMusicHistory); 300412c91bS猫头猫 musicHistory.setValue(newMusicHistory); 310412c91bS猫头猫} 320412c91bS猫头猫 330412c91bS猫头猫async function clearMusic() { 340412c91bS猫头猫 await setStorage(musicHistorySheetId, []); 350412c91bS猫头猫 musicHistory.setValue([]); 360412c91bS猫头猫} 370412c91bS猫头猫 380412c91bS猫头猫export default { 39*5500cea7S猫头猫 setupMusicHistory, 400412c91bS猫头猫 addMusic, 410412c91bS猫头猫 removeMusic, 420412c91bS猫头猫 clearMusic, 430412c91bS猫头猫 useMusicHistory: musicHistory.useValue, 440412c91bS猫头猫}; 45