From 7db8c3e9810472081a6f1cb6a24d4ed375eb0f50 Mon Sep 17 00:00:00 2001 From: Piyush Mishra Date: Tue, 11 May 2021 13:37:55 +0530 Subject: [PATCH] edit --- src/broker_messages/pind.rs | 10 ++++++ src/broker_messages/sansad.rs | 9 ++++++ src/chat_pinnd/message.rs | 19 ++++++++++- src/chat_pinnd/mod.rs | 1 + src/ws_sansad/handlers.rs | 14 ++++++++ src/ws_sansad/messages.rs | 52 ++++++++++++++++++++++++++++- src/ws_sansad/mod.rs | 1 + static/css/style.css | 2 +- static/index.html | 5 +-- static/js/app.js | 25 ++++++++++---- static/js/camera.js | 6 +++- static/js/message.js | 61 ++++++++++++++++++++++++++++++++--- 12 files changed, 189 insertions(+), 16 deletions(-) diff --git a/src/broker_messages/pind.rs b/src/broker_messages/pind.rs index 74be444..aede602 100644 --- a/src/broker_messages/pind.rs +++ b/src/broker_messages/pind.rs @@ -70,6 +70,16 @@ pub struct DeleteMsg { pub msg_id: Vec } +// Request to delete messages +#[derive(Clone, Message)] +#[rtype(result = "()")] +pub struct EditMsg { + pub kaksh_kunjika: String, + pub kunjika: String, + pub text: String, + pub msg_id: String +} + // Request to send list of users #[derive(Clone, Message)] #[rtype(result = "String")] diff --git a/src/broker_messages/sansad.rs b/src/broker_messages/sansad.rs index 3c849bf..2deaf60 100644 --- a/src/broker_messages/sansad.rs +++ b/src/broker_messages/sansad.rs @@ -44,6 +44,15 @@ pub struct WsDeleteMsg { pub sender_kunjika: String } +// Request to delete messages +#[derive(Clone, Message)] +#[rtype(result = "()")] +pub struct WsEditMsg { + pub text: String, + pub sender_kunjika: String, + pub msg_id: String +} + // Request to send transfer text #[derive(Clone, Message)] #[rtype(result = "()")] diff --git a/src/chat_pinnd/message.rs b/src/chat_pinnd/message.rs index f9a3603..3d3beac 100644 --- a/src/chat_pinnd/message.rs +++ b/src/chat_pinnd/message.rs @@ -59,7 +59,6 @@ impl Handler for ChatPinnd { } } - /// send delete messages for everyone impl Handler for ChatPinnd { type Result = (); @@ -74,4 +73,22 @@ impl Handler for ChatPinnd { }); } } +} + + +/// send delete messages for everyone +impl Handler for ChatPinnd { + type Result = (); + + fn handle(&mut self, msg: ms::pind::EditMsg, _: &mut Self::Context) -> Self::Result { + if let Some(kaksh) = self.kaksh.get_mut(&msg.kaksh_kunjika) { + kaksh.loog.iter().for_each(|c| { + c.addr.do_send(ms::sansad::WsEditMsg { + sender_kunjika: msg.kunjika.to_owned(), + msg_id: msg.msg_id.to_owned(), + text: msg.text.to_owned() + }); + }); + } + } } \ No newline at end of file diff --git a/src/chat_pinnd/mod.rs b/src/chat_pinnd/mod.rs index 5ff4832..0aad304 100644 --- a/src/chat_pinnd/mod.rs +++ b/src/chat_pinnd/mod.rs @@ -49,6 +49,7 @@ impl Actor for ChatPinnd { self.subscribe_system_async::(ctx); self.subscribe_system_async::(ctx); self.subscribe_system_async::(ctx); + self.subscribe_system_async::(ctx); self.subscribe_system_async::(ctx); self.subscribe_system_async::(ctx); } diff --git a/src/ws_sansad/handlers.rs b/src/ws_sansad/handlers.rs index 2900cb6..19f33fa 100644 --- a/src/ws_sansad/handlers.rs +++ b/src/ws_sansad/handlers.rs @@ -56,6 +56,20 @@ impl Handler for WsSansad { } } +/// delete messages +impl Handler for WsSansad { + type Result = (); + fn handle(&mut self, msg: ms::sansad::WsEditMsg, ctx: &mut Self::Context) -> Self::Result { + let json = json!({ + "cmd": "edit", + "msg_id": msg.msg_id, + "text": msg.text, + "kunjika": msg.sender_kunjika // Sender's kunjuka + }); + ctx.text(json.to_string()); + } +} + /// List Vayakti impl Handler for WsSansad { type Result = (); diff --git a/src/ws_sansad/messages.rs b/src/ws_sansad/messages.rs index c517c33..0684d28 100644 --- a/src/ws_sansad/messages.rs +++ b/src/ws_sansad/messages.rs @@ -174,4 +174,54 @@ impl WsSansad { msg_id }); } -} \ No newline at end of file + + /// send text to vayakti in kaksh + pub async fn edit_msg(&mut self, val: Value) { + // check if vayakti exist + if let Isthiti::None = self.isthiti { + self.send_err_response("Not in any Kaksh"); + return; + } + + // check if connected to any kaksh + match self.isthiti { + Isthiti::Kaksh(_) => (), + _ => { + self.send_err_response("Kaksh not connected"); + return; + } + } + + // edit text + let text = match val.get("text") { + Some(val) => val, + None => { + self.send_err_response("Invalid request"); + return; + } + }.as_str().unwrap().to_owned(); + + // msg_id + let msg_id = match val.get("msg_id") { + Some(val) => val, + None => { + self.send_err_response("Invalid request"); + return; + } + }.as_str().unwrap().to_owned(); + + let kaksh_kunjika = match &self.isthiti { + Isthiti::Kaksh(kaksh_kunjika) => { + kaksh_kunjika.to_owned() + }, _ => { + return; + } + }; + Broker::::issue_async(ms::pind::EditMsg { + kaksh_kunjika, + kunjika: self.kunjika.to_owned(), + text, + msg_id + }); + } +} diff --git a/src/ws_sansad/mod.rs b/src/ws_sansad/mod.rs index 0105b03..3727593 100644 --- a/src/ws_sansad/mod.rs +++ b/src/ws_sansad/mod.rs @@ -109,6 +109,7 @@ impl WsSansad { "img" => { self.send_image(val).await }, "status" => { self.send_status(val).await }, "del" => { self.delete_msg(val).await }, + "edit" => { self.edit_msg(val).await }, "list" => { self.list().await }, "leave" => { self.leave_kaksh().await }, _ => () diff --git a/static/css/style.css b/static/css/style.css index 708b943..313bd5c 100644 --- a/static/css/style.css +++ b/static/css/style.css @@ -225,7 +225,7 @@ input { background-color: var(--msg-reply-bg-color); } -.message .message-by { +.message .message-sub { font-size: 1.3rem; font-style: italic; text-decoration: underline; diff --git a/static/index.html b/static/index.html index 6d150ec..e4715b3 100644 --- a/static/index.html +++ b/static/index.html @@ -145,9 +145,10 @@ @@ -158,7 +159,7 @@ -