mirror of
https://github.com/jeffvli/feishin.git
synced 2026-06-21 11:24:26 +02:00
add toggle for app-suspension for powersave block (#1992)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user