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) => {