mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-01-09 20:18:50 +01:00
🔊 fix(tts): NotAllowedError (mobile/safari), Unsupported MediaSource type (firefox), Hide Audio Element (#2854)
* fix: hide audio element on mobile * chore: add tts docs link * fix: select voice option on first render * fix: NotAllowedError, prevent async playback for mobile triggers, consolidate MessageAudio code, user user-triggered unmutes * fix: Firefox/unsupported type for MediaSource hack * refactor(STT): make icon red when recording. consolidate logic to AudioRecorder component * fix: revert Redis changes to use separate client for sessions
This commit is contained in:
parent
dcd2e3e62d
commit
35ba4ba1a4
14 changed files with 421 additions and 130 deletions
|
|
@ -1,15 +1,21 @@
|
|||
import { useMemo } from 'react';
|
||||
import { useRecoilState } from 'recoil';
|
||||
import { useMemo, useEffect } from 'react';
|
||||
import Dropdown from '~/components/ui/DropdownNoState';
|
||||
import { useVoicesQuery } from '~/data-provider';
|
||||
import { Dropdown } from '~/components/ui';
|
||||
import { useLocalize } from '~/hooks';
|
||||
import store from '~/store';
|
||||
|
||||
export default function VoiceDropdown() {
|
||||
const localize = useLocalize();
|
||||
const [voice, setVoice] = useRecoilState<string>(store.voice);
|
||||
const [voice, setVoice] = useRecoilState(store.voice);
|
||||
const { data } = useVoicesQuery();
|
||||
|
||||
useEffect(() => {
|
||||
if (!voice && data?.length) {
|
||||
setVoice(data[0]);
|
||||
}
|
||||
}, [voice, data, setVoice]);
|
||||
|
||||
const voiceOptions = useMemo(
|
||||
() => (data ?? []).map((v: string) => ({ value: v, display: v })),
|
||||
[data],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue