From 1db54195f5f93b4883461fdc14cebfe0850fd4de Mon Sep 17 00:00:00 2001 From: lyswhut Date: Fri, 6 Jan 2023 14:39:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A6=81=E7=94=A8=E5=88=87?= =?UTF-8?q?=E6=AD=8C=E6=97=B6=E6=AD=8C=E6=9B=B2=E6=92=AD=E6=94=BE=E5=AE=8C?= =?UTF-8?q?=E6=AF=95=E5=90=8E=E7=9A=84=E6=AD=8C=E6=9B=B2=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- publish/changeLog.md | 1 + .../layout/PlayDetail/LyricPlayer.vue | 2 + src/renderer/core/player/action.ts | 40 +++++++++++++------ .../core/useApp/usePlayer/usePlayProgress.ts | 13 +++--- .../core/useApp/usePlayer/usePlayer.ts | 11 +++-- 5 files changed, 43 insertions(+), 24 deletions(-) diff --git a/publish/changeLog.md b/publish/changeLog.md index 222c9d3a..6f3f6eef 100644 --- a/publish/changeLog.md +++ b/publish/changeLog.md @@ -5,6 +5,7 @@ - 修复Linux arm64系统下无法启动的问题(#1102) - 修复桌面歌词使用斜体出现截断的问题(#1106) - 修复某些情况下歌词的滚动问题 +- 修复禁用切歌时歌曲播放完毕后的歌曲信息显示问题 ### 优化 diff --git a/src/renderer/components/layout/PlayDetail/LyricPlayer.vue b/src/renderer/components/layout/PlayDetail/LyricPlayer.vue index df47c569..84a160e2 100644 --- a/src/renderer/components/layout/PlayDetail/LyricPlayer.vue +++ b/src/renderer/components/layout/PlayDetail/LyricPlayer.vue @@ -142,9 +142,11 @@ export default { }) onMounted(() => { + window.app_event.on('musicToggled', updateMusicInfo) window.app_event.on('lyricUpdated', updateMusicInfo) }) onBeforeUnmount(() => { + window.app_event.off('musicToggled', updateMusicInfo) window.app_event.off('lyricUpdated', updateMusicInfo) }) diff --git a/src/renderer/core/player/action.ts b/src/renderer/core/player/action.ts index 3d9702f0..ccf1d37a 100644 --- a/src/renderer/core/player/action.ts +++ b/src/renderer/core/player/action.ts @@ -126,12 +126,11 @@ const handleRestorePlay = async(restorePlayInfo: LX.Player.SavedPlayInfo) => { rlrc: lyricInfo.rlyric, rawlrc: lyricInfo.rawlrcInfo.lyric, }) + window.app_event.lyricUpdated() }).catch((err) => { console.log(err) if (musicInfo.id != playMusicInfo.musicInfo?.id) return setAllStatus(window.i18n.t('lyric__load_error')) - }).finally(() => { - window.app_event.lyricUpdated() }) if (appSetting['player.togglePlayMethod'] == 'random') addPlayedList({ ...playMusicInfo as LX.Player.PlayMusicInfo }) @@ -161,7 +160,7 @@ const handlePlay = () => { if (appSetting['player.togglePlayMethod'] == 'random' && !playMusicInfo.isTempPlay) addPlayedList({ ...(playMusicInfo as LX.Player.PlayMusicInfo) }) - void setMusicUrl(musicInfo) + setMusicUrl(musicInfo) void getPicPath({ musicInfo, listId: playMusicInfo.isTempPlay ? null : playMusicInfo.listId }).then((url: string) => { if (musicInfo.id != playMusicInfo.musicInfo?.id) return @@ -178,12 +177,11 @@ const handlePlay = () => { rlrc: lyricInfo.rlyric, rawlrc: lyricInfo.rawlrcInfo.lyric, }) + window.app_event.lyricUpdated() }).catch((err) => { console.log(err) if (musicInfo.id != playMusicInfo.musicInfo?.id) return setAllStatus(window.i18n.t('lyric__load_error')) - }).finally(() => { - window.app_event.lyricUpdated() }) } @@ -221,11 +219,17 @@ export const playNext = async(isAutoToggle = false): Promise => { return } - if (playMusicInfo.musicInfo == null) return handleToggleStop() + if (playMusicInfo.musicInfo == null) { + handleToggleStop() + return + } // console.log(playInfo.playerListId) const currentListId = playInfo.playerListId - if (!currentListId) return handleToggleStop() + if (!currentListId) { + handleToggleStop() + return + } const currentList = getList(currentListId) if (playedList.length) { // 移除已播放列表内不存在原列表的歌曲 @@ -263,7 +267,10 @@ export const playNext = async(isAutoToggle = false): Promise => { playerMusicInfo: currentList[playInfo.playerPlayIndex], }) - if (!filteredList.length) return handleToggleStop() + if (!filteredList.length) { + handleToggleStop() + return + } // let currentIndex: number = filteredList.indexOf(currentList[playInfo.playerPlayIndex]) if (playerIndex == -1 && filteredList.length) playerIndex = 0 let nextIndex = playerIndex @@ -309,10 +316,16 @@ export const playNext = async(isAutoToggle = false): Promise => { * 上一曲 */ export const playPrev = async(isAutoToggle = false): Promise => { - if (playMusicInfo.musicInfo == null) return handleToggleStop() + if (playMusicInfo.musicInfo == null) { + handleToggleStop() + return + } const currentListId = playInfo.playerListId - if (!currentListId) return handleToggleStop() + if (!currentListId) { + handleToggleStop() + return + } const currentList = getList(currentListId) if (playedList.length) { @@ -350,7 +363,10 @@ export const playPrev = async(isAutoToggle = false): Promise => { playedList, playerMusicInfo: currentList[playInfo.playerPlayIndex], }) - if (!filteredList.length) return handleToggleStop() + if (!filteredList.length) { + handleToggleStop() + return + } // let currentIndex = filteredList.indexOf(currentList[playInfo.playerPlayIndex]) if (playerIndex == -1 && filteredList.length) playerIndex = 0 @@ -398,7 +414,7 @@ export const playPrev = async(isAutoToggle = false): Promise => { export const play = () => { if (playMusicInfo.musicInfo == null) return if (isEmpty()) { - void setMusicUrl(playMusicInfo.musicInfo) + setMusicUrl(playMusicInfo.musicInfo) return } setPlay() diff --git a/src/renderer/core/useApp/usePlayer/usePlayProgress.ts b/src/renderer/core/useApp/usePlayer/usePlayProgress.ts index bbe67acc..c03d8e83 100644 --- a/src/renderer/core/useApp/usePlayer/usePlayProgress.ts +++ b/src/renderer/core/useApp/usePlayer/usePlayProgress.ts @@ -61,7 +61,7 @@ export default () => { const setProgress = (time: number, maxTime?: number) => { if (!musicInfo.id) return console.log('setProgress', time, maxTime) - restorePlayTime = time + if (time > 0) restorePlayTime = time if (mediaBuffer.playTime) { clearBufferTimeout() mediaBuffer.playTime = time @@ -106,12 +106,6 @@ export default () => { const handleLoadeddata = () => { setMaxplayTime(getDuration()) - console.log('handleLoadeddata', restorePlayTime) - if (restorePlayTime) { - setCurrentTime(restorePlayTime) - restorePlayTime = 0 - } - if (playMusicInfo.musicInfo && 'source' in playMusicInfo.musicInfo && !playMusicInfo.musicInfo.interval) { console.log(formatPlayTime2(playProgress.maxPlayTime)) @@ -128,12 +122,15 @@ export default () => { } const handleCanplay = () => { - console.log('handleCanplay', mediaBuffer.playTime) + console.log('handleCanplay', mediaBuffer.playTime, restorePlayTime) clearBufferTimeout() if (mediaBuffer.playTime) { let playTime = mediaBuffer.playTime mediaBuffer.playTime = 0 setCurrentTime(playTime) + } else if (restorePlayTime) { + setCurrentTime(restorePlayTime) + restorePlayTime = 0 } } const handleWating = () => { diff --git a/src/renderer/core/useApp/usePlayer/usePlayer.ts b/src/renderer/core/useApp/usePlayer/usePlayer.ts index d2906be0..e9c717dc 100644 --- a/src/renderer/core/useApp/usePlayer/usePlayer.ts +++ b/src/renderer/core/useApp/usePlayer/usePlayer.ts @@ -20,7 +20,7 @@ import { setAllStatus, addPlayedList, clearPlayedList, - resetPlayerMusicInfo, + // resetPlayerMusicInfo, } from '@renderer/store/player/action' import { appSetting } from '@renderer/store/setting' @@ -68,9 +68,12 @@ export default () => { } const handleEnded = () => { // setTimeout(() => { - if (window.lx.isPlayedStop) return setAllStatus(t('player__end')) - resetPlayerMusicInfo() - window.app_event.stop() + if (window.lx.isPlayedStop) { + setAllStatus(t('player__end')) + return + } + // resetPlayerMusicInfo() + // window.app_event.stop() setAllStatus(t('player__end')) void playNext(true) // })