diff --git a/app/api.tsx b/app/api.tsx index 0e0bcc77a1..09dd5d1edc 100644 --- a/app/api.tsx +++ b/app/api.tsx @@ -11,4 +11,7 @@ export const inferTts = `${apiHost}/tts/inference`; export const listTts = `${apiHost}/tts/list`; // User Media -export const listMediaByUser = (username:string) => `${apiHost}/v1/media_files/list/user/${username}`; \ No newline at end of file +export const listMediaByUser = (username:string) => `${apiHost}/v1/media_files/list/user/${username}`; + +// Any Media +export const getMediaFileByToken = (fileToken:string) => `${apiHost}/v1/media_files/file/${fileToken}`; \ No newline at end of file diff --git a/app/pages/PageEnigma/comps/SidePanelTabs/AudioTabComponent/AudioTabComponent.tsx b/app/pages/PageEnigma/comps/SidePanelTabs/AudioTabComponent/AudioTabComponent.tsx index c96887f18a..d3efc45118 100644 --- a/app/pages/PageEnigma/comps/SidePanelTabs/AudioTabComponent/AudioTabComponent.tsx +++ b/app/pages/PageEnigma/comps/SidePanelTabs/AudioTabComponent/AudioTabComponent.tsx @@ -4,7 +4,7 @@ import { useSignals, useSignalEffect } from "@preact/signals-react/runtime"; import { AuthenticationContext } from "~/contexts/Authentication"; import { MediaItem, AssetType } from "~/pages/PageEnigma/models"; import { audioItemsFromServer } from "~/pages/PageEnigma/store/mediaFromServer"; -import { ListAudioByUser } from "./listAudioByUser"; +import { ListAudioByUser } from "./utilities"; import { inferenceJobs } from "~/pages/PageEnigma/store/inferenceJobs"; import { JobState } from "~/hooks/useInferenceJobManager/useInferenceJobManager"; diff --git a/app/pages/PageEnigma/comps/SidePanelTabs/AudioTabComponent/listAudioByUser.tsx b/app/pages/PageEnigma/comps/SidePanelTabs/AudioTabComponent/listAudioByUser.tsx deleted file mode 100644 index 1c3a0b6c11..0000000000 --- a/app/pages/PageEnigma/comps/SidePanelTabs/AudioTabComponent/listAudioByUser.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import { listMediaByUser } from "~/api"; -import { - MediaFileType, - MediaFileClass, - MediaFileSubtype, - UserDetailsLight, - WeightCategory, - WeightType -} from "./types"; - - -export interface MediaFile { - token: string; - media_type: MediaFileType; - media_class: MediaFileClass | null; - maybe_media_subtype: MediaFileSubtype | null; - public_bucket_path: string; - maybe_engine_extension: string | null; - maybe_batch_token: string; - maybe_title: string | null; - maybe_original_filename: string | null; - maybe_creator_user: UserDetailsLight | null; - maybe_prompt_token: string | null; - creator_set_visibility: string; - created_at: Date; - updated_at: Date; - maybe_model_weight_info: { - title: string; - weight_token: string; - weight_category: WeightCategory; - weight_type: WeightType; - maybe_weight_creator: UserDetailsLight; - maybe_cover_image_public_bucket_path: string; - }; -} - -export const ListAudioByUser = async(username:string, sessionToken: string) => { - return await fetch(listMediaByUser(username),{ - method: 'GET', - headers: { - "Accept": "application/json", - 'session': sessionToken, - }, - // credentials: 'include' - }) - .then(res => res.json()) - .then(res => { - if(res.success && res.results){ - return res.results.filter((item:MediaFile)=>item['media_type']==='audio'); - }else{ - Promise.reject(); - } - }) - .catch(e => ({ success : false })); -} - diff --git a/app/pages/PageEnigma/comps/SidePanelTabs/AudioTabComponent/pageTTS.tsx b/app/pages/PageEnigma/comps/SidePanelTabs/AudioTabComponent/pageTTS.tsx index 3fac489c6b..fd641f5bbf 100644 --- a/app/pages/PageEnigma/comps/SidePanelTabs/AudioTabComponent/pageTTS.tsx +++ b/app/pages/PageEnigma/comps/SidePanelTabs/AudioTabComponent/pageTTS.tsx @@ -18,8 +18,10 @@ import { TtsModelListItem, GenerateTtsAudioResponse } from "~/pages/PageEnigma/m import { addInferenceJob, inferenceJobs} from "../../../store/inferenceJobs"; import { JobState } from "~/hooks/useInferenceJobManager/useInferenceJobManager"; -import { ListTtsModels, GenerateTtsAudio } from "./utilities"; +import { ListTtsModels, GenerateTtsAudio, GetMediaFileByToken } from "./utilities"; import { AudioTabPages } from "./types"; +import { AudioItemElement } from "./audioItemElement"; +import { MediaItem, AssetType } from "~/pages/PageEnigma/models"; type TtsState = { voice: TtsModelListItem | undefined; @@ -27,10 +29,17 @@ type TtsState = { hasEnqueued :boolean; inferenceToken?: string; inferenceJobType?: string; - hasAudio: boolean; - audioFile?: any; + hasTtsResult: boolean; } - +const initialState:TtsState = + { + voice:undefined, + text:"", + hasEnqueued:false, + inferenceJobType: undefined, + inferenceToken: undefined, + hasTtsResult:false, + }; export const PageTTS =({ changePage, @@ -39,12 +48,9 @@ export const PageTTS =({ changePage: (newPage:AudioTabPages) => void; sessionToken: string; })=>{ - const [ttsState, setTtsState] = useState({ - voice:undefined, - text:"", - hasEnqueued:false, - hasAudio:false, - }); + const [ttsState, setTtsState] = useState(initialState); + + const [ttsResultFile, setTtsResultFile] = useState(); useSignalEffect(()=>{ console.log(inferenceJobs.value); @@ -55,9 +61,26 @@ export const PageTTS =({ if(found?.job_status === JobState.COMPLETE_SUCCESS){ setTtsState((curr)=>({ ...curr, - hasAudio: true, - audioFile: found.result + hasTtsResult: true, })) + GetMediaFileByToken(found.result.entity_token, sessionToken) + .then(res=>{ + console.log(res); + const morphedItem:MediaItem = { + version: 1, + type: AssetType.AUDIO, + media_id: res.media_file.token, + object_uuid: res.media_file.token, + name: ttsState.voice?.title || '', + description: ttsState.text, + publicBucketPath: res.media_file.public_bucket_path, + length: 25, + thumbnail: "/resources/placeholders/audio_placeholder.png", + isMine: true, + // isBookmarked?: boolean; + } + setTtsResultFile(morphedItem); + }) } } }); @@ -172,10 +195,10 @@ export const PageTTS =({ />
- {!ttsState.hasAudio && !ttsState.hasEnqueued && + {!ttsState.hasTtsResult && !ttsState.hasEnqueued && } - {!ttsState.hasAudio && ttsState.hasEnqueued && + {!ttsState.hasTtsResult && ttsState.hasEnqueued && } - { ttsState.hasAudio && -
-

Success!! Please Check "My Audio" in the Audio Panel.

-
+ { ttsResultFile && + }
@@ -199,7 +220,7 @@ export const PageTTS =({ { ttsState.hasEnqueued &&