diff --git a/fakeyou/src/v2/view/tts/tts_model_list/MultiDropdownSearch.tsx b/fakeyou/src/v2/view/tts/tts_model_list/MultiDropdownSearch.tsx index 7d461bd675..0a4d3354fb 100644 --- a/fakeyou/src/v2/view/tts/tts_model_list/MultiDropdownSearch.tsx +++ b/fakeyou/src/v2/view/tts/tts_model_list/MultiDropdownSearch.tsx @@ -37,7 +37,7 @@ export function MultiDropdownSearch(props: Props) { // A TTS voice is attached to every category up the tree from the leaf. // We recursively build this, 1) to ensure we can access a voice at all levels // of specificity, and 2) to prune empty categories. - const [ttsModelByCategoryToken, setTtsModelByCategoryToken] = useState>(new Map()); + const [ttsModelsByCategoryToken, setTtsModelsByCategoryToken] = useState>(new Map()); // TODO: Handle empty category list useEffect(() => { @@ -82,7 +82,7 @@ export function MultiDropdownSearch(props: Props) { }) }); }); - setTtsModelByCategoryToken(categoriesToTtsModelTokens); + setTtsModelsByCategoryToken(categoriesToTtsModelTokens); }, [allTtsCategories, allTtsModels]); @@ -160,6 +160,10 @@ export function MultiDropdownSearch(props: Props) { dropdownOptions.push(); currentDropdownCategories.forEach(category => { + const models = ttsModelsByCategoryToken.get(category.category_token); + if (models === undefined || models.length === 0) { + return; // If there are no models at the leaves, skip + } dropdownOptions.push(