新增播放歌曲时阻止电脑休眠(#1563)
This commit is contained in:
@@ -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)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user