diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/text_to_image/grok/handle_grok.rs b/crates/desktop/artcraft/src/core/commands/enqueue/text_to_image/grok/handle_grok.rs index d82db37b9b..3ca29d56f6 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/text_to_image/grok/handle_grok.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/text_to_image/grok/handle_grok.rs @@ -48,39 +48,41 @@ pub async fn handle_grok( websocket_manager: &GrokWebsocketManager, ) -> Result { - // TODO: We can request population of the user info if absent or expired. - let websocket = get_websocket( - app, - creds_manager, - websocket_manager, - ).await?; - - let _result = prompt_websocket_image(PromptWebsocketImageArgs { - websocket_wrapped: &websocket, - prompt: request.prompt.as_deref().unwrap_or_else(||""), - }).await?; - - let request_id = listen_for_websocket_request_id(ListenForWebsocketRequestIdArgs { - websocket: &websocket, - timeout: Duration::from_millis(10_000), - }).await?; - - let request_id = match request_id.request_id { - Some(request_id) => request_id.to_string(), - None => { - warn!("No request id from Grok image generation (websocket)"); - return Err(GenerateError::ProviderFailure(ProviderFailureReason::GrokJobEnqueueFailed)); - } - }; - - info!("Successfully enqueued MidJourney. Job token: {}", request_id); + unimplemented!() - Ok(TaskEnqueueSuccess { - provider: GenerationProvider::Grok, - model: Some(GenerationModel::GrokImage), - provider_job_id: Some(request_id), - task_type: TaskType::ImageGeneration, - }) + //// TODO: We can request population of the user info if absent or expired. + //let websocket = get_websocket( + // app, + // creds_manager, + // websocket_manager, + //).await?; + // + //let _result = prompt_websocket_image(PromptWebsocketImageArgs { + // websocket_wrapped: &websocket, + // prompt: request.prompt.as_deref().unwrap_or_else(||""), + //}).await?; + // + //let request_id = listen_for_websocket_request_id(ListenForWebsocketRequestIdArgs { + // websocket: &websocket, + // timeout: Duration::from_millis(10_000), + //}).await?; + // + //let request_id = match request_id.request_id { + // Some(request_id) => request_id.to_string(), + // None => { + // warn!("No request id from Grok image generation (websocket)"); + // return Err(GenerateError::ProviderFailure(ProviderFailureReason::GrokJobEnqueueFailed)); + // } + //}; + // + //info!("Successfully enqueued MidJourney. Job token: {}", request_id); + + //Ok(TaskEnqueueSuccess { + // provider: GenerationProvider::Grok, + // model: Some(GenerationModel::GrokImage), + // provider_job_id: Some(request_id), + // task_type: TaskType::ImageGeneration, + //}) } // TODO: @@ -93,63 +95,63 @@ pub async fn handle_grok( // let messages: Vec = errors.iter() // .map(|e| format!("{:?}", e)) // .collect(); -// +// // let combined_message = messages.join("; "); -// +// // let event = FlashUserInputErrorEvent { // message: format!("Midjourney Error: {}", combined_message), // }; -// +// // if let Err(err) = event.send(&app) { // error!("Failed to send FlashUserInputErrorEvent: {:?}", err); // Fail open // } // } // } -// +// // Err(GenerateError::ProviderFailure(ProviderFailureReason::MidjourneyJobEnqueueFailed)) // } -async fn get_websocket(app: &AppHandle, creds_manager: &GrokCredentialManager, websocket_manager: &GrokWebsocketManager) -> Result { - let maybe_websocket = websocket_manager.grab_websocket()?; - - let websocket = match maybe_websocket { - Some(websocket) => websocket, - None => { - let cookies = match creds_manager.maybe_copy_cookie_store() { - Ok(Some(cookies)) => cookies.to_cookie_string(), - Ok(None) => { - error!("Grok credentials not found."); - ShowProviderLoginModalEvent::send_for_provider(GenerationProvider::Grok, &app); - return Err(GenerateError::needs_grok_credentials()); - } - Err(err) => { - error!("Error reading Midjourney credentials: {:?}", err); - ShowProviderLoginModalEvent::send_for_provider(GenerationProvider::Grok, &app); - return Err(GenerateError::needs_grok_credentials()); - }, - }; - - info!("Creating Grok websocket..."); - - let create_websocket_result = create_listen_websocket(CreateListenWebsocketArgs { - cookies: &cookies, - }).await; - - let websocket = match create_websocket_result { - Ok(websocket) => GrokWebsocket::new(websocket), - Err(err) => { - error!("Error creating websocket: {:?}", err); - ShowProviderLoginModalEvent::send_for_provider(GenerationProvider::Grok, &app); - return Err(GenerateError::needs_grok_credentials()); - } - }; - - info!("Setting managed Grok websocket..."); - websocket_manager.set_websocket(websocket.clone())?; - - websocket - } - }; - - Ok(websocket) -} +//async fn get_websocket(app: &AppHandle, creds_manager: &GrokCredentialManager, websocket_manager: &GrokWebsocketManager) -> Result { +// let maybe_websocket = websocket_manager.grab_websocket()?; +// +// let websocket = match maybe_websocket { +// Some(websocket) => websocket, +// None => { +// let cookies = match creds_manager.maybe_copy_cookie_store() { +// Ok(Some(cookies)) => cookies.to_cookie_string(), +// Ok(None) => { +// error!("Grok credentials not found."); +// ShowProviderLoginModalEvent::send_for_provider(GenerationProvider::Grok, &app); +// return Err(GenerateError::needs_grok_credentials()); +// } +// Err(err) => { +// error!("Error reading Midjourney credentials: {:?}", err); +// ShowProviderLoginModalEvent::send_for_provider(GenerationProvider::Grok, &app); +// return Err(GenerateError::needs_grok_credentials()); +// }, +// }; +// +// info!("Creating Grok websocket..."); +// +// let create_websocket_result = create_listen_websocket(CreateListenWebsocketArgs { +// cookies: &cookies, +// }).await; +// +// let websocket = match create_websocket_result { +// Ok(websocket) => GrokWebsocket::new(websocket), +// Err(err) => { +// error!("Error creating websocket: {:?}", err); +// ShowProviderLoginModalEvent::send_for_provider(GenerationProvider::Grok, &app); +// return Err(GenerateError::needs_grok_credentials()); +// } +// }; +// +// info!("Setting managed Grok websocket..."); +// websocket_manager.set_websocket(websocket.clone())?; +// +// websocket +// } +// }; +// +// Ok(websocket) +//} diff --git a/crates/desktop/artcraft/src/services/grok/state/grok_websocket_manager.rs b/crates/desktop/artcraft/src/services/grok/state/grok_websocket_manager.rs index 25934ad2a7..ff6904a7ff 100644 --- a/crates/desktop/artcraft/src/services/grok/state/grok_websocket_manager.rs +++ b/crates/desktop/artcraft/src/services/grok/state/grok_websocket_manager.rs @@ -2,14 +2,15 @@ use crate::core::artcraft_error::ArtcraftError; use errors::AnyhowResult; use grok_client::requests::image_websocket::grok_websocket::GrokWebsocket; use log::error; -use std::sync::{Arc, LockResult, RwLock}; +use std::sync::{Arc, RwLock}; /// NB: This is inefficient because the websockets are locked at two layers. /// Should be fine for our performance needs, though. #[derive(Clone)] pub struct GrokWebsocketManager { - websocket: Arc>>, + //websocket: Arc>>, + websocket: Arc>>, } impl GrokWebsocketManager { @@ -22,7 +23,8 @@ impl GrokWebsocketManager { pub fn set_websocket(&self, websocket: GrokWebsocket) -> Result<(), ArtcraftError> { match self.websocket.write() { Ok(mut guard) => { - *guard = Some(websocket); + //*guard = Some(websocket); + *guard = Some(()); Ok(()) } Err(err) => { @@ -48,7 +50,8 @@ impl GrokWebsocketManager { pub fn grab_websocket(&self) -> Result, ArtcraftError> { match self.websocket.read() { Ok(guard) => { - Ok(guard.clone()) + //Ok(guard.clone()) + Ok(None) } Err(err) => { error!("Error reading locked websocket: {}", err);