From 055cc80aef7cdab19587e62640f012a4444b3485 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Thu, 24 Apr 2025 17:13:10 -0400 Subject: [PATCH] fix bugs, credentials work --- .../commands/sora/sora_image_remix_command.rs | 6 +- crates/desktop/tauri-artcraft/src/lib.rs | 2 +- .../src/state/sora/sora_credential_holder.rs | 56 ++----------------- .../src/state/sora/sora_credential_manager.rs | 13 ----- .../src/threads/sora_session_login_thread.rs | 12 ++-- .../upload/upload_media_http_request.rs | 2 + 6 files changed, 21 insertions(+), 70 deletions(-) diff --git a/crates/desktop/tauri-artcraft/src/commands/sora/sora_image_remix_command.rs b/crates/desktop/tauri-artcraft/src/commands/sora/sora_image_remix_command.rs index 70d6efe7b7..9a3b727746 100644 --- a/crates/desktop/tauri-artcraft/src/commands/sora/sora_image_remix_command.rs +++ b/crates/desktop/tauri-artcraft/src/commands/sora/sora_image_remix_command.rs @@ -99,7 +99,9 @@ pub async fn generate_image( let mut sora_media_tokens = Vec::with_capacity(files_to_upload.len()); - for file_path in files_to_upload { + for (i, file_path) in files_to_upload.iter().enumerate() { + info!("Uploading image {} of {}...", (i+1), files_to_upload.len()); + // TODO(bt,2025-04-24): Handle JWT reset error. let sora_upload_response = sora_media_upload_from_file(file_path, CredentialMigrationRef::New(&creds)) .await?; @@ -107,6 +109,8 @@ pub async fn generate_image( sora_media_tokens.push(sora_upload_response.id); } + info!("Calling image generation..."); + // TODO(bt,2025-04-21): Download media tokens. // Note: This is incredibly inefficient. We should keep a local cache. // Also, if they've already been uploaded to OpenAI, we shouldn't continue to re-upload. diff --git a/crates/desktop/tauri-artcraft/src/lib.rs b/crates/desktop/tauri-artcraft/src/lib.rs index 9624d673e4..b08eaad4ae 100644 --- a/crates/desktop/tauri-artcraft/src/lib.rs +++ b/crates/desktop/tauri-artcraft/src/lib.rs @@ -16,7 +16,7 @@ use tauri_plugin_log::Target; use tauri_plugin_log::TargetKind; #[cfg_attr(mobile, tauri::mobile_entry_point)] -pub async fn run() { +pub fn run() { // NB: Tauri wants to install the logger itself, so we can't rely on the logger crate // until the tauri runtime begins. println!("Loading model config..."); diff --git a/crates/desktop/tauri-artcraft/src/state/sora/sora_credential_holder.rs b/crates/desktop/tauri-artcraft/src/state/sora/sora_credential_holder.rs index 58fc0f859a..74f68b74ca 100644 --- a/crates/desktop/tauri-artcraft/src/state/sora/sora_credential_holder.rs +++ b/crates/desktop/tauri-artcraft/src/state/sora/sora_credential_holder.rs @@ -1,50 +1,26 @@ use anyhow::anyhow; use errors::AnyhowResult; -use openai_sora_client::credentials::SoraCredentials; use openai_sora_client::creds::sora_credential_set::SoraCredentialSet; use std::sync::{Arc, RwLock}; -// TODO: This is just so we can phase in the new credentials -pub struct Inner { - credentials: Option, - credential_set: Option, -} - /// Hold credentials for the application. #[derive(Clone)] pub struct SoraCredentialHolder { - credentials: Arc>, + credentials: Arc>>, } impl SoraCredentialHolder { pub fn new() -> Self { Self { - credentials: Arc::new(RwLock::new(Inner { - credentials: None, - credential_set: None, - })), - } - } - - pub fn set_legacy_credentials(&self, credentials: &SoraCredentials) -> AnyhowResult<()> { - let credential_set = SoraCredentialSet::from_legacy_credentials(credentials)?; - match self.credentials.write() { - Err(err) => Err(anyhow!("Failed to acquire write lock: {:?}", err)), - Ok(mut creds) => { - creds.credentials = Some(credentials.clone()); - creds.credential_set = Some(credential_set); - Ok(()) - } + credentials: Arc::new(RwLock::new(None)), } } pub fn set_credentials(&self, credentials: &SoraCredentialSet) -> AnyhowResult<()> { - let credentials_legacy = credentials.to_legacy_credentials()?; match self.credentials.write() { Err(err) => Err(anyhow!("Failed to acquire write lock: {:?}", err)), Ok(mut creds) => { - creds.credentials = Some(credentials_legacy); - creds.credential_set = Some(credentials.clone()); + *creds = Some(credentials.clone()); Ok(()) } } @@ -54,37 +30,17 @@ impl SoraCredentialHolder { match self.credentials.write() { Err(err) => Err(anyhow!("Failed to acquire write lock: {:?}", err)), Ok(mut creds) => { - creds.credentials = None; - creds.credential_set = None; + *creds = None; Ok(()) } } } - pub fn get_legacy_credentials(&self) -> AnyhowResult> { - match self.credentials.read() { - Err(err) => Err(anyhow!("Failed to acquire read lock: {:?}", err)), - Ok(creds) => { - Ok(creds.credentials.clone()) - } - } - } - - pub fn get_legacy_credentials_required(&self) -> AnyhowResult { - match self.credentials.read() { - Err(err) => Err(anyhow!("Failed to acquire read lock: {:?}", err)), - Ok(creds) => match &creds.credentials { - None => Err(anyhow!("Credentials not set")), - Some(creds) => Ok(creds.clone()), - } - } - } - pub fn get_credentials(&self) -> AnyhowResult> { match self.credentials.read() { Err(err) => Err(anyhow!("Failed to acquire read lock: {:?}", err)), Ok(creds) => { - Ok(creds.credential_set.clone()) + Ok(creds.clone()) } } } @@ -92,7 +48,7 @@ impl SoraCredentialHolder { pub fn get_credentials_required(&self) -> AnyhowResult { match self.credentials.read() { Err(err) => Err(anyhow!("Failed to acquire read lock: {:?}", err)), - Ok(creds) => match &creds.credential_set { + Ok(creds) => match &*creds { None => Err(anyhow!("Credentials not set")), Some(creds) => Ok(creds.clone()), } diff --git a/crates/desktop/tauri-artcraft/src/state/sora/sora_credential_manager.rs b/crates/desktop/tauri-artcraft/src/state/sora/sora_credential_manager.rs index 28ea7adece..785456410d 100644 --- a/crates/desktop/tauri-artcraft/src/state/sora/sora_credential_manager.rs +++ b/crates/desktop/tauri-artcraft/src/state/sora/sora_credential_manager.rs @@ -4,7 +4,6 @@ use crate::state::sora::sora_credential_holder::SoraCredentialHolder; use anyhow::anyhow; use errors::AnyhowResult; use log::{error, info, warn}; -use openai_sora_client::credentials::SoraCredentials; use openai_sora_client::creds::sora_credential_set::SoraCredentialSet; use openai_sora_client::creds::sora_sentinel::SoraSentinel; use openai_sora_client::requests::sentinel_refresh::generate::token::generate_token; @@ -35,10 +34,6 @@ impl SoraCredentialManager { } } - pub fn set_legacy_credentials(&self, creds: &SoraCredentials) -> AnyhowResult<()> { - self.holder.set_legacy_credentials(creds) - } - pub fn set_credentials(&self, creds: &SoraCredentialSet) -> AnyhowResult<()> { self.holder.set_credentials(creds) } @@ -48,14 +43,6 @@ impl SoraCredentialManager { Ok(()) } - pub fn get_legacy_credentials(&self) -> AnyhowResult> { - self.holder.get_legacy_credentials() - } - - pub fn get_legacy_credentials_required(&self) -> AnyhowResult { - self.holder.get_legacy_credentials_required() - } - pub fn get_credentials(&self) -> AnyhowResult> { self.holder.get_credentials() } diff --git a/crates/desktop/tauri-artcraft/src/threads/sora_session_login_thread.rs b/crates/desktop/tauri-artcraft/src/threads/sora_session_login_thread.rs index c0b9597587..fde729978f 100644 --- a/crates/desktop/tauri-artcraft/src/threads/sora_session_login_thread.rs +++ b/crates/desktop/tauri-artcraft/src/threads/sora_session_login_thread.rs @@ -113,8 +113,10 @@ fn extract_cookies_to_file( let mut should_write_cookies = maybe_old_cookies.is_none(); - if let Some(old_cookies) = maybe_old_cookies { - should_write_cookies = old_cookies != new_cookies; + if new_cookies.len() > 50 { + if let Some(old_cookies) = maybe_old_cookies { + should_write_cookies = old_cookies != new_cookies; + } } if !should_write_cookies { @@ -125,9 +127,9 @@ fn extract_cookies_to_file( sora_credential_manager.clear_credentials()?; - fs::remove_file(app_data_root.get_sora_cookie_file_path())?; - fs::remove_file(app_data_root.get_sora_bearer_token_file_path())?; - fs::remove_file(app_data_root.get_sora_sentinel_file_path())?; + let _r = fs::remove_file(app_data_root.get_sora_cookie_file_path()); + let _r = fs::remove_file(app_data_root.get_sora_bearer_token_file_path()); + let _r = fs::remove_file(app_data_root.get_sora_sentinel_file_path()); let cookie_file = app_data_root.get_sora_cookie_file_path(); diff --git a/crates/lib/api_clients/openai_sora_client/src/requests/upload/upload_media_http_request.rs b/crates/lib/api_clients/openai_sora_client/src/requests/upload/upload_media_http_request.rs index ff567ad099..586c1b88ea 100644 --- a/crates/lib/api_clients/openai_sora_client/src/requests/upload/upload_media_http_request.rs +++ b/crates/lib/api_clients/openai_sora_client/src/requests/upload/upload_media_http_request.rs @@ -1,3 +1,4 @@ +use log::info; use crate::credentials::{SoraCredentials, USER_AGENT}; use crate::creds::credential_migration::CredentialMigrationRef; use crate::sora_error::SoraError; @@ -105,6 +106,7 @@ pub (crate) async fn upload_media_http_request( // Check response status if !response.status().is_success() { + info!("Error uploading image: {:?}", response.status()); let error = classify_error(response).await; return Err(error); }