Transition all TTS-related logic, types, and UI to use the new providerRef/providerType model in place of legacy ttsProvider fields. Introduce a centralized tts-provider-policy module to encapsulate provider/model capability checks, default value resolution, and compatibility logic. Update all API routes, contexts, hooks, components, and tests to use providerRef and providerType, ensuring consistent handling of built-in and shared TTS providers. Remove legacy defaultTtsModel config in favor of per-provider defaults and shared provider admin control. Add the showAllProviderModels runtime flag to restrict users to provider default models when desired. BREAKING CHANGE: ttsProvider fields are replaced by providerRef/providerType throughout the codebase; defaultTtsModel config is removed in favor of per-provider defaults.
25 lines
791 B
TypeScript
25 lines
791 B
TypeScript
'use client';
|
|
|
|
import { useConfig } from '@/contexts/ConfigContext';
|
|
import { useTTS } from '@/contexts/TTSContext';
|
|
import { useCallback } from 'react';
|
|
import { VoicesControlBase } from '@/components/player/VoicesControlBase';
|
|
|
|
export const VoicesControl = ({ availableVoices, setVoiceAndRestart }: {
|
|
availableVoices: string[];
|
|
setVoiceAndRestart: (voice: string) => void;
|
|
}) => {
|
|
const { ttsModel, providerType } = useConfig();
|
|
const { voice } = useTTS();
|
|
const onChangeVoice = useCallback((nextVoice: string) => setVoiceAndRestart(nextVoice), [setVoiceAndRestart]);
|
|
|
|
return (
|
|
<VoicesControlBase
|
|
availableVoices={availableVoices}
|
|
voice={voice || ''}
|
|
onChangeVoice={onChangeVoice}
|
|
providerType={providerType}
|
|
ttsModel={ttsModel}
|
|
/>
|
|
);
|
|
}
|