新增播放歌曲时阻止电脑休眠(#1563)

This commit is contained in:
lyswhut
2024-01-22 12:42:46 +08:00
parent 47635c95e1
commit b13f10d624
13 changed files with 89 additions and 3 deletions
+22
View File
@@ -3,6 +3,7 @@ import { qualityList } from '@renderer/store'
import { clearPlayedList } from '@renderer/store/player/action'
import { appSetting } from '@renderer/store/setting'
import { dislikeInfo } from '@renderer/store/dislikeList'
import { setPowerSaveBlocker as setPowerSaveBlockerRemote } from '@renderer/utils/ipc'
export const getPlayType = (highQuality: boolean, musicInfo: LX.Music.MusicInfo | LX.Download.ListItem): LX.Quality | null => {
if ('progress' in musicInfo || musicInfo.source == 'local') return null
@@ -41,3 +42,24 @@ export const filterList = async({ playedList, listId, list, playerMusicInfo, isN
return { filteredList: markRawList(filteredList), playerIndex }
}
let timeout: NodeJS.Timer | null = null
const clearTimer = () => {
if (!timeout) return
clearTimeout(timeout)
timeout = null
}
export const setPowerSaveBlocker = (enabled: boolean, force = false) => {
if (enabled) {
clearTimer()
if (!force && !appSetting['player.powerSaveBlocker']) return
setPowerSaveBlockerRemote(true)
} else if (force) {
clearTimer()
setPowerSaveBlockerRemote(false)
} else {
if (timeout) return
timeout = setTimeout(() => {
setPowerSaveBlockerRemote(false)
}, 60_000 * 1.5)
}
}
@@ -32,6 +32,7 @@ import { HOTKEY_PLAYER } from '@common/hotKey'
import { playNext, pause, playPrev, togglePlay, collectMusic, uncollectMusic, dislikeMusic } from '@renderer/core/player'
import usePlaybackRate from './usePlaybackRate'
import useSoundEffect from './useSoundEffect'
import { setPowerSaveBlocker } from '@renderer/core/player/utils'
export default () => {
@@ -53,12 +54,20 @@ export default () => {
void playPrev()
}
const addPowerSaveBlocker = () => {
setPowerSaveBlocker(true)
}
const removePowerSaveBlocker = () => {
setPowerSaveBlocker(false)
}
const setPlayStatus = () => {
setPlay(true)
}
const setPauseStatus = () => {
setPlay(false)
if (window.lx.isPlayedStop) pause()
removePowerSaveBlocker()
}
const handleUpdatePlayInfo = () => {
@@ -88,6 +97,7 @@ export default () => {
setTitle(null)
setAllStatus('')
setStop()
removePowerSaveBlocker()
}
watch(() => appSetting['player.togglePlayMethod'], newValue => {
@@ -112,6 +122,8 @@ export default () => {
window.app_event.on('stop', setStopStatus)
window.app_event.on('musicToggled', handleUpdatePlayInfo)
window.app_event.on('playerCanplay', handleCanplay)
window.app_event.on('playerPlaying', addPowerSaveBlocker)
window.app_event.on('playerEmptied', removePowerSaveBlocker)
window.app_event.on('playerEnded', handleEnded)
@@ -132,7 +144,9 @@ export default () => {
window.app_event.off('error', setPauseStatus)
window.app_event.off('stop', setStopStatus)
window.app_event.off('musicToggled', handleUpdatePlayInfo)
window.app_event.on('playerCanplay', handleCanplay)
window.app_event.off('playerPlaying', addPowerSaveBlocker)
window.app_event.off('playerEmptied', removePowerSaveBlocker)
window.app_event.off('playerCanplay', handleCanplay)
window.app_event.off('playerEnded', handleEnded)
})