send events for sora too

This commit is contained in:
Brandon Thomas committed 2025-08-16 21:25:28 -04:00
1 parent 81cbcf28b2
commit 26c856ed43
4 files changed
+35 -23

No files matched your search

@@ -4,6 +4,7 @@ use crate::core::commands::enqueue::image_edit::gpt_image_1::handle_gpt_image_1_
use crate::core::commands::enqueue::task_enqueue_success::TaskEnqueueSuccess;
use crate::core::commands::response::failure_response_wrapper::{CommandErrorResponseWrapper, CommandErrorStatus};
use crate::core::events::basic_sendable_event_trait::BasicSendableEvent;
use crate::core::events::functional_events::show_provider_login_modal_event::ShowProviderLoginModalEvent;
use crate::core::events::generation_events::common::{GenerationAction, GenerationModel, GenerationServiceProvider};
use crate::core::events::generation_events::generation_enqueue_failure_event::GenerationEnqueueFailureEvent;
use crate::core::events::generation_events::generation_enqueue_success_event::GenerationEnqueueSuccessEvent;
@@ -55,14 +56,16 @@ pub async fn handle_gpt_image_1_edit_sora(
sora_task_queue: &SoraTaskQueue,
) -> Result<TaskEnqueueSuccess, InternalContextualEditImageError> {
let sora_creds = match sora_creds_manager.get_credentials() {
let mut creds = match sora_creds_manager.get_credentials() {
Ok(Some(creds)) => creds,
Ok(None) => {
warn!("No Sora credentials found.");
ShowProviderLoginModalEvent::send_for_provider(GenerationProvider::Sora, &app);
return Err(InternalContextualEditImageError::NeedsSoraCredentials);
}
Err(err) => {
error!("Failed to get Sora credentials: {:?}", err);
ShowProviderLoginModalEvent::send_for_provider(GenerationProvider::Sora, &app);
return Err(InternalContextualEditImageError::AnyhowError(err));
}
};
@@ -111,9 +114,6 @@ pub async fn handle_gpt_image_1_edit_sora(
files_to_upload_to_sora.push(filename);
}
let mut creds = sora_creds_manager.get_credentials_required()?;
let credential_updated = maybe_upgrade_or_renew_session(&mut creds)
.await
.map_err(|err| {
@@ -2,6 +2,7 @@ use crate::core::commands::enqueue::task_enqueue_success::TaskEnqueueSuccess;
use crate::core::commands::enqueue::text_to_image::enqueue_text_to_image_command::{EnqueueTextToImageRequest, TextToImageSize};
use crate::core::commands::enqueue::text_to_image::internal_image_error::InternalImageError;
use crate::core::events::basic_sendable_event_trait::BasicSendableEvent;
use crate::core::events::functional_events::show_provider_login_modal_event::ShowProviderLoginModalEvent;
use crate::core::events::generation_events::common::{GenerationAction, GenerationModel, GenerationServiceProvider};
use crate::core::events::generation_events::generation_enqueue_failure_event::GenerationEnqueueFailureEvent;
use crate::core::model::image_models::ImageModel;
@@ -9,6 +10,7 @@ use crate::services::sora::state::sora_credential_manager::SoraCredentialManager
use crate::services::sora::state::sora_task_queue::SoraTaskQueue;
use enums::common::generation_provider::GenerationProvider;
use enums::tauri::tasks::task_type::TaskType;
use errors::AnyhowResult;
use fal_client::requests::queue::image_gen::enqueue_flux_pro_11_ultra_text_to_image::{enqueue_flux_pro_11_ultra_text_to_image, FluxPro11UltraTextToImageArgs};
use log::{error, info};
use openai_sora_client::recipes::maybe_upgrade_or_renew_session::maybe_upgrade_or_renew_session;
@@ -26,12 +28,19 @@ pub async fn handle_gpt_image_1_sora(
sora_task_queue: &SoraTaskQueue,
) -> Result<TaskEnqueueSuccess, InternalImageError> {
let mut creds = sora_creds_manager
.get_credentials_required()
.map_err(|err| {
error!("EnqueueTextToImage Sora creds required: {:?}", err);
InternalImageError::NeedsFalApiKey
})?;
let mut creds = match sora_creds_manager.get_credentials() {
Ok(Some(creds)) => creds,
Ok(None) => {
error!("Sora credentials not found.");
ShowProviderLoginModalEvent::send_for_provider(GenerationProvider::Sora, &app);
return Err(InternalImageError::NeedsSoraCredentials);
}
Err(err) => {
error!("Error reading Sora credentials: {:?}", err);
ShowProviderLoginModalEvent::send_for_provider(GenerationProvider::Sora, &app);
return Err(InternalImageError::NeedsSoraCredentials);
}
};
let credential_updated = maybe_upgrade_or_renew_session(&mut creds)
.await
@@ -47,12 +47,13 @@ pub async fn handle_midjourney(
let creds = match mj_creds_manager.maybe_copy_cookie_store() {
Ok(Some(creds)) => creds,
Ok(None) => {
show_login_screen(&app);
error!("Midjourney credentials not found.");
ShowProviderLoginModalEvent::send_for_provider(GenerationProvider::Midjourney, &app);
return Err(InternalImageError::NeedsMidjourneyCredentials);
}
Err(err) => {
error!("Error reading Midjourney credentials: {:?}", err);
show_login_screen(&app);
ShowProviderLoginModalEvent::send_for_provider(GenerationProvider::Midjourney, &app);
return Err(InternalImageError::NeedsMidjourneyCredentials);
},
};
@@ -143,13 +144,3 @@ fn handle_midjourney_errors(
Err(InternalImageError::MidjourneyJobEnqueueFailed)
}
fn show_login_screen(app: &AppHandle) {
let event = ShowProviderLoginModalEvent {
provider: GenerationProvider::Midjourney,
};
if let Err(err) = event.send(&app) {
error!("Failed to send ShowProviderLoginModalEvent: {:?}", err); // Fail open
}
}
@@ -1,7 +1,10 @@
use crate::core::events::basic_sendable_event_trait::{BasicEventStatus, BasicSendableEvent};
use crate::core::events::sendable_event_error::SendableEventError;
use enums::common::generation_provider::GenerationProvider;
use enums::tauri::ux::tauri_event_name::TauriEventName;
use log::error;
use serde_derive::Serialize;
use tauri::AppHandle;
/// Send a signal to the frontend to show a modal that suggests service setup.
#[derive(Clone, Debug, Serialize)]
@@ -10,7 +13,16 @@ pub struct ShowProviderLoginModalEvent {
pub provider: GenerationProvider,
}
impl BasicSendableEvent for ShowProviderLoginModalEvent{
impl ShowProviderLoginModalEvent {
pub fn send_for_provider(provider: GenerationProvider, app: &AppHandle) {
let event = Self { provider };
if let Err(err) = event.send(&app) {
error!("Failed to send ShowProviderLoginModalEvent: {:?}", err); // Fail open
}
}
}
impl BasicSendableEvent for ShowProviderLoginModalEvent {
const FRONTEND_EVENT_NAME: TauriEventName = TauriEventName::ShowProviderLoginModalEvent;
const EVENT_STATUS: BasicEventStatus = BasicEventStatus::Failure;
}