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