diff --git a/crates/lib/api_clients/openai_sora_client/src/requests/image_gen/image_gen_status.rs b/crates/lib/api_clients/openai_sora_client/src/requests/image_gen/image_gen_status.rs index dd47760fec..4862926110 100644 --- a/crates/lib/api_clients/openai_sora_client/src/requests/image_gen/image_gen_status.rs +++ b/crates/lib/api_clients/openai_sora_client/src/requests/image_gen/image_gen_status.rs @@ -173,7 +173,7 @@ pub struct InpaintItem { pub r#type: String, pub preset_id: Option, pub generation_id: Option, - pub upload_media_id: String, + pub upload_media_id: Option, pub frame_index: i32, pub source_start_frame: i32, } @@ -202,7 +202,7 @@ impl StatusRequest { /// Gets the status of image generation tasks from Sora API pub async fn get_image_gen_status(status_request: &StatusRequest, credentials: &SoraCredentialSet) -> Result { - + let bearer_header = match credentials.jwt_bearer_token.as_ref() { Some(bearer) => bearer.to_authorization_header_value(), None => { @@ -316,7 +316,7 @@ mod tests { let creds = SoraCredentials { bearer_token: bearer, cookie, sentinel: Some(sentinel) }; let new_creds = SoraCredentialSet::from_legacy_credentials(&creds)?; - + // Get the task status for a specific task // let response = get_image_gen_status(&StatusRequest::new(None, Some("task_01jr9yvpfyetx9r7qvvx38scna".to_string())), &creds).await?; diff --git a/frontend/apps/editor3d/app/src/flags/DevConsoleFlags.ts b/frontend/apps/editor3d/app/src/flags/DevConsoleFlags.ts new file mode 100644 index 0000000000..2f02578243 --- /dev/null +++ b/frontend/apps/editor3d/app/src/flags/DevConsoleFlags.ts @@ -0,0 +1,36 @@ + +// This is used to do things such as disable job polling in the dev console. + +export const SetDevFlag = (flagName: string, value: any) => { + if (!!!(window as any)._dev_flags) { + (window as any)._dev_flags = {}; + } + (window as any)._dev_flags[flagName] = value; +} + +export const GetDevFlag = (flagName: string) => { + if (!!(window as any)._dev_flags && flagName in (window as any)._dev_flags) { + return (window as any)._dev_flags[flagName]; + } + return null; +} + +export const DisableJobPolling = () => { + SetDevFlag("disable_job_polling", true); +} + +export const EnableJobPolling = () => { + SetDevFlag("disable_job_polling", false); +} + +export const IsJobPollingDisabled = () : boolean => { + return GetDevFlag("disable_job_polling") === true; +} + +(window as any).setDevFlag = SetDevFlag; +(window as any).getDevFlag = GetDevFlag; + +(window as any).disableJobPolling = DisableJobPolling; +(window as any).enableJobPolling = EnableJobPolling; + + diff --git a/frontend/apps/editor3d/app/src/hooks/useActiveJobs/utilities.ts b/frontend/apps/editor3d/app/src/hooks/useActiveJobs/utilities.ts index 4da3db7378..f68cf8f755 100644 --- a/frontend/apps/editor3d/app/src/hooks/useActiveJobs/utilities.ts +++ b/frontend/apps/editor3d/app/src/hooks/useActiveJobs/utilities.ts @@ -1,9 +1,15 @@ import { ToastTypes } from "~/enums"; import { addToast, setJobs } from "~/signals"; import { JobsApi } from "~/Classes/ApiManager/JobsApi"; +import { IsJobPollingDisabled } from "~/flags/DevConsoleFlags"; + export async function PollRecentJobs() { const jobsApi = new JobsApi(); + if (IsJobPollingDisabled()) { + return; + } + const response = await jobsApi.ListRecentJobs(); if (response.success && response.data) { setJobs(response.data); diff --git a/frontend/apps/editor3d/app/src/pages/PageEnigma/comps/GenerateModals/Activity.tsx b/frontend/apps/editor3d/app/src/pages/PageEnigma/comps/GenerateModals/Activity.tsx index 5bb2ea6375..e76c5e879e 100644 --- a/frontend/apps/editor3d/app/src/pages/PageEnigma/comps/GenerateModals/Activity.tsx +++ b/frontend/apps/editor3d/app/src/pages/PageEnigma/comps/GenerateModals/Activity.tsx @@ -9,6 +9,7 @@ import { useEffect, useState, useRef, useCallback } from "react"; import { JobsApi } from "~/Classes/ApiManager/JobsApi"; import { toast } from "@storyteller/ui-toaster"; import { ActiveJob } from "~/pages/PageEnigma/models"; +import { IsJobPollingDisabled } from "~/flags/DevConsoleFlags"; // TODO ensure we de-dupe all this extra code. interface CompletedItem { token: string; @@ -85,6 +86,9 @@ export function Activity() { let mounted = true; async function fetchJobs() { + if (IsJobPollingDisabled()) { + return; + } try { const jobsApi = new JobsApi(); const response = await jobsApi.ListRecentJobs();