ugh, this won't work

This commit is contained in:
Brandon Thomas committed 2025-10-31 18:48:39 -04:00
1 parent db48ce543c
commit 76cafae976
2 files changed
+89 -84

No files matched your search

@@ -48,39 +48,41 @@ pub async fn handle_grok(
websocket_manager: &GrokWebsocketManager,
) -> Result<TaskEnqueueSuccess, GenerateError> {
// 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<String> = 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<GrokWebsocket, GenerateError> {
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<GrokWebsocket, GenerateError> {
// 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)
//}
@@ -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<RwLock<Option<GrokWebsocket>>>,
//websocket: Arc<RwLock<Option<GrokWebsocket>>>,
websocket: Arc<RwLock<Option<()>>>,
}
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<Option<GrokWebsocket>, ArtcraftError> {
match self.websocket.read() {
Ok(guard) => {
Ok(guard.clone())
//Ok(guard.clone())
Ok(None)
}
Err(err) => {
error!("Error reading locked websocket: {}", err);