From c845cfa3fc7ed4e802e6995f0b3d51507edef6dd Mon Sep 17 00:00:00 2001 From: wil Date: Mon, 22 Apr 2024 21:42:57 -0400 Subject: [PATCH] code optimization --- app/components/ListSearchDropdown.tsx | 7 + .../WaveformPlayer.tsx | 0 app/components/index.tsx | 4 +- app/pages/PageEnigma/PageEditor.tsx | 2 - .../comps/DialogueTTS/DialogueTTS.tsx | 243 ------------------ .../comps/DialogueTTS/generateTts.tsx | 50 ---- .../PageEnigma/comps/DialogueTTS/index.tsx | 0 .../PageEnigma/comps/DialogueTTS/types.tsx | 83 ------ .../comps/DialogueTTS/utilities.tsx | 41 --- .../AudioTab.tsx} | 43 +++- .../audioItemElement.tsx | 2 +- .../audioItemElements.tsx | 0 .../comps/SidePanelTabs/AudioTab/index.tsx | 1 + .../pageLibrary.tsx | 0 .../pageTTS.tsx | 39 +-- .../{AudioTabComponent => AudioTab}/types.tsx | 0 .../utilities.tsx | 0 .../SidePanelTabs/AudioTabComponent/index.tsx | 1 - .../comps/SidePanelTabs/itemTabs/AudioTab.tsx | 2 +- 19 files changed, 57 insertions(+), 461 deletions(-) rename app/{pages/PageEnigma/comps/SidePanelTabs/AudioTabComponent => components}/WaveformPlayer.tsx (100%) delete mode 100644 app/pages/PageEnigma/comps/DialogueTTS/DialogueTTS.tsx delete mode 100644 app/pages/PageEnigma/comps/DialogueTTS/generateTts.tsx delete mode 100644 app/pages/PageEnigma/comps/DialogueTTS/index.tsx delete mode 100644 app/pages/PageEnigma/comps/DialogueTTS/types.tsx delete mode 100644 app/pages/PageEnigma/comps/DialogueTTS/utilities.tsx rename app/pages/PageEnigma/comps/SidePanelTabs/{AudioTabComponent/AudioTabComponent.tsx => AudioTab/AudioTab.tsx} (74%) rename app/pages/PageEnigma/comps/SidePanelTabs/{AudioTabComponent => AudioTab}/audioItemElement.tsx (98%) rename app/pages/PageEnigma/comps/SidePanelTabs/{AudioTabComponent => AudioTab}/audioItemElements.tsx (100%) create mode 100644 app/pages/PageEnigma/comps/SidePanelTabs/AudioTab/index.tsx rename app/pages/PageEnigma/comps/SidePanelTabs/{AudioTabComponent => AudioTab}/pageLibrary.tsx (100%) rename app/pages/PageEnigma/comps/SidePanelTabs/{AudioTabComponent => AudioTab}/pageTTS.tsx (87%) rename app/pages/PageEnigma/comps/SidePanelTabs/{AudioTabComponent => AudioTab}/types.tsx (100%) rename app/pages/PageEnigma/comps/SidePanelTabs/{AudioTabComponent => AudioTab}/utilities.tsx (100%) delete mode 100644 app/pages/PageEnigma/comps/SidePanelTabs/AudioTabComponent/index.tsx diff --git a/app/components/ListSearchDropdown.tsx b/app/components/ListSearchDropdown.tsx index cd0dd6dffd..0369c8e39d 100644 --- a/app/components/ListSearchDropdown.tsx +++ b/app/components/ListSearchDropdown.tsx @@ -2,6 +2,7 @@ import { Fragment, useState, useEffect } from 'react' import { Combobox, Transition } from '@headlessui/react' import { faCheck, faChevronDown } from '@fortawesome/pro-solid-svg-icons' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { disableHotkeyInput,enableHotkeyInput,DomLevels } from "~/pages/PageEnigma/store"; interface ListDropdownProps { list: {[key: string] : string}[]; @@ -45,6 +46,12 @@ export const ListSearchDropdown = ({ if(listDisplayKey) return item[listDisplayKey]; else return Object.values(item)[0] }} + onFocus={(e) => { + disableHotkeyInput(DomLevels.INPUT) + }} + onBlur={(e) => { + enableHotkeyInput(DomLevels.INPUT) + }} onChange={(event) => setQuery(event.target.value)} /> diff --git a/app/pages/PageEnigma/comps/SidePanelTabs/AudioTabComponent/WaveformPlayer.tsx b/app/components/WaveformPlayer.tsx similarity index 100% rename from app/pages/PageEnigma/comps/SidePanelTabs/AudioTabComponent/WaveformPlayer.tsx rename to app/components/WaveformPlayer.tsx diff --git a/app/components/index.tsx b/app/components/index.tsx index 2133a89322..96e86d7f31 100644 --- a/app/components/index.tsx +++ b/app/components/index.tsx @@ -13,6 +13,7 @@ import { ListSearchDropdown } from "./ListSearchDropdown" import { LoadingBar } from "./LoadingBar"; import { LoadingDots, LoadingDotsBricks, LoadingDotsTyping } from "./LoadingDots"; import { Pill } from "./Pill"; +import { WaveformPlayer } from "./WaveformPlayer"; export { Button, @@ -31,5 +32,6 @@ export { LoadingDots, LoadingDotsBricks, LoadingDotsTyping, - Pill + Pill, + WaveformPlayer }; diff --git a/app/pages/PageEnigma/PageEditor.tsx b/app/pages/PageEnigma/PageEditor.tsx index d944354378..e542a05a20 100644 --- a/app/pages/PageEnigma/PageEditor.tsx +++ b/app/pages/PageEnigma/PageEditor.tsx @@ -25,7 +25,6 @@ import { useSignals } from "@preact/signals-react/runtime"; import { AppUiContext } from "~/contexts/AppUiContext"; import { pageHeight, pageWidth } from "~/store"; import { TopBar } from "~/modules/TopBar"; -import { DialogueTTS } from "./comps/DialogueTTS/DialogueTTS"; import { Pages } from "~/pages/PageEnigma/constants/page"; import { AssetType } from "./models/assets"; @@ -133,7 +132,6 @@ export const PageEditor = ({ setPage }: Props) => { - {appUiState.viewMode === APPUI_VIEW_MODES.SIDE_BY_SIDE && ( diff --git a/app/pages/PageEnigma/comps/DialogueTTS/DialogueTTS.tsx b/app/pages/PageEnigma/comps/DialogueTTS/DialogueTTS.tsx deleted file mode 100644 index 061e1c02b4..0000000000 --- a/app/pages/PageEnigma/comps/DialogueTTS/DialogueTTS.tsx +++ /dev/null @@ -1,243 +0,0 @@ -import { useCallback, useContext, useEffect, useState } from "react"; -import { useSignalEffect } from "@preact/signals-react/runtime"; -import { v4 as uuidv4 } from "uuid"; -import { - faVolume, - faShuffle, - // faPlay, - faBrainCircuit, -} from "@fortawesome/pro-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { AppUiContext } from "~/contexts/AppUiContext"; -import { APPUI_ACTION_TYPES } from "~/reducers"; -import { - Button, - H2, - H5, - Label, - LoadingDotsTyping, - ListSearchDropdown, - TransitionDialogue, - Textarea -} from "~/components"; -import { ListTtsModels } from "./utilities"; -import { TtsModelListItem } from "./types"; -import { GenerateTtsAudio } from "./generateTts"; -import { addInferenceJob, inferenceJobs} from "../../store/inferenceJobs"; -import { JobState } from "~/hooks/useInferenceJobManager/useInferenceJobManager"; - -type TtsState = { - voice: TtsModelListItem | undefined; - text: string; - hasEnqueued :boolean; - inferenceToken?: string; - inferenceJobType?: string; - hasAudio: boolean; - audioFile?: any; -} - -export const DialogueTTS = ()=>{ - - const [appUiState, dispatchAppUiState] = useContext(AppUiContext); - const [ttsState, setTtsState] = useState({ - voice:undefined, - text:"", - hasEnqueued:false, - hasAudio:false, - }); - - useSignalEffect(()=>{ - console.log(inferenceJobs.value); - if(ttsState.hasEnqueued && ttsState.inferenceToken){ - const found = inferenceJobs.value.find((job)=>job.job_id===ttsState.inferenceToken); - console.log(`finding: ${ttsState.inferenceToken}`); - console.log(found); - if(found?.job_status === JobState.COMPLETE_SUCCESS){ - setTtsState((curr)=>({ - ...curr, - hasAudio: true, - audioFile: found.result - })) - } - } - }); - - const [ttsModels, setTtsModels] = useState>([]); - - const listModels = useCallback(async () => { - const ttsModelsLoaded = ttsModels.length > 0; - if (ttsModelsLoaded) { - return; // Already queried. - } - const models = await ListTtsModels(); - if (models) { - setTtsModels(models); - } - }, []); - - useEffect(() => { - listModels(); - }, [listModels]); - - useEffect(()=> { - if(ttsState.hasEnqueued && ttsState.inferenceToken && ttsState.inferenceJobType){ - console.log(`tts has Enqueued`); - addInferenceJob({ - version:1, - job_id: ttsState.inferenceToken, - job_type: ttsState.inferenceJobType, - job_status: JobState.PENDING, - }) - } - },[ttsState]); - - const requestTts = useCallback( ()=>{ - const modelToken = ttsState.voice ? ttsState.voice.model_token : undefined; - - if(modelToken){ - setTtsState((curr)=>({ - ...curr, - hasEnqueued: true, - inferenceToken: undefined, - inferenceJobType: undefined, - hasAudio: false, - result: undefined, - })); - - const request = { - uuid_idempotency_token: uuidv4(), - tts_model_token: modelToken, - inference_text: ttsState.text, - }; - - GenerateTtsAudio(request).then(res=>{ - if(res.inference_job_token){ - setTtsState((curr)=>({ - ...curr, - inferenceToken: res.inference_job_token, - inferenceJobType: res.inference_job_token_type - })); - } - }); - }else{ - console.log("no voice model selected"); - } - },[ttsState]); - - const handleClose = ()=> { - if(ttsState.hasAudio){ - setTtsState((curr)=>({ - ...curr, - hasEnqueued: false, - inferenceToken: undefined, - inferenceJobType: undefined, - hasAudio: false, - result: undefined, - })); - } - dispatchAppUiState({ - type: APPUI_ACTION_TYPES.CLOSE_DIALOGUE_TTS - }) - }; - - const handleTextInput = ( - e: React.ChangeEvent - )=>{ - setTtsState((curr)=>({ - ...curr, - text: e.target.value, - })); - }; - - const handleOnSelect = (val:string)=>{ - const voiceModel = ttsModels.find((item)=>{ - if (item.title === val) return item - }) - // console.log(val); - // console.log(voiceModel); - setTtsState((curr)=>({ - ...curr, - voice: voiceModel, - })); - } - - return( - - - Generate TTS - - } - className="max-w-xl" - isOpen={appUiState.diagloueTts.isOpen} - onClose={handleClose} - > -
- - -
- -
- -
Randomized Text
-
-
-