From 986185b9bc73767fa70648e5fe37589a101e6fed Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Tue, 4 Jan 2022 03:46:08 -0500 Subject: [PATCH] begin work on model dropdown --- fakeyou/src/v2/api/tts/ListTtsModels.ts | 1 + .../tts_model_list/MultiDropdownSearch.tsx | 84 ++++++++++++++----- .../tts/tts_model_list/TtsModelListFc.tsx | 6 +- 3 files changed, 71 insertions(+), 20 deletions(-) diff --git a/fakeyou/src/v2/api/tts/ListTtsModels.ts b/fakeyou/src/v2/api/tts/ListTtsModels.ts index 7fcae83bfc..ea6ecb3f24 100644 --- a/fakeyou/src/v2/api/tts/ListTtsModels.ts +++ b/fakeyou/src/v2/api/tts/ListTtsModels.ts @@ -14,6 +14,7 @@ export interface TtsModelListItem { creator_gravatar_hash: string, updatable_slug: string, title: string, + category_tokens: string[], created_at: string, updated_at: string, } 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 1d66c4f2a0..27dc3eb792 100644 --- a/fakeyou/src/v2/view/tts/tts_model_list/MultiDropdownSearch.tsx +++ b/fakeyou/src/v2/view/tts/tts_model_list/MultiDropdownSearch.tsx @@ -1,10 +1,10 @@ -import React, { useEffect, useCallback, useState } from 'react'; +import React, { useEffect, useState } from 'react'; import { TtsCategory } from '../../../api/category/ListTtsCategories'; import { TtsModelListItem } from '../../../api/tts/ListTtsModels'; interface Props { allTtsCategories: TtsCategory[], - //allTtsModels: TtsModelListItem[], + allTtsModels: TtsModelListItem[], } //interface TtsModelLite { @@ -17,33 +17,31 @@ interface Props { // maybeParentCategoryToken?: string, //} -/* -rootCat - .children[] - .allVoices[] - -rootCat - .children[] - .allVoices[] -*/ - export function MultiDropdownSearch(props: Props) { - const { allTtsCategories } = props; + const { allTtsCategories, allTtsModels } = props; - // categoryToken -> category + // Lookup table + // Structure: { categoryToken -> category } const [allCategoriesByTokenMap, setAllCategoriesByTokenMap] = useState>(new Map()); - // [dropdownLevel][categories] // Outer array has length of at least one, one element per