xref: /MusicFree/src/core/musicHistory.ts (revision 41ddce918e1138d8f16e522cc7c19ac86ceca698)
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