mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-30 06:32:24 +00:00
32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import debug from 'debug';
|
|
import { useEffect, useRef } from 'react';
|
|
|
|
import { openhumanGetVoiceServerSettings, syncNotchVisibility } from '../utils/tauriCommands';
|
|
|
|
const log = debug('notch:boot');
|
|
|
|
/**
|
|
* Sync the notch indicator to the persisted always-on listening state once the
|
|
* core is ready — runs **once per boot**.
|
|
*
|
|
* The notch is the always-on listening HUD, so it stays hidden unless always-on
|
|
* listening is enabled; it is no longer auto-shown unconditionally by the Tauri
|
|
* shell (see `notch_window` / `dispatch_notch_on_main`). Failures are swallowed
|
|
* (debug-logged) — notch visibility is cosmetic and must never block boot.
|
|
*/
|
|
export function useNotchBootSync(isBootstrapping: boolean): void {
|
|
const notchSyncedRef = useRef(false);
|
|
useEffect(() => {
|
|
if (isBootstrapping || notchSyncedRef.current) return;
|
|
notchSyncedRef.current = true;
|
|
void (async () => {
|
|
try {
|
|
const res = await openhumanGetVoiceServerSettings();
|
|
await syncNotchVisibility(res.result.always_on_enabled);
|
|
} catch (err) {
|
|
log('boot visibility sync failed: %o', err);
|
|
}
|
|
})();
|
|
}, [isBootstrapping]);
|
|
}
|