import { createStore, storeKey } from "vuex"; export default createStore({ state: { // appVersion: "0.0.1", // debugStr: "测试debug字符", showSongDetail: false, //是否显示歌曲详情 keywords: '', //查询关键字 settings: { currentRoute: "/discover/recommend", //当前路由 songId: 0, //歌曲id playing: false, //是否播放 playMode: 0, //播放模式:0-3,顺序,循环,单曲,随机。 lastPlayed: [], //最近播放 playingList: [], //当前播放 searchHistory: [], //搜索历史 }, caches: {}, theme: { //主题覆盖变量 themeOverrides: { common: { primaryColor: "#5C18A0FF", primaryColorHover: "#7536ADFF", primaryColorPressed: "#690D7EFF", primaryColorSuppl: "#511D77FF", textColorBase: "#1F1F1FFF", }, }, zmusic: {}, }, }, getters: { //根据当前路由计算主菜单的选择项 mainMenuSelected: (state) => (menuOptions) => { return menuOptions.find((item) => { return state.settings.currentRoute.indexOf(item.key) > -1; })?.key; }, cache: (state) => (key, expire = 0) => { if (state.caches[key]) { if ( state.caches[key].time && (expire <= 0 || Date.now() - state.caches[key].time < 1000 * expire) ) return state.caches[key].data; } return null; }, }, mutations: { //载入settings设置 loadSettings(state) { const l = localStorage.getItem("zmusic.settings"); if (l) state.settings = { ...state.settings, ...JSON.parse(l) }; }, //保存settings设置 saveSettings(state, settings) { state.settings = { ...state.settings, ...settings }; saveLoaclSettings(state.settings); }, //载入caches设置 loadCaches(state) { const l = localStorage.getItem("zmusic.caches"); if (l) state.caches = { ...state.caches, ...JSON.parse(l) }; }, //保存caches设置 saveCaches(state, caches) { state.caches = { ...state.caches, ...caches }; saveLoaclCaches(state.caches); }, //保存当前路由 saveCurrentRoute(state, currentRoute) { state.settings.currentRoute = currentRoute; saveLoaclSettings(state.settings); }, //载入theme设置 loadTheme(state) { const l = localStorage.getItem("zmusic.theme"); if (l) state.theme = { ...state.theme, ...JSON.parse(l) }; }, //保存theme设置 saveTheme(state, theme) { state.theme = { ...state.theme, ...theme }; saveLoaclTheme(state.theme); }, savePlayed(state, played) { // console.log(played) let p = state.settings.lastPlayed.filter( (item, idx) => item.id !== played.id && idx < 99 ); p.unshift(played); // console.log(p) state.settings.lastPlayed = p; saveLoaclSettings(state.settings); }, addToPlayingList(state, song) { //如果没有,设置为[] if (!state.settings.playingList) state.settings.playingList = []; let f = state.settings.playingList.find((item) => { return item.id === song.id; }); if (!f) { // console.log("add to playingList"); state.settings.playingList.unshift(song); saveLoaclSettings(state.settings); } }, removePlayingList(state, song) { // console.log('removePlayingList', song) let idx = state.settings.playingList.findIndex( (item) => item.id === song.id ); // console.log(idx) if (idx > -1) { state.settings.playingList.splice(idx, 1); saveLoaclSettings(state.settings); } }, }, actions: {}, modules: {}, }); function saveLoaclSettings(s) { localStorage.setItem("zmusic.settings", JSON.stringify(s)); } function saveLoaclCaches(s) { localStorage.setItem("zmusic.caches", JSON.stringify(s)); } function saveLoaclTheme(s) { localStorage.setItem("zmusic.theme", JSON.stringify(s)); }