diff --git a/packages/fakeyou.com/src/v2/view/_common/SessionTtsInferenceResultsList.tsx b/packages/fakeyou.com/src/v2/view/_common/SessionTtsInferenceResultsList.tsx index 2f35b63462..8632af0baf 100644 --- a/packages/fakeyou.com/src/v2/view/_common/SessionTtsInferenceResultsList.tsx +++ b/packages/fakeyou.com/src/v2/view/_common/SessionTtsInferenceResultsList.tsx @@ -123,7 +123,15 @@ function SessionTtsInferenceResultList(props: Props) { let audioLink = new BucketConfig().getGcsUrl( job.maybeResultPublicBucketMediaPath ); - let ttsPermalink = `/tts/result/${job.maybeResultToken}`; + + // NB(bt,2023-12-07): We're migrating TTS results from the "tts_results" table (token + // prefix "TR:") to the "media_files" table (token prefix "m_") + let ttsPermalink; + if ((job.maybeResultToken || "").startsWith("m_")) { + ttsPermalink = `/media/${job.maybeResultToken}`; + } else { + ttsPermalink = `/tts/result/${job.maybeResultToken}`; + } let wavesurfers = ; @@ -229,7 +237,14 @@ function SessionTtsInferenceResultList(props: Props) { let audioLink = new BucketConfig().getGcsUrl( job.maybePublicBucketWavAudioPath ); - let ttsPermalink = `/tts/result/${job.maybeResultToken}`; + // NB(bt,2023-12-07): We're migrating TTS results from the "tts_results" table (token + // prefix "TR:") to the "media_files" table (token prefix "m_") + let ttsPermalink; + if ((job.maybeResultToken || "").startsWith("m_")) { + ttsPermalink = `/media/${job.maybeResultToken}`; + } else { + ttsPermalink = `/tts/result/${job.maybeResultToken}`; + } let wavesurfers = ; diff --git a/packages/fakeyou.com/src/v2/view/pages/face_animator/FaceAnimator.tsx b/packages/fakeyou.com/src/v2/view/pages/face_animator/FaceAnimator.tsx index 28feb99b68..c6e1b64b09 100644 --- a/packages/fakeyou.com/src/v2/view/pages/face_animator/FaceAnimator.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/face_animator/FaceAnimator.tsx @@ -78,19 +78,52 @@ export default function FaceAnimator({ enqueueInferenceJob, sessionSubscription .then((responses) => { if ("upload_token" in responses.image) { indexSet(3); // set face animator API working page - return EnqueueFaceAnimation({ + + // NB(bt,2023-12-08): We currently still have "media_files" and "media_uploads" as distinct backend record + // types (and APIs for each). One of our ongoing tasks is to phase out media_uploads entirely and make + // everything a media_file. + // + // Since the flow for this code is somewhat rigid, we're going to change the token type based on the token + // structure. Ordinarily this should **NEVER** be done, but hopefully this migration state is short enough + // that we won't need to worry about multiple token formats for long. + // + // Tokens starting with: + // + // m_* => media file tokens + // mu_* => media upload tokens + // + const audioIsMediaFile = responses.audio.upload_token.startsWith("m_"); + const imageIsMediaFile = responses.image.upload_token.startsWith("m_"); + + let request : any = { uuid_idempotency_token: uuidv4(), - audio_source: { - maybe_media_upload_token: responses.audio.upload_token, - }, - image_source: { - maybe_media_upload_token: responses.image.upload_token, - }, + audio_source: undefined, + image_source: undefined, + //audio_source: { + // maybe_media_upload_token: responses.audio.upload_token, + //}, + //image_source: { + // maybe_media_upload_token: responses.image.upload_token, + //}, make_still: still, disable_face_enhancement: disableFaceEnhancement, remove_watermark: removeWatermark, dimensions: frameDimensions, - }); + }; + + if (audioIsMediaFile) { + request.audio_source = { maybe_media_file_token: responses.audio.upload_token }; + } else { + request.audio_source = { maybe_media_upload_token: responses.audio.upload_token }; + } + + if (imageIsMediaFile) { + request.image_source = { maybe_media_file_token: responses.image.upload_token }; + } else { + request.image_source = { maybe_media_upload_token: responses.image.upload_token }; + } + + return EnqueueFaceAnimation(request); } }) .then((res) => {