diff --git a/src/renderer/core/useApp/usePlayer/useWatchList.js b/src/renderer/core/useApp/usePlayer/useWatchList.js index 28491a24..84ba6708 100644 --- a/src/renderer/core/useApp/usePlayer/useWatchList.js +++ b/src/renderer/core/useApp/usePlayer/useWatchList.js @@ -3,10 +3,16 @@ import { onBeforeUnmount } from '@renderer/utils/vueTools' import { player as eventPlayerNames, list as eventListNames } from '@renderer/event/names' import { playInfo, playMusicInfo, updatePlayIndex } from '@renderer/core/share/player' import { getList } from '@renderer/core/share/utils' +import { throttle } from '@renderer/utils' + +const changedListIds = new Set() export default ({ playNext }) => { - const handleListChange = listIds => { - if (!listIds.includes(playInfo.playListId) && !listIds.includes(playMusicInfo.listId)) return + const throttleListChange = throttle(() => { + const isSkip = !changedListIds.has(playInfo.playListId) && !changedListIds.has(playMusicInfo.listId) + changedListIds.clear() + if (isSkip) return + const { playIndex } = updatePlayIndex() if (playIndex < 0 && !playMusicInfo.isTempPlay) { // 歌曲被移除 if (getList(playMusicInfo.listId).length) { @@ -15,6 +21,13 @@ export default ({ playNext }) => { window.eventHub.emit(eventPlayerNames.setStop) } } + }) + + const handleListChange = listIds => { + for (const id of listIds) { + changedListIds.add(id) + } + throttleListChange() } window.eventHub.on(eventListNames.listChange, handleListChange) diff --git a/src/renderer/utils/index.js b/src/renderer/utils/index.js index 57d6ec77..183292df 100644 --- a/src/renderer/utils/index.js +++ b/src/renderer/utils/index.js @@ -402,8 +402,8 @@ export const getPlayList = () => rendererInvoke(NAMES.mainWindow.get_playlist).c let filePath = path.join(dataPath, 'playList.json.bak') rendererInvoke(NAMES.mainWindow.show_dialog, { type: 'error', - message: window.i18n.t('store.state.load_list_file_error_title'), - detail: window.i18n.t('store.state.load_list_file_error_detail', { + message: window.i18n.t('load_list_file_error_title'), + detail: window.i18n.t('load_list_file_error_detail', { path: filePath, detail: error.message, }),