use std::error::Error; use wasm_bindgen::prelude::*; use starkingdoms_protocol::MessageC2S; use crate::CLIENT; use futures::SinkExt; use starkingdoms_protocol::message_c2s::MessageC2SChat; #[wasm_bindgen] // TODO: Switch to async-aware mutexes #[allow(clippy::await_holding_lock)] pub async fn send_chat(message: &str) -> Result<(), JsError> { let client_data = &mut CLIENT.write()?.client_data; if let Some(data) = client_data { let msg = MessageC2S::Chat(MessageC2SChat { message: message.to_string(), special_fields: Default::default(), }).try_into().map_err(|e: Box | JsError::new(&e.to_string()))?; send!(data.tx, msg).await?; } else { return Err(JsError::new("Client not yet connected to server")); } Ok(()) }