diff --git a/src/renderer/components/audio-player/index.tsx b/src/renderer/components/audio-player/index.tsx index 1c20b842a..d1a5ac3d8 100644 --- a/src/renderer/components/audio-player/index.tsx +++ b/src/renderer/components/audio-player/index.tsx @@ -78,13 +78,13 @@ export const AudioPlayer = forwardRef( useEffect(() => { if (status === PlayerStatus.PLAYING) { if (currentPlayer === 1) { - player1Ref.current.getInternalPlayer().play(); + player1Ref.current?.getInternalPlayer()?.play(); } else { - player2Ref.current.getInternalPlayer().play(); + player2Ref.current?.getInternalPlayer()?.play(); } } else { - player1Ref.current.getInternalPlayer().pause(); - player2Ref.current.getInternalPlayer().pause(); + player1Ref.current?.getInternalPlayer()?.pause(); + player2Ref.current?.getInternalPlayer()?.pause(); } }, [currentPlayer, status]); diff --git a/src/renderer/features/player/hooks/use-center-controls.ts b/src/renderer/features/player/hooks/use-center-controls.ts index 24897d5a4..f72f585b0 100644 --- a/src/renderer/features/player/hooks/use-center-controls.ts +++ b/src/renderer/features/player/hooks/use-center-controls.ts @@ -113,24 +113,12 @@ export const useCenterControls = (args: { playersRef: any }) => { }, [repeat, setRepeat]); const checkIsLastTrack = useCallback(() => { - const currentIndex = - shuffle === PlayerShuffle.NONE - ? usePlayerStore.getState().current.index - : usePlayerStore.getState().current.shuffledIndex; - - const queueLength = queue.length; - - return currentIndex >= queueLength - 1; - }, [queue.length, shuffle]); + return usePlayerStore.getState().checkIsLastTrack(); + }, []); const checkIsFirstTrack = useCallback(() => { - const currentIndex = - shuffle === PlayerShuffle.NONE - ? usePlayerStore.getState().current.index - : usePlayerStore.getState().current.shuffledIndex; - - return currentIndex === 0; - }, [shuffle]); + return usePlayerStore.getState().checkIsFirstTrack(); + }, []); const handleAutoNext = useCallback(() => { const isLastTrack = checkIsLastTrack(); @@ -162,6 +150,7 @@ export const useCenterControls = (args: { playersRef: any }) => { web: () => { if (isLastTrack) { resetPlayers(); + pause(); } else { autoNext(); resetPlayers();