Files
server/src/requests/message.rs
T

60 lines
1.4 KiB
Rust

use std::sync::Arc;
use crate::{Server, types, utils::client::Client};
crate::logger!(LOGGER "Message Manager");
pub fn send(
server: &Arc<Server>,
client: &Client,
channel_id: &str,
contents: &str,
) -> crate::Result<()> {
LOGGER.info(format!("SendMessage to {channel_id}: {contents}"));
if contents.is_empty() {
client.send(types::ResponseError::InvalidRequest(format!(
"Invalid message: empty message"
)))?;
return Ok(());
}
let msg = server.db.insert_message(
&channel_id,
client.get_uuid()?,
&contents,
chrono::Utc::now().timestamp(),
)?;
let server = server.clone();
for c in server.clients.lock().unwrap().iter() {
let c = c.clone();
let server = server.clone();
let msg = msg.clone();
std::thread::spawn(move || {
server
.wrap_err(&c, c.send(types::ServerMessage::MessageCreate(msg)))
.expect("Failed to broadcast");
});
}
Ok(())
}
pub fn edit(
_server: &Arc<Server>,
_client: &Client,
message_id: usize,
new_contents: &str,
) -> crate::Result<()> {
LOGGER.info(format!("EditMessage {message_id}: {new_contents}"));
Ok(())
}
pub fn delete(_server: &Arc<Server>, _client: &Client, message_id: usize) -> crate::Result<()> {
LOGGER.info(format!("DeleteMessage {message_id}"));
Ok(())
}