import { useEffect } from 'react'; import { useAtomValue } from 'jotai'; import { CallEmbed } from '../plugins/call'; import { settingsAtom } from '../state/settings'; import { buildDenoisePayload } from '../utils/callDenoise'; /** * Apply noise-suppression setting changes to a call that's already running * (the fork's `io.lotus.set_denoise`): switching between off, browser-native * and an ML model, or between models, takes effect without rejoining. The join * itself still carries the settings in the call URL, so the first send is a * no-op fork-side. */ export function useCallDenoise(embed: CallEmbed): void { const { callNoiseSuppression, callDenoiseModel, callDenoiseNativeNS, callDenoiseGate, callDenoiseGateThreshold, } = useAtomValue(settingsAtom); useEffect(() => { embed.control.setDenoise( buildDenoisePayload({ callNoiseSuppression, callDenoiseModel, callDenoiseNativeNS, callDenoiseGate, callDenoiseGateThreshold, }), ); }, [ embed, callNoiseSuppression, callDenoiseModel, callDenoiseNativeNS, callDenoiseGate, callDenoiseGateThreshold, ]); }