From cc2f95b3e76ae6dea494be2e9a5be838af17bc57 Mon Sep 17 00:00:00 2001 From: lyswhut Date: Sat, 1 Apr 2023 13:29:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=B0=83=E7=94=A8=E6=92=AD?= =?UTF-8?q?=E6=94=BE=E6=A8=A1=E5=9D=97=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/common.ts | 2 ++ src/plugins/player/playList.ts | 17 +++++++++++++---- src/plugins/player/utils.ts | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/core/common.ts b/src/core/common.ts index 1d961e2..f39413c 100644 --- a/src/core/common.ts +++ b/src/core/common.ts @@ -14,6 +14,7 @@ import { saveData } from '@/plugins/storage' import { throttle } from '@/utils/common' import { saveFontSize, saveViewPrevState } from '@/utils/data' import { showPactModal as handleShowPactModal } from '@/navigation' +import { hideLyric } from '@/utils/nativeModules/lyricDesktop' const throttleSaveSetting = throttle(() => { @@ -54,6 +55,7 @@ export const exitApp = () => { Promise.all([ hideDesktopLyric(), destroyPlayer(), + hideLyric(), ]).finally(() => { isDestroying = false utilExitApp() diff --git a/src/plugins/player/playList.ts b/src/plugins/player/playList.ts index 7aec8e4..730e0c1 100644 --- a/src/plugins/player/playList.ts +++ b/src/plugins/player/playList.ts @@ -126,8 +126,8 @@ export const updateMetaData = async(musicInfo: LX.Player.MusicInfo, isPlay: bool } } -export const playMusic = async(musicInfo: LX.Player.PlayMusic, url: string, time: number) => { - // console.log(tracks, time) +const handlePlayMusic = async(musicInfo: LX.Player.PlayMusic, url: string, time: number) => { +// console.log(tracks, time) const tracks = buildTracks(musicInfo, url) const track = tracks[0] // await updateMusicInfo(track) @@ -144,8 +144,8 @@ export const playMusic = async(musicInfo: LX.Player.PlayMusic, url: string, time // let startupAutoPlay = settingState.setting['player.startupAutoPlay'] global.lx.restorePlayInfo = null - // TODO startupAutoPlay - // if (startupAutoPlay) store.dispatch(playerAction.playMusic()) + // TODO startupAutoPlay + // if (startupAutoPlay) store.dispatch(playerAction.playMusic()) } else { await TrackPlayer.play() } @@ -162,6 +162,15 @@ export const playMusic = async(musicInfo: LX.Player.PlayMusic, url: string, time void TrackPlayer.remove(Array(queue.length - 2).fill(null).map((_, i) => i)).then(() => list.splice(0, list.length - 2)) } } +let playPromise = Promise.resolve() +let actionId = Math.random() +export const playMusic = (musicInfo: LX.Player.PlayMusic, url: string, time: number) => { + const id = actionId = Math.random() + playPromise.finally(() => { + if (id != actionId) return + playPromise = handlePlayMusic(musicInfo, url, time) + }) +} // let musicId = null // let duration = 0 diff --git a/src/plugins/player/utils.ts b/src/plugins/player/utils.ts index 4570a58..eaa1196 100644 --- a/src/plugins/player/utils.ts +++ b/src/plugins/player/utils.ts @@ -145,7 +145,7 @@ const playMusic = ((fn: (musicInfo: LX.Player.PlayMusic, url: string, time: numb } } })((musicInfo, url, time) => { - void handlePlayMusic(musicInfo, url, time) + handlePlayMusic(musicInfo, url, time) }) export const setResource = (musicInfo: LX.Player.PlayMusic, url: string, duration?: number) => {