mirror of
https://github.com/netbirdio/netbird.git
synced 2026-08-29 11:01:29 +02:00
Quitting the GUI from the tray always sent a Down RPC, dropping the VPN connection with it. Some users want the connection to survive the UI.
36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { useCallback, useEffect, useState } from "react";
|
|
import { Preferences } from "@bindings/services";
|
|
|
|
export const useKeepConnectedOnQuit = () => {
|
|
const [keepConnected, setKeepConnected] = useState<boolean | null>(null);
|
|
|
|
useEffect(() => {
|
|
let cancelled = false;
|
|
Preferences.Get()
|
|
.then((prefs) => {
|
|
if (cancelled) return;
|
|
setKeepConnected(prefs?.keepConnectedOnQuit ?? false);
|
|
})
|
|
.catch((err: unknown) => {
|
|
if (cancelled) return;
|
|
console.warn("[useKeepConnectedOnQuit] load preferences failed", err);
|
|
setKeepConnected(false);
|
|
});
|
|
return () => {
|
|
cancelled = true;
|
|
};
|
|
}, []);
|
|
|
|
const setKeepConnectedOnQuit = useCallback(async (keep: boolean) => {
|
|
setKeepConnected(keep);
|
|
try {
|
|
await Preferences.SetKeepConnectedOnQuit(keep);
|
|
} catch (err: unknown) {
|
|
setKeepConnected(!keep);
|
|
console.error("[useKeepConnectedOnQuit] SetKeepConnectedOnQuit failed", err);
|
|
}
|
|
}, []);
|
|
|
|
return { keepConnected, setKeepConnectedOnQuit };
|
|
};
|