From 6623fda897aecd798b713fd84fdfd33a31affa59 Mon Sep 17 00:00:00 2001 From: Piyush Mishra Date: Tue, 11 May 2021 10:39:58 +0530 Subject: [PATCH] old browser fix --- src/broker_messages/pind.rs | 13 ++++++++-- src/broker_messages/sansad.rs | 12 +++++++-- src/chat_pinnd/message.rs | 17 ++++++++++++ src/ws_sansad/handlers.rs | 16 ++++++++++-- src/ws_sansad/messages.rs | 49 ++++++++++++++++++++++++++++++++++- src/ws_sansad/mod.rs | 1 + static/js/actions.js | 4 ++- static/js/message.js | 10 ++++--- 8 files changed, 111 insertions(+), 11 deletions(-) diff --git a/src/broker_messages/pind.rs b/src/broker_messages/pind.rs index ed94408..5d01e47 100644 --- a/src/broker_messages/pind.rs +++ b/src/broker_messages/pind.rs @@ -52,7 +52,7 @@ pub struct SendImage { pub src: String } -// Request to send text t +// Request to send status #[derive(Clone, Message)] #[rtype(result = "()")] pub struct SendStatus { @@ -61,7 +61,16 @@ pub struct SendStatus { pub status: String } -// Request to send text t +// Request to delete messages +#[derive(Clone, Message)] +#[rtype(result = "()")] +pub struct DeleteMsg { + pub kaksh_kunjika: String, + pub kunjika: String, + pub msg_id: Vec +} + +// Request to send list of users #[derive(Clone, Message)] #[rtype(result = "String")] pub struct List { diff --git a/src/broker_messages/sansad.rs b/src/broker_messages/sansad.rs index 2a00047..8d18e14 100644 --- a/src/broker_messages/sansad.rs +++ b/src/broker_messages/sansad.rs @@ -19,7 +19,7 @@ pub struct WsText { pub msg_id: u128 } -// Request to send transfer text +// Request to send transfer Image #[derive(Clone, Message)] #[rtype(result = "()")] pub struct WsImage { @@ -28,7 +28,7 @@ pub struct WsImage { pub msg_id: u128 } -// Request to send transfer text +// Request to send transfer status #[derive(Clone, Message)] #[rtype(result = "()")] pub struct WsStatus { @@ -36,6 +36,14 @@ pub struct WsStatus { pub sender_kunjika: String } +// Request to delete messages +#[derive(Clone, Message)] +#[rtype(result = "()")] +pub struct WsDeleteMsg { + pub msg_id: Vec, + pub sender_kunjika: 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 a5432bc..f9a3603 100644 --- a/src/chat_pinnd/message.rs +++ b/src/chat_pinnd/message.rs @@ -57,4 +57,21 @@ impl Handler for ChatPinnd { }); } } +} + + +/// send delete messages for everyone +impl Handler for ChatPinnd { + type Result = (); + + fn handle(&mut self, msg: ms::pind::DeleteMsg, _: &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::WsDeleteMsg { + sender_kunjika: msg.kunjika.to_owned(), + msg_id: msg.msg_id.clone() + }); + }); + } + } } \ No newline at end of file diff --git a/src/ws_sansad/handlers.rs b/src/ws_sansad/handlers.rs index c03e74b..2900cb6 100644 --- a/src/ws_sansad/handlers.rs +++ b/src/ws_sansad/handlers.rs @@ -16,7 +16,7 @@ impl Handler for WsSansad { } } -/// send text message +/// send image message impl Handler for WsSansad { type Result = (); fn handle(&mut self, msg: ms::sansad::WsImage, ctx: &mut Self::Context) -> Self::Result { @@ -30,7 +30,6 @@ impl Handler for WsSansad { } } - /// send text status impl Handler for WsSansad { type Result = (); @@ -44,6 +43,19 @@ impl Handler for WsSansad { } } +/// delete messages +impl Handler for WsSansad { + type Result = (); + fn handle(&mut self, msg: ms::sansad::WsDeleteMsg, ctx: &mut Self::Context) -> Self::Result { + let json = json!({ + "cmd": "del", + "msg_id": msg.msg_id, + "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 da270c0..4aa081d 100644 --- a/src/ws_sansad/messages.rs +++ b/src/ws_sansad/messages.rs @@ -87,7 +87,7 @@ impl WsSansad { }); } - /// send text to vayakti in kaksh + /// send image to vayakti in kaksh pub async fn send_image(&mut self, val: Value) { // check if vayakti exist if let Isthiti::None = self.isthiti { @@ -126,4 +126,51 @@ impl WsSansad { src }); } + + /// delete text to vayakti in kaksh + pub async fn delete_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; + } + } + + // image src + let mut msg_id = vec![]; + + let ids = match val.get("msg_id") { + Some(val) => val, + None => { + self.send_err_response("Invalid request"); + return; + } + }.as_array().unwrap(); + + for id in ids { + msg_id.push(id.as_str().unwrap().parse::().unwrap()); + } + drop(ids); + + let kaksh_kunjika = match &self.isthiti { + Isthiti::Kaksh(kaksh_kunjika) => { + kaksh_kunjika.to_owned() + }, _ => { + return; + } + }; + Broker::::issue_async(ms::pind::DeleteMsg { + kaksh_kunjika, + kunjika: self.kunjika.to_owned(), + msg_id + }); + } } \ No newline at end of file diff --git a/src/ws_sansad/mod.rs b/src/ws_sansad/mod.rs index 13ee233..0105b03 100644 --- a/src/ws_sansad/mod.rs +++ b/src/ws_sansad/mod.rs @@ -108,6 +108,7 @@ impl WsSansad { "text" => { self.send_text(val).await }, "img" => { self.send_image(val).await }, "status" => { self.send_status(val).await }, + "del" => { self.delete_msg(val).await }, "list" => { self.list().await }, "leave" => { self.leave_kaksh().await }, _ => () diff --git a/static/js/actions.js b/static/js/actions.js index 7da0ff2..80052b0 100644 --- a/static/js/actions.js +++ b/static/js/actions.js @@ -1,6 +1,8 @@ class Actions { - actions = []; // [[id, func]] + constructor() { + this.actions = []; // [[id, func]] + } execute() { if(this.actions.length <= 0) return; diff --git a/static/js/message.js b/static/js/message.js index a69a095..5d42fde 100644 --- a/static/js/message.js +++ b/static/js/message.js @@ -124,7 +124,7 @@ let Messages = class { } static prepareReply() { - var text = this.selectedMessageToText(); + var text = Messages.selectedMessageToText(); var el = $('#reply_clip'); el.removeClass('is-hidden'); el.attr('msg', text); @@ -135,7 +135,7 @@ let Messages = class { static copyMessagesToClipboard() { var $temp = $("