From 13af7b0664d48c4bd4850cd2ff66a0fb00dcb550 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Wed, 27 Aug 2025 01:09:42 -0400 Subject: [PATCH] fix environmental cdn issues with dev (#793) --- ...ybe_handle_text_to_image_complete_event.rs | 1 - .../media/media_links_builder.rs | 45 +++++++------------ .../batch_get_inference_job_status_handler.rs | 19 ++++++-- .../get/get_inference_job_status_handler.rs | 14 ++++-- .../list/list_session_jobs_handler.rs | 13 ++++-- .../get/batch_get_media_files_handler.rs | 6 ++- ...tch_generated_redux_media_files_handler.rs | 6 ++- .../list/list_featured_media_files_handler.rs | 6 ++- ...list_media_files_by_batch_token_handler.rs | 6 ++- .../list/list_media_files_handler.rs | 6 ++- .../list/list_pinned_media_files_handler.rs | 6 ++- .../search_featured_media_files_handler.rs | 6 ++- .../search_session_media_files_handler.rs | 6 ++- .../list_user_bookmarks_for_user_handler.rs | 5 ++- .../app/src/pages/PageImage/TextToImage.tsx | 1 + 15 files changed, 97 insertions(+), 49 deletions(-) diff --git a/crates/desktop/artcraft/src/services/midjourney/threads/events/maybe_handle_text_to_image_complete_event.rs b/crates/desktop/artcraft/src/services/midjourney/threads/events/maybe_handle_text_to_image_complete_event.rs index a081f9b869..6c93fb1eda 100644 --- a/crates/desktop/artcraft/src/services/midjourney/threads/events/maybe_handle_text_to_image_complete_event.rs +++ b/crates/desktop/artcraft/src/services/midjourney/threads/events/maybe_handle_text_to_image_complete_event.rs @@ -40,7 +40,6 @@ pub async fn maybe_handle_text_to_image_complete_event( batch_token, ).await?; - if let Err(err) = event.send(&app) { error!("Failed to send TextToImageGenerationCompleteEvent: {:?}", err); // Fail open } diff --git a/crates/service/web/storyteller_web/src/http_server/common_responses/media/media_links_builder.rs b/crates/service/web/storyteller_web/src/http_server/common_responses/media/media_links_builder.rs index 211dffa92d..082a121cfb 100644 --- a/crates/service/web/storyteller_web/src/http_server/common_responses/media/media_links_builder.rs +++ b/crates/service/web/storyteller_web/src/http_server/common_responses/media/media_links_builder.rs @@ -16,21 +16,6 @@ const QUALITY : u8 = 95; pub struct MediaLinksBuilder {} impl MediaLinksBuilder { - #[deprecated(note = "we need to start passing the domain and the server environment to generate the CDN")] - pub fn from_media_path( - domain: MediaDomain, - bucket_path: &MediaFileBucketPath, - ) -> MediaLinks { - Self::from_media_path_and_env(domain, ServerEnvironment::Production, bucket_path) - } - - #[deprecated(note = "we need to start passing the domain and the server environment to generate the CDN")] - pub fn from_rooted_path( - domain: MediaDomain, - rooted_path: &str, - ) -> MediaLinks { - Self::from_rooted_path_and_env(domain, ServerEnvironment::Production, rooted_path) - } pub fn from_media_path_and_env( domain: MediaDomain, @@ -148,7 +133,7 @@ use crate::http_server::common_responses::media::media_links_builder::MediaLinks #[test] fn wav_file() { - let links = MediaLinksBuilder::from_rooted_path(DOMAIN, "/foo/bar.wav"); + let links = MediaLinksBuilder::from_rooted_path_and_env(DOMAIN, ServerEnvironment::Production, "/foo/bar.wav"); assert_eq!(links.cdn_url.as_str(), "https://cdn-2.fakeyou.com/foo/bar.wav"); assert_eq!(links.maybe_thumbnail_template, None); assert_eq!(links.maybe_video_previews, None); @@ -156,7 +141,7 @@ use crate::http_server::common_responses::media::media_links_builder::MediaLinks #[test] fn glb_file() { - let links = MediaLinksBuilder::from_rooted_path(DOMAIN, "/foo/bar.glb"); + let links = MediaLinksBuilder::from_rooted_path_and_env(DOMAIN, ServerEnvironment::Production, "/foo/bar.glb"); assert_eq!(links.cdn_url.as_str(), "https://cdn-2.fakeyou.com/foo/bar.glb"); assert_eq!(links.maybe_thumbnail_template, None); assert_eq!(links.maybe_video_previews, None); @@ -164,7 +149,7 @@ use crate::http_server::common_responses::media::media_links_builder::MediaLinks #[test] fn jpg_image() { - let links = MediaLinksBuilder::from_rooted_path(DOMAIN, "/foo/bar.jpg"); + let links = MediaLinksBuilder::from_rooted_path_and_env(DOMAIN, ServerEnvironment::Production, "/foo/bar.jpg"); assert_eq!(links.cdn_url.as_str(), "https://cdn-2.fakeyou.com/foo/bar.jpg"); assert_eq!(links.maybe_thumbnail_template, Some("https://cdn-2.fakeyou.com/cdn-cgi/image/width={WIDTH},quality=95/foo/bar.jpg".to_string())); assert_eq!(links.maybe_video_previews, None); @@ -172,7 +157,7 @@ use crate::http_server::common_responses::media::media_links_builder::MediaLinks #[test] fn mp4_video() { - let links = MediaLinksBuilder::from_rooted_path(DOMAIN, "/foo/bar.mp4"); + let links = MediaLinksBuilder::from_rooted_path_and_env(DOMAIN, ServerEnvironment::Production, "/foo/bar.mp4"); assert_eq!(links.cdn_url.as_str(), "https://cdn-2.fakeyou.com/foo/bar.mp4"); assert_eq!(links.maybe_thumbnail_template, None); let video_previews = links.maybe_video_previews.expect("should have previews"); @@ -190,7 +175,7 @@ use crate::http_server::common_responses::media::media_links_builder::MediaLinks fn wav_file() { // https://storage.googleapis.com/vocodes-public/media/9/4/a/2/7/94a27nmbd0bqmd10tg0pp3hz45zytf67/fakeyou_94a27nmbd0bqmd10tg0pp3hz45zytf67.wav let media_path = MediaFileBucketPath::from_object_hash("94a27nmbd0bqmd10tg0pp3hz45zytf67", Some("fakeyou_"), Some(".wav")); - let links = MediaLinksBuilder::from_media_path(DOMAIN, &media_path); + let links = MediaLinksBuilder::from_media_path_and_env(DOMAIN, ServerEnvironment::Production, &media_path); assert_eq!(links.cdn_url.as_str(), "https://cdn-2.fakeyou.com/media/9/4/a/2/7/94a27nmbd0bqmd10tg0pp3hz45zytf67/fakeyou_94a27nmbd0bqmd10tg0pp3hz45zytf67.wav"); assert_eq!(links.maybe_thumbnail_template, None); assert_eq!(links.maybe_video_previews, None); @@ -200,7 +185,7 @@ use crate::http_server::common_responses::media::media_links_builder::MediaLinks fn png_image() { /// https://storage.googleapis.com/vocodes-public/media/3/7/m/b/3/37mb3gh8fmj85y21thvbv08bzv24atjt/upload_37mb3gh8fmj85y21thvbv08bzv24atjt.png let media_path = MediaFileBucketPath::from_object_hash("37mb3gh8fmj85y21thvbv08bzv24atjt", Some("upload_"), Some(".png")); - let links = MediaLinksBuilder::from_media_path(DOMAIN, &media_path); + let links = MediaLinksBuilder::from_media_path_and_env(DOMAIN, ServerEnvironment::Production, &media_path); assert_eq!(links.cdn_url.as_str(), "https://cdn-2.fakeyou.com/media/3/7/m/b/3/37mb3gh8fmj85y21thvbv08bzv24atjt/upload_37mb3gh8fmj85y21thvbv08bzv24atjt.png"); assert_eq!(links.maybe_thumbnail_template, Some("https://cdn-2.fakeyou.com/cdn-cgi/image/width={WIDTH},quality=95/media/3/7/m/b/3/37mb3gh8fmj85y21thvbv08bzv24atjt/upload_37mb3gh8fmj85y21thvbv08bzv24atjt.png".to_string())); assert_eq!(links.maybe_video_previews, None); @@ -210,7 +195,7 @@ use crate::http_server::common_responses::media::media_links_builder::MediaLinks fn mp4_video() { // https://storage.googleapis.com/vocodes-public/media/t/6/c/n/y/t6cnyw4g3e8k7carkk2bvrt6nd3fycjv/storyteller_t6cnyw4g3e8k7carkk2bvrt6nd3fycjv.mp4 let media_path = MediaFileBucketPath::from_object_hash("t6cnyw4g3e8k7carkk2bvrt6nd3fycjv", Some("storyteller_"), Some(".mp4")); - let links = MediaLinksBuilder::from_media_path(DOMAIN, &media_path); + let links = MediaLinksBuilder::from_media_path_and_env(DOMAIN, ServerEnvironment::Production, &media_path); assert_eq!(links.cdn_url.as_str(), "https://cdn-2.fakeyou.com/media/t/6/c/n/y/t6cnyw4g3e8k7carkk2bvrt6nd3fycjv/storyteller_t6cnyw4g3e8k7carkk2bvrt6nd3fycjv.mp4"); assert_eq!(links.maybe_thumbnail_template, None); let video_previews = links.maybe_video_previews.expect("should have previews"); @@ -229,10 +214,11 @@ use crate::http_server::common_responses::media::media_links_builder::MediaLinks mod rooted_path { use super::*; + use server_environment::ServerEnvironment; #[test] fn wav_file() { - let links = MediaLinksBuilder::from_rooted_path(DOMAIN, "/foo/bar.wav"); + let links = MediaLinksBuilder::from_rooted_path_and_env(DOMAIN, ServerEnvironment::Production, "/foo/bar.wav"); assert_eq!(links.cdn_url.as_str(), "https://cdn.storyteller.ai/foo/bar.wav"); assert_eq!(links.maybe_thumbnail_template, None); assert_eq!(links.maybe_video_previews, None); @@ -240,7 +226,7 @@ use crate::http_server::common_responses::media::media_links_builder::MediaLinks #[test] fn glb_file() { - let links = MediaLinksBuilder::from_rooted_path(DOMAIN, "/foo/bar.glb"); + let links = MediaLinksBuilder::from_rooted_path_and_env(DOMAIN, ServerEnvironment::Production, "/foo/bar.glb"); assert_eq!(links.cdn_url.as_str(), "https://cdn.storyteller.ai/foo/bar.glb"); assert_eq!(links.maybe_thumbnail_template, None); assert_eq!(links.maybe_video_previews, None); @@ -248,7 +234,7 @@ use crate::http_server::common_responses::media::media_links_builder::MediaLinks #[test] fn jpg_image() { - let links = MediaLinksBuilder::from_rooted_path(DOMAIN, "/foo/bar.jpg"); + let links = MediaLinksBuilder::from_rooted_path_and_env(DOMAIN, ServerEnvironment::Production, "/foo/bar.jpg"); assert_eq!(links.cdn_url.as_str(), "https://cdn.storyteller.ai/foo/bar.jpg"); assert_eq!(links.maybe_thumbnail_template, Some("https://cdn.storyteller.ai/cdn-cgi/image/width={WIDTH},quality=95/foo/bar.jpg".to_string())); assert_eq!(links.maybe_video_previews, None); @@ -256,7 +242,7 @@ use crate::http_server::common_responses::media::media_links_builder::MediaLinks #[test] fn mp4_video() { - let links = MediaLinksBuilder::from_rooted_path(DOMAIN, "/foo/bar.mp4"); + let links = MediaLinksBuilder::from_rooted_path_and_env(DOMAIN, ServerEnvironment::Production, "/foo/bar.mp4"); assert_eq!(links.cdn_url.as_str(), "https://cdn.storyteller.ai/foo/bar.mp4"); assert_eq!(links.maybe_thumbnail_template, None); let video_previews = links.maybe_video_previews.expect("should have previews"); @@ -269,12 +255,13 @@ use crate::http_server::common_responses::media::media_links_builder::MediaLinks mod media_path { use super::*; + use server_environment::ServerEnvironment; #[test] fn wav_file() { // https://storage.googleapis.com/vocodes-public/media/9/4/a/2/7/94a27nmbd0bqmd10tg0pp3hz45zytf67/fakeyou_94a27nmbd0bqmd10tg0pp3hz45zytf67.wav let media_path = MediaFileBucketPath::from_object_hash("94a27nmbd0bqmd10tg0pp3hz45zytf67", Some("fakeyou_"), Some(".wav")); - let links = MediaLinksBuilder::from_media_path(DOMAIN, &media_path); + let links = MediaLinksBuilder::from_media_path_and_env(DOMAIN, ServerEnvironment::Production, &media_path); assert_eq!(links.cdn_url.as_str(), "https://cdn.storyteller.ai/media/9/4/a/2/7/94a27nmbd0bqmd10tg0pp3hz45zytf67/fakeyou_94a27nmbd0bqmd10tg0pp3hz45zytf67.wav"); assert_eq!(links.maybe_thumbnail_template, None); assert_eq!(links.maybe_video_previews, None); @@ -284,7 +271,7 @@ use crate::http_server::common_responses::media::media_links_builder::MediaLinks fn png_image() { /// https://storage.googleapis.com/vocodes-public/media/3/7/m/b/3/37mb3gh8fmj85y21thvbv08bzv24atjt/upload_37mb3gh8fmj85y21thvbv08bzv24atjt.png let media_path = MediaFileBucketPath::from_object_hash("37mb3gh8fmj85y21thvbv08bzv24atjt", Some("upload_"), Some(".png")); - let links = MediaLinksBuilder::from_media_path(DOMAIN, &media_path); + let links = MediaLinksBuilder::from_media_path_and_env(DOMAIN, ServerEnvironment::Production, &media_path); assert_eq!(links.cdn_url.as_str(), "https://cdn.storyteller.ai/media/3/7/m/b/3/37mb3gh8fmj85y21thvbv08bzv24atjt/upload_37mb3gh8fmj85y21thvbv08bzv24atjt.png"); assert_eq!(links.maybe_thumbnail_template, Some("https://cdn.storyteller.ai/cdn-cgi/image/width={WIDTH},quality=95/media/3/7/m/b/3/37mb3gh8fmj85y21thvbv08bzv24atjt/upload_37mb3gh8fmj85y21thvbv08bzv24atjt.png".to_string())); assert_eq!(links.maybe_video_previews, None); @@ -294,7 +281,7 @@ use crate::http_server::common_responses::media::media_links_builder::MediaLinks fn mp4_video() { // https://storage.googleapis.com/vocodes-public/media/t/6/c/n/y/t6cnyw4g3e8k7carkk2bvrt6nd3fycjv/storyteller_t6cnyw4g3e8k7carkk2bvrt6nd3fycjv.mp4 let media_path = MediaFileBucketPath::from_object_hash("t6cnyw4g3e8k7carkk2bvrt6nd3fycjv", Some("storyteller_"), Some(".mp4")); - let links = MediaLinksBuilder::from_media_path(DOMAIN, &media_path); + let links = MediaLinksBuilder::from_media_path_and_env(DOMAIN, ServerEnvironment::Production, &media_path); assert_eq!(links.cdn_url.as_str(), "https://cdn.storyteller.ai/media/t/6/c/n/y/t6cnyw4g3e8k7carkk2bvrt6nd3fycjv/storyteller_t6cnyw4g3e8k7carkk2bvrt6nd3fycjv.mp4"); assert_eq!(links.maybe_thumbnail_template, None); let video_previews = links.maybe_video_previews.expect("should have previews"); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/batch_get_inference_job_status_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/batch_get_inference_job_status_handler.rs index c47051462a..3139943128 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/batch_get_inference_job_status_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/batch_get_inference_job_status_handler.rs @@ -31,6 +31,7 @@ use mysql_queries::queries::generic_inference::web::batch_get_inference_job_stat use mysql_queries::queries::generic_inference::web::job_status::GenericInferenceJobStatus; use r2d2_redis::redis::Commands; use redis_common::redis_keys::RedisKeys; +use server_environment::ServerEnvironment; use tokens::tokens::generic_inference_jobs::InferenceJobToken; use utoipa::{IntoParams, ToSchema}; @@ -203,7 +204,11 @@ pub async fn batch_get_inference_job_status_handler( if tokens.is_empty() { // NB: MediaDomain doesn't matter since it's an empty list. - return Ok(records_to_response(Vec::new(), MediaDomain::Storyteller)); + return Ok(records_to_response( + Vec::new(), + server_state.server_environment, + MediaDomain::Storyteller + )); } // NB: Since this is publicly exposed, we don't query sensitive data. @@ -249,18 +254,19 @@ pub async fn batch_get_inference_job_status_handler( let media_domain = get_media_domain(&http_request); - Ok(records_to_response(records, media_domain)) + Ok(records_to_response(records, server_state.server_environment, media_domain)) } fn records_to_response( records: Vec, + server_environment: ServerEnvironment, media_domain: MediaDomain, ) -> Json { Json(BatchGetInferenceJobStatusSuccessResponse { success: true, job_states: records.into_iter() .map(|record| { - db_record_to_response_payload(record, None, media_domain) + db_record_to_response_payload(record, None, server_environment, media_domain) }) .collect::>(), }) @@ -269,6 +275,7 @@ fn records_to_response( fn db_record_to_response_payload( record: GenericInferenceJobStatus, maybe_extra_status_description: Option, + server_environment: ServerEnvironment, media_domain: MediaDomain, ) -> BatchInferenceJobStatusResponsePayload { let inference_category = record.request_details.inference_category; @@ -374,7 +381,11 @@ fn db_record_to_response_payload( BatchResultDetailsResponse { entity_type: result_details.entity_type, entity_token: result_details.entity_token, - media_links: MediaLinksBuilder::from_rooted_path(media_domain, &public_bucket_media_path), + media_links: MediaLinksBuilder::from_rooted_path_and_env( + media_domain, + server_environment, + &public_bucket_media_path + ), maybe_public_bucket_media_path: Some(public_bucket_media_path), maybe_successfully_completed_at: result_details.maybe_successfully_completed_at, } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/get_inference_job_status_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/get_inference_job_status_handler.rs index 9c73362bfe..6022d486e6 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/get_inference_job_status_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/get_inference_job_status_handler.rs @@ -29,6 +29,7 @@ use mysql_queries::queries::generic_inference::web::get_inference_job_status::ge use mysql_queries::queries::generic_inference::web::job_status::GenericInferenceJobStatus; use r2d2_redis::redis::{Commands, RedisResult}; use redis_common::redis_keys::RedisKeys; +use server_environment::ServerEnvironment; use tokens::tokens::generic_inference_jobs::InferenceJobToken; use utoipa::ToSchema; @@ -251,6 +252,7 @@ pub async fn get_inference_job_status_handler( let record_for_response = record_to_payload( record, maybe_extra_status_description, + server_state.server_environment, media_domain, ); @@ -263,6 +265,7 @@ pub async fn get_inference_job_status_handler( fn record_to_payload( record: GenericInferenceJobStatus, maybe_extra_status_description: Option, + server_environment: ServerEnvironment, media_domain: MediaDomain, ) -> InferenceJobStatusResponsePayload { let inference_category = record.request_details.inference_category; @@ -368,7 +371,11 @@ fn record_to_payload( ResultDetailsResponse { entity_type: result_details.entity_type, entity_token: result_details.entity_token, - media_links: MediaLinksBuilder::from_rooted_path(media_domain, &public_bucket_media_path), + media_links: MediaLinksBuilder::from_rooted_path_and_env( + media_domain, + server_environment, + &public_bucket_media_path + ), maybe_public_bucket_media_path: Some(public_bucket_media_path), maybe_successfully_completed_at: result_details.maybe_successfully_completed_at, } @@ -384,6 +391,7 @@ mod tests { use crate::http_server::endpoints::inference_job::get::get_inference_job_status_handler::record_to_payload; use enums::by_table::generic_inference_jobs::inference_category::InferenceCategory; use mysql_queries::queries::generic_inference::web::job_status::{GenericInferenceJobStatus, RequestDetails, ResultDetails}; + use server_environment::ServerEnvironment; use url::Url; #[test] @@ -407,7 +415,7 @@ mod tests { }; let payload = - record_to_payload(status, None, MediaDomain::Storyteller); + record_to_payload(status, None, ServerEnvironment::Production, MediaDomain::Storyteller); assert!(payload.maybe_result.is_some()); @@ -446,7 +454,7 @@ mod tests { }; let payload = - record_to_payload(status, None, MediaDomain::FakeYou); + record_to_payload(status, None, ServerEnvironment::Production, MediaDomain::FakeYou); assert!(payload.maybe_result.is_some()); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list/list_session_jobs_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list/list_session_jobs_handler.rs index 66e332533c..0a384f4317 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list/list_session_jobs_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list/list_session_jobs_handler.rs @@ -31,6 +31,7 @@ use mysql_queries::queries::generic_inference::web::list_session_jobs::{list_ses use primitives::numerics::i64_to_u64_zero_clamped::i64_to_u64_zero_clamped; use r2d2_redis::redis::Commands; use redis_common::redis_keys::RedisKeys; +use server_environment::ServerEnvironment; use tokens::tokens::generic_inference_jobs::InferenceJobToken; use tokens::tokens::media_files::MediaFileToken; use utoipa::{IntoParams, ToSchema}; @@ -197,16 +198,17 @@ pub async fn list_session_jobs_handler( let media_domain = get_media_domain(&http_request); - records_to_response(records, media_domain) + records_to_response(records, server_state.server_environment, media_domain) } fn records_to_response( records: Vec, + server_environment: ServerEnvironment, media_domain: MediaDomain, ) -> Result, ListSessionJobsError> { let mut records = records.into_iter() .map(|record| { - db_record_to_response_payload(record, None, media_domain) + db_record_to_response_payload(record, None, server_environment, media_domain) }) .collect::>(); @@ -240,6 +242,7 @@ fn records_to_response( fn db_record_to_response_payload( record: GenericInferenceJobStatus, maybe_extra_status_description: Option, + server_environment: ServerEnvironment, media_domain: MediaDomain, ) -> ListSessionJobsItem { let inference_category = record.request_details.inference_category; @@ -359,7 +362,11 @@ fn db_record_to_response_payload( entity_type: result_details.entity_type, entity_token: result_details.entity_token, maybe_batch_token: result_details.maybe_batch_token, - media_links: MediaLinksBuilder::from_rooted_path(media_domain, &public_bucket_media_path), + media_links: MediaLinksBuilder::from_rooted_path_and_env( + media_domain, + server_environment, + &public_bucket_media_path + ), maybe_public_bucket_media_path: Some(public_bucket_media_path), maybe_successfully_completed_at: result_details.maybe_successfully_completed_at, } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/batch_get_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/batch_get_media_files_handler.rs index 8a3390d960..63c719a402 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/batch_get_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/batch_get_media_files_handler.rs @@ -333,7 +333,11 @@ pub async fn batch_get_media_files_handler( maybe_media_subtype: result.maybe_media_subtype, maybe_engine_extension, maybe_batch_token: result.maybe_batch_token, - media_links: MediaLinksBuilder::from_media_path(media_domain, &public_bucket_path), + media_links: MediaLinksBuilder::from_media_path_and_env( + media_domain, + server_state.server_environment, + &public_bucket_path + ), public_bucket_path: public_bucket_path .get_full_object_path_str() .to_string(), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_batch_generated_redux_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_batch_generated_redux_media_files_handler.rs index 82e5dbda32..5d6079f21a 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_batch_generated_redux_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_batch_generated_redux_media_files_handler.rs @@ -112,7 +112,11 @@ pub async fn list_batch_generated_redux_media_files_handler( media_class: result.media_class, media_type: result.media_type, maybe_batch_token: result.maybe_batch_token, - media_links: MediaLinksBuilder::from_media_path(media_domain, &public_bucket_path), + media_links: MediaLinksBuilder::from_media_path_and_env( + media_domain, + server_state.server_environment, + &public_bucket_path + ), cover_image: MediaFileCoverImageDetailsBuilder::from_optional_db_fields( &result.token, media_domain, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_featured_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_featured_media_files_handler.rs index 02209f12f9..b476fb15d9 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_featured_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_featured_media_files_handler.rs @@ -288,7 +288,11 @@ pub async fn list_featured_media_files_handler( media_type: m.media_type, maybe_engine_category: m.maybe_engine_category, maybe_animation_type: m.maybe_animation_type, - media_links: MediaLinksBuilder::from_media_path(media_domain, &public_bucket_path), + media_links: MediaLinksBuilder::from_media_path_and_env( + media_domain, + server_state.server_environment, + &public_bucket_path + ), public_bucket_path: public_bucket_path .get_full_object_path_str() .to_string(), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_by_batch_token_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_by_batch_token_handler.rs index 5d6a3d052f..af9d5d9c60 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_by_batch_token_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_by_batch_token_handler.rs @@ -277,7 +277,11 @@ pub async fn list_media_files_by_batch_token_handler( maybe_origin_model_type: record.maybe_origin_model_type .map(|t| PublicMediaFileModelType::from_enum(t)), maybe_origin_model_token: record.maybe_origin_model_token, - media_links: MediaLinksBuilder::from_media_path(media_domain, &public_bucket_path), + media_links: MediaLinksBuilder::from_media_path_and_env( + media_domain, + server_state.server_environment, + &public_bucket_path + ), public_bucket_path: public_bucket_path .get_full_object_path_str() .to_string(), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_handler.rs index 4eb1ce1333..8117759a25 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_handler.rs @@ -345,7 +345,11 @@ pub async fn list_media_files_handler( maybe_origin_model_type: record.maybe_origin_model_type .map(|m| PublicMediaFileModelType::from_enum(m)), maybe_origin_model_token: record.maybe_origin_model_token, - media_links: MediaLinksBuilder::from_media_path(media_domain, &public_bucket_path), + media_links: MediaLinksBuilder::from_media_path_and_env( + media_domain, + server_state.server_environment, + &public_bucket_path + ), public_bucket_path: public_bucket_path .get_full_object_path_str() .to_string(), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_pinned_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_pinned_media_files_handler.rs index 3d1641c545..ceab6b4f3a 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_pinned_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_pinned_media_files_handler.rs @@ -215,7 +215,11 @@ pub async fn list_pinned_media_files_handler( media_type: m.media_type, maybe_engine_category: m.maybe_engine_category, maybe_animation_type: m.maybe_animation_type, - media_links: MediaLinksBuilder::from_media_path(media_domain, &public_bucket_path), + media_links: MediaLinksBuilder::from_media_path_and_env( + media_domain, + server_state.server_environment, + &public_bucket_path + ), public_bucket_path: public_bucket_path .get_full_object_path_str() .to_string(), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_featured_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_featured_media_files_handler.rs index 15cb43be90..1aa50c5e6f 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_featured_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_featured_media_files_handler.rs @@ -227,7 +227,11 @@ pub async fn search_featured_media_files_handler( media_type: result.media_type, maybe_engine_category: result.maybe_engine_category, maybe_animation_type: result.maybe_animation_type, - media_links: MediaLinksBuilder::from_media_path(media_domain, &public_bucket_path), + media_links: MediaLinksBuilder::from_media_path_and_env( + media_domain, + server_state.server_environment, + &public_bucket_path + ), public_bucket_path: public_bucket_path .get_full_object_path_str() .to_string(), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_session_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_session_media_files_handler.rs index 21f185d4c2..1f3245aa82 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_session_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/search/search_session_media_files_handler.rs @@ -254,7 +254,11 @@ pub async fn search_session_media_files_handler( media_type: result.media_type, maybe_engine_category: result.maybe_engine_category, maybe_animation_type: result.maybe_animation_type, - media_links: MediaLinksBuilder::from_media_path(media_domain, &public_bucket_path), + media_links: MediaLinksBuilder::from_media_path_and_env( + media_domain, + server_state.server_environment, + &public_bucket_path + ), public_bucket_path: public_bucket_path .get_full_object_path_str() .to_string(), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/user_bookmarks/list_user_bookmarks_for_user_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/user_bookmarks/list_user_bookmarks_for_user_handler.rs index c347c6402b..d83d259a76 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/user_bookmarks/list_user_bookmarks_for_user_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/user_bookmarks/list_user_bookmarks_for_user_handler.rs @@ -230,7 +230,10 @@ pub async fn list_user_bookmarks_for_user_handler( }); let maybe_media_file_media_links = maybe_media_file_bucket_path.as_ref() - .map(|bucket_path| MediaLinksBuilder::from_media_path(media_domain, bucket_path)); + .map(|bucket_path| MediaLinksBuilder::from_media_path_and_env( + media_domain, + server_state.server_environment, + bucket_path)); let mut maybe_media_file_cover = None; let mut maybe_model_weight_cover = None; diff --git a/frontend/apps/editor3d/app/src/pages/PageImage/TextToImage.tsx b/frontend/apps/editor3d/app/src/pages/PageImage/TextToImage.tsx index 011fdfc536..331dd970f3 100644 --- a/frontend/apps/editor3d/app/src/pages/PageImage/TextToImage.tsx +++ b/frontend/apps/editor3d/app/src/pages/PageImage/TextToImage.tsx @@ -41,6 +41,7 @@ const TextToImage = ({ imageMediaId, imageUrl }: TextToImageProps) => { }; useTextToImageGenerationCompleteEvent(async (event) => { + console.log(">>> Event", event); completeBatch( event.generated_images || [], event.maybe_frontend_subscriber_id,