import { For } from "solid-js";
import { useMediaDeviceSelect } from "solid-livekit-components";
import { Trans, useLingui } from "@lingui-solid/solid/macro";
import { useState } from "@revolt/state";
import { Checkbox, Column, Slider, Text } from "@revolt/ui";
import {
CategoryButton,
CategoryCollapse,
} from "@revolt/ui/components/design/CategoryButton";
import { Symbol } from "@revolt/ui/components/utils/Symbol";
/**
* Input options
*/
export function VoiceInputOptions() {
return (
);
}
/**
* Select audio input
*/
function SelectMicrophone() {
const { t } = useLingui();
const state = useState();
const { activeDeviceId, devices, setActiveMediaDevice } =
useMediaDeviceSelect({
kind: "audioinput",
});
const activeId = () =>
(activeDeviceId() === "default"
? state.voice.preferredAudioInputDevice
: undefined) ?? activeDeviceId();
const description = () =>
devices().find((device) => device.deviceId === activeId())?.label ??
t`Using default microphone`;
return (
mic}
title={Select audio input}
description={description()}
scrollable
>
{(device) => (
}
onClick={() => {
state.voice.preferredAudioInputDevice = device.deviceId;
setActiveMediaDevice(device.deviceId);
}}
>
{device.label}
)}
);
}
/**
* Select audio output
*/
function SelectSpeaker() {
const { t } = useLingui();
const state = useState();
const { activeDeviceId, devices, setActiveMediaDevice } =
useMediaDeviceSelect({
kind: "audiooutput",
});
const activeId = () =>
(activeDeviceId() === "default"
? state.voice.preferredAudioOutputDevice
: undefined) ?? activeDeviceId();
const description = () =>
devices().find((device) => device.deviceId === activeId())?.label ??
t`Using default speaker`;
return (
speaker}
title={Select audio output}
description={description()}
scrollable
>
{(device) => (
}
onClick={() => {
state.voice.preferredAudioOutputDevice = device.deviceId;
setActiveMediaDevice(device.deviceId);
}}
>
{device.label}
)}
);
}
/**
* Select volume
*/
function VolumeSliders() {
const state = useState();
return (
Output Volume
(state.voice.outputVolume = event.currentTarget.value)
}
labelFormatter={(label) => (label * 100).toFixed(0) + "%"}
/>
);
}