mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-05 01:38:44 +00:00
ugh, this won't work
This commit is contained in:
1 parent
db48ce543c
commit
76cafae976
2 files changed
+89
-84
No files matched your search
+82
-80
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user