in src/providers/VoiceFocusProvider/index.tsx [139:176]
async function createVoiceFocusDeviceTransformer(
spec: VoiceFocusSpec | undefined,
options: VoiceFocusDeviceOptions | undefined,
canceled: () => boolean,
createMeetingResponse?: JoinMeetingInfo | undefined
): Promise<VoiceFocusDeviceTransformer> {
const fetch = VoiceFocusDeviceTransformer.create(
spec,
options,
undefined,
createMeetingResponse
);
fetch
.then((transformer) => {
// A different request arrived afterwards. Drop this one on the floor
// using the cancellation mechanism of `useEffect`.
if (canceled()) {
return;
}
currentPromise = undefined;
setVoiceFocusTransformer(transformer);
setVoiceFocusDevice(null);
setIsVoiceFocusSupported(transformer && transformer.isSupported());
})
.catch(() => {
if (canceled()) {
return;
}
currentPromise = undefined;
setVoiceFocusTransformer(null);
setVoiceFocusDevice(null);
setIsVoiceFocusSupported(false);
});
return (currentPromise = fetch);
}