diff --git a/packages/components/src/api/tts/GetTtsModel.ts b/packages/components/src/api/tts/GetTtsModel.ts index 3068b67461..ac6d45b810 100644 --- a/packages/components/src/api/tts/GetTtsModel.ts +++ b/packages/components/src/api/tts/GetTtsModel.ts @@ -45,6 +45,8 @@ export interface UserRatings { } export interface TtsModelModeratorFields { + use_default_m_factor: boolean, + maybe_custom_m_factor: number | undefined | null, creator_is_banned: boolean, creator_ip_address_creation: string, creator_ip_address_last_update: string, diff --git a/packages/fakeyou.com/src/v2/view/pages/tts/tts_model_edit/TtsModelEditPage.tsx b/packages/fakeyou.com/src/v2/view/pages/tts/tts_model_edit/TtsModelEditPage.tsx index 544ab2696d..b1fc5307e7 100644 --- a/packages/fakeyou.com/src/v2/view/pages/tts/tts_model_edit/TtsModelEditPage.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/tts/tts_model_edit/TtsModelEditPage.tsx @@ -36,6 +36,7 @@ import { } from "@storyteller/components/src/constants/TextPipeline"; import { motion } from "framer-motion"; import { container, item, panel } from "../../../../../data/animation"; +import { faFunction } from "@fortawesome/pro-solid-svg-icons"; const DEFAULT_VISIBILITY = "public"; @@ -67,11 +68,18 @@ function TtsModelEditPage(props: Props) { const [descriptionMarkdown, setDescriptionMarkdown] = useState(""); const [fullLanguageTag, setFullLanguageTag] = useState(""); // NB: Should be full IETF, eg. ["en", "en-US", "es-419", etc.] const [visibility, setVisibility] = useState(DEFAULT_VISIBILITY); + + // Moderator-only fields (editable) const [isFrontPageFeatured, setIsFrontPageFeatured] = useState(false); const [isTwitchFeatured, setIsTwitchFeatured] = useState(false); const [suggestedUniqueBotCommand, setSuggestedUniqueBotCommand] = useState(""); + // Moderator-only fields (both observable and editable) + const [useDefaultMFactor, setUseDefaultMFactor] = useState(false); + // NB: The field is an f64, but string is easy to edit + const [maybeCustomMFactor, setMaybeCustomMFactor] = useState(null); + // Vocoder config (modern) const [maybeCustomVocoderToken, setMaybeCustomVocoderToken] = useState(null); @@ -107,6 +115,16 @@ function TtsModelEditPage(props: Props) { setDefaultPretrainedVocoder( model.maybe_default_pretrained_vocoder || DEFAULT_PRETRAINED_VOCODER ); + setUseDefaultMFactor( + model.maybe_moderator_fields?.use_default_m_factor || false + ); + + let maybeCustomMFactor = (!!model.maybe_moderator_fields?.maybe_custom_m_factor) ? + model.maybe_moderator_fields?.maybe_custom_m_factor.toString() : + null; + + setMaybeCustomMFactor(maybeCustomMFactor); + } else if (GetTtsModelIsErr(model)) { switch (model) { case TtsModelLookupError.NotFound: @@ -194,6 +212,18 @@ function TtsModelEditPage(props: Props) { setSuggestedUniqueBotCommand(command); }; + const handleUseDefaultMFactorChange = (ev: React.FormEvent) => { + const value = (ev.target as HTMLInputElement).checked; + setUseDefaultMFactor(value); + }; + + const handleMaybeCustomMFactorChange = (ev: React.FormEvent) => { + ev.preventDefault(); + const textValue = (ev.target as HTMLInputElement).value.trim(); + setMaybeCustomMFactor(textValue); + return false; + }; + const modelLink = WebUrl.ttsModelPage(token); const isModerator = props.sessionWrapper.canEditOtherUsersTtsModels(); @@ -234,6 +264,8 @@ function TtsModelEditPage(props: Props) { if (!!suggestedUniqueBotCommand) { request.maybe_suggested_unique_bot_command = suggestedUniqueBotCommand; } + request.use_default_m_factor = useDefaultMFactor; + request.maybe_custom_m_factor = maybeCustomMFactor === null ? null : Number(maybeCustomMFactor.trim()); } fetch(endpointUrl, { @@ -285,6 +317,8 @@ function TtsModelEditPage(props: Props) { optionalModeratorFields = ( <> +
+

Moderator Fields

{/*

{invalidReason}

*/} + +
+ +
+
+ +
+ + +
+ +
+
+
+ +
+ +
+ + +
+
+ ); } diff --git a/packages/fakeyou.com/src/v2/view/pages/tts/tts_model_view/TtsModelViewPage.tsx b/packages/fakeyou.com/src/v2/view/pages/tts/tts_model_view/TtsModelViewPage.tsx index 468f5775d5..6c1250083b 100644 --- a/packages/fakeyou.com/src/v2/view/pages/tts/tts_model_view/TtsModelViewPage.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/tts/tts_model_view/TtsModelViewPage.tsx @@ -527,6 +527,15 @@ function TtsModelViewPage(props: Props) { Is Twitch Featured? {ttsModel?.is_twitch_featured ? "yes" : "no"} + + + Use global m-factor? (default no) + {ttsModel?.maybe_moderator_fields?.use_default_m_factor ? "yes" : "no"} + + + Custom m-factor (optional) + {ttsModel?.maybe_moderator_fields?.maybe_custom_m_factor} +