Files
AlgerMusicPlayer/src/hooks/MusicHistoryHook.ts
T

40 lines
1.0 KiB
TypeScript
Raw Normal View History

2023-12-29 16:04:44 +08:00
// musicHistoryHooks
import { useLocalStorage } from '@vueuse/core';
import type { SongResult } from '@/type/music';
2023-12-29 16:04:44 +08:00
export const useMusicHistory = () => {
const musicHistory = useLocalStorage<SongResult[]>('musicHistory', []);
2023-12-29 16:04:44 +08:00
const addMusic = (music: SongResult) => {
const index = musicHistory.value.findIndex((item) => item.id === music.id);
2023-12-29 16:04:44 +08:00
if (index !== -1) {
musicHistory.value[index].count = (musicHistory.value[index].count || 0) + 1;
musicHistory.value.unshift(musicHistory.value.splice(index, 1)[0]);
2023-12-29 16:04:44 +08:00
} else {
musicHistory.value.unshift({ ...music, count: 1 });
2023-12-29 16:04:44 +08:00
}
};
2023-12-29 16:04:44 +08:00
2024-05-21 11:01:23 +08:00
const delMusic = (music: SongResult) => {
const index = musicHistory.value.findIndex((item) => item.id === music.id);
2023-12-29 16:04:44 +08:00
if (index !== -1) {
musicHistory.value.splice(index, 1);
2023-12-29 16:04:44 +08:00
}
};
const musicList = ref(musicHistory.value);
2023-12-29 16:04:44 +08:00
watch(
() => musicHistory.value,
() => {
musicList.value = musicHistory.value;
},
);
2023-12-29 16:04:44 +08:00
return {
musicHistory,
musicList,
addMusic,
delMusic,
};
};