24 lines
746 B
TypeScript
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: [],
|
|
};
|
|
}
|
|
}
|