1*41ddce91Smaotoumaoimport { isSameMediaItem } from "@/utils/mediaItem"; 2*41ddce91Smaotoumaoimport { GlobalState } from "@/utils/stateMapper"; 3*41ddce91Smaotoumaoimport { getStorage, setStorage } from "@/utils/storage"; 4*41ddce91Smaotoumaoimport Config from "./config.ts"; 5*41ddce91Smaotoumaoimport { musicHistorySheetId } from "@/constants/commonConst"; 60412c91bS猫头猫 70412c91bS猫头猫const musicHistory = new GlobalState<IMusic.IMusicItem[]>([]); 80412c91bS猫头猫 95500cea7S猫头猫async function setupMusicHistory() { 105500cea7S猫头猫 const history = await getStorage(musicHistorySheetId); 115500cea7S猫头猫 musicHistory.setValue(history ?? []); 125500cea7S猫头猫} 135500cea7S猫头猫 140412c91bS猫头猫async function addMusic(musicItem: IMusic.IMusicItem) { 150412c91bS猫头猫 const newMusicHistory = [ 160412c91bS猫头猫 musicItem, 170412c91bS猫头猫 ...musicHistory 180412c91bS猫头猫 .getValue() 190412c91bS猫头猫 .filter(item => !isSameMediaItem(item, musicItem)), 20*41ddce91Smaotoumao ].slice(0, Config.getConfig('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猫头猫 38d7f2df0bS猫头猫async function setHistory(newHistory: IMusic.IMusicItem[]) { 39d7f2df0bS猫头猫 await setStorage(musicHistorySheetId, newHistory); 40d7f2df0bS猫头猫 musicHistory.setValue(newHistory); 41d7f2df0bS猫头猫} 42d7f2df0bS猫头猫 430412c91bS猫头猫export default { 445500cea7S猫头猫 setupMusicHistory, 450412c91bS猫头猫 addMusic, 460412c91bS猫头猫 removeMusic, 470412c91bS猫头猫 clearMusic, 48d7f2df0bS猫头猫 setHistory, 490412c91bS猫头猫 useMusicHistory: musicHistory.useValue, 500412c91bS猫头猫}; 51