openreplay/spot/entrypoints/popup/utils/audio.ts

24 lines
746 B
TypeScript

import type { AudioDevice } from "../types";
export async function getAudioDevices(): Promise<{
granted: boolean;
denied?: boolean;
audioDevices: AudioDevice[];
}> {
try {
await navigator.mediaDevices.getUserMedia({ audio: true });
const devices = await navigator.mediaDevices.enumerateDevices();
const audioDevices = devices
.filter((device) => device.kind === "audioinput")
.map((device) => ({ label: device.label, id: device.deviceId }));
return { granted: true, audioDevices };
} catch (error) {
console.error("Error accessing audio devices:", error);
const msg = error.message ?? "";
return {
granted: false,
denied: msg.includes("denied"),
audioDevices: [],
};
}
}