From 60179d59d41bfbb66864647a9d76f81e409f1678 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Fri, 24 Apr 2026 02:23:53 -0400 Subject: [PATCH] check feature flags to access happy horse --- .../video/omni_gen_video_models_handler.rs | 18 ++++++++++++++---- .../lookup/user_session_feature_flags.rs | 4 ++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/models/video/omni_gen_video_models_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/models/video/omni_gen_video_models_handler.rs index 2ee897799f..6792a77e76 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/models/video/omni_gen_video_models_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/models/video/omni_gen_video_models_handler.rs @@ -1,17 +1,18 @@ use std::sync::Arc; use crate::configs::omni_gen::video_models::OMNI_GEN_VIDEO_MODELS_AND_PROVIDERS; +use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; use crate::http_server::common_responses::common_web_error::CommonWebError; +use crate::http_server::session::lookup::user_session_feature_flags::UserSessionFeatureFlags; use crate::state::server_state::ServerState; use actix_web::web::{Json, Query}; use actix_web::{web, HttpRequest}; -use log::warn; use artcraft_api_defs::omni_gen::models::omni_gen_video_models::{ OmniGenVideoModelsQuery, OmniGenVideoModelsResponse, }; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; -use crate::http_server::session::lookup::user_session_feature_flags::UserSessionFeatureFlags; +use enums::common::generation::common_video_model::CommonVideoModel; +use log::warn; /// List available video models. #[utoipa::path( @@ -29,7 +30,16 @@ pub async fn omni_gen_video_models_handler( server_state: web::Data>, _query: Query, ) -> Result, AdvancedCommonWebError> { - let response = (*OMNI_GEN_VIDEO_MODELS_AND_PROVIDERS).clone(); + let mut response = (*OMNI_GEN_VIDEO_MODELS_AND_PROVIDERS).clone(); + + let show_happy_horse = can_see_happy_horse(&http_request, &server_state) + .await + .unwrap_or(false); + + if !show_happy_horse { + response.models.retain(|m| !matches!(m.model, CommonVideoModel::HappyHorse1p0)); + } + Ok(Json(response)) } diff --git a/crates/service/web/storyteller_web/src/http_server/session/lookup/user_session_feature_flags.rs b/crates/service/web/storyteller_web/src/http_server/session/lookup/user_session_feature_flags.rs index 903a9a9516..17fe92c375 100644 --- a/crates/service/web/storyteller_web/src/http_server/session/lookup/user_session_feature_flags.rs +++ b/crates/service/web/storyteller_web/src/http_server/session/lookup/user_session_feature_flags.rs @@ -91,11 +91,11 @@ impl UserSessionFeatureFlags { } pub fn can_use_happy_horse(&self) -> bool { - self.feature_flags.contains(&UserFeatureFlag::SeedanceWhitelist) + self.feature_flags.contains(&UserFeatureFlag::HappyHorse) } pub fn can_use_happy_horse_rate_limited(&self) -> bool { - self.feature_flags.contains(&UserFeatureFlag::SeedanceWhitelist) + self.feature_flags.contains(&UserFeatureFlag::HappyHorseRateLimit) } }