add toggle for app-suspension for powersave block (#1992)

This commit is contained in:
jeffvli
2026-05-01 21:24:45 -07:00
parent 3b2aab74ac
commit 323130a877
5 changed files with 51 additions and 10 deletions
@@ -8,17 +8,17 @@ const ipc = isElectron() ? window.api.ipc : null;
export const usePowerSaveBlocker = () => {
const status = usePlayerStatus();
const { preventSleepOnPlayback } = useWindowSettings();
const { preventSleepOnPlayback, preventSuspendOnPlayback } = useWindowSettings();
const startPowerSaveBlocker = useCallback(async () => {
if (!ipc) return;
try {
await ipc.invoke('power-save-blocker-start');
await ipc.invoke('power-save-blocker-start', { full: preventSleepOnPlayback });
} catch (error) {
console.error('Failed to start power save blocker:', error);
}
}, []);
}, [preventSleepOnPlayback]);
const stopPowerSaveBlocker = useCallback(async () => {
if (!ipc) return;
@@ -31,16 +31,21 @@ export const usePowerSaveBlocker = () => {
}, []);
useEffect(() => {
if (!preventSleepOnPlayback) return;
if (!preventSleepOnPlayback || !preventSuspendOnPlayback) return;
if (status === PlayerStatus.PLAYING) {
startPowerSaveBlocker();
} else {
stopPowerSaveBlocker();
}
}, [status, preventSleepOnPlayback, startPowerSaveBlocker, stopPowerSaveBlocker]);
}, [
status,
preventSleepOnPlayback,
startPowerSaveBlocker,
stopPowerSaveBlocker,
preventSuspendOnPlayback,
]);
// Clean up on unmount
useEffect(() => {
return () => {
stopPowerSaveBlocker();
@@ -56,8 +61,11 @@ const PowerSaveBlockerHookInner = () => {
export const PowerSaveBlockerHook = () => {
const isElectronEnv = isElectron();
const preventSleepOnPlayback = useSettingsStore((state) => state.window.preventSleepOnPlayback);
const preventSuspendOnPlayback = useSettingsStore(
(state) => state.window.preventSuspendOnPlayback,
);
if (!isElectronEnv || !preventSleepOnPlayback) {
if (!isElectronEnv || !preventSleepOnPlayback || !preventSuspendOnPlayback) {
return null;
}