Message database and protocol fixes
This commit is contained in:
+10
-15
@@ -29,21 +29,7 @@ pub fn send(
|
||||
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::message::ServerMessage::MessageCreate(msg)),
|
||||
)
|
||||
.expect("Failed to broadcast");
|
||||
});
|
||||
}
|
||||
server.broadcast(types::message::ServerMessage::MessageCreate(msg.clone()));
|
||||
|
||||
server.send_plugin_message(&LoaderMessage::MessageSent {
|
||||
user_id: client.get_uuid().unwrap_or_default(),
|
||||
@@ -69,6 +55,12 @@ pub fn edit(
|
||||
}
|
||||
|
||||
server.db.edit_message(message_id, new_contents)?;
|
||||
|
||||
server.broadcast(types::message::ServerMessage::MessageUpdate {
|
||||
message_id,
|
||||
contents: new_contents.to_string(),
|
||||
});
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -83,5 +75,8 @@ pub fn delete(server: &Arc<Server>, client: &Client, message_id: i64) -> crate::
|
||||
}
|
||||
|
||||
server.db.delete_message(message_id)?;
|
||||
|
||||
server.broadcast(types::message::ServerMessage::MessageDelete { message_id });
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
+14
-1
@@ -4,7 +4,7 @@ use std::sync::Arc;
|
||||
|
||||
use crate::{
|
||||
server::Server,
|
||||
types::message::{ClientMessage, WsMessage},
|
||||
types::message::{ClientMessage, ServerMessage, WsMessage},
|
||||
utils::client::Client,
|
||||
};
|
||||
|
||||
@@ -44,4 +44,17 @@ impl Server {
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn broadcast(self: &Arc<Self>, msg: ServerMessage) {
|
||||
for c in self.clients.lock().unwrap().iter() {
|
||||
let c = c.clone();
|
||||
let server = self.clone();
|
||||
let msg = msg.clone();
|
||||
std::thread::spawn(move || {
|
||||
server
|
||||
.wrap_err(&c, c.send(msg))
|
||||
.expect("Failed to broadcast");
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+4
-2
@@ -96,11 +96,13 @@ pub mod message {
|
||||
MessageCreate(data::Message),
|
||||
|
||||
/// A message was edited
|
||||
MessageUpdate(data::Message),
|
||||
MessageUpdate {
|
||||
message_id: i64,
|
||||
contents: String,
|
||||
},
|
||||
|
||||
/// A message was deleted
|
||||
MessageDelete {
|
||||
channel_id: String,
|
||||
message_id: i64,
|
||||
},
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ impl Database {
|
||||
/// Delete a message from the DB
|
||||
pub fn edit_message(&self, message_id: i64, contents: &str) -> Result<()> {
|
||||
self.0.execute(
|
||||
"UPDATE table_name
|
||||
"UPDATE chat
|
||||
SET contents = ?2
|
||||
WHERE id = ?1;
|
||||
",
|
||||
@@ -84,7 +84,7 @@ impl Database {
|
||||
Ok((
|
||||
row.get::<_, i64>(0)?, // id
|
||||
row.get::<_, String>(1)?, // channel_id
|
||||
row.get::<_, u32>(2)?, // user_id
|
||||
row.get::<_, String>(2)?, // user_id
|
||||
row.get::<_, String>(3)?, // contents
|
||||
row.get::<_, i64>(4)?, // timestamp
|
||||
))
|
||||
|
||||
Reference in New Issue
Block a user