From 7c16544ff64864a2aa7e8c99fd6d60bb8577c618 Mon Sep 17 00:00:00 2001 From: eta Date: Sun, 5 Apr 2020 15:15:20 +0100 Subject: [PATCH] add invigorating new config option --- src/config.rs | 4 +++- src/whatsapp.rs | 16 ++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/config.rs b/src/config.rs index 7a3c589..6a9b73e 100644 --- a/src/config.rs +++ b/src/config.rs @@ -64,7 +64,9 @@ pub struct WhatsappConfig { #[serde(default)] pub backoff_time_ms: Option, #[serde(default)] - pub track_presence: bool + pub track_presence: bool, + #[serde(default)] + pub drop_non_group_messages_on_the_floor: bool } #[derive(Deserialize, Debug, Clone)] pub struct IrcClientConfig { diff --git a/src/whatsapp.rs b/src/whatsapp.rs index 58ddcbe..acadf94 100644 --- a/src/whatsapp.rs +++ b/src/whatsapp.rs @@ -49,6 +49,7 @@ pub struct WhatsappManager { autocreate: Option, autoupdate_nicks: bool, mark_read: bool, + drop_non_group_messages_on_the_floor: bool, track_presence: bool, our_jid: Option, prev_jid: Option, @@ -112,6 +113,7 @@ impl WhatsappManager { let autocreate = p.cfg.whatsapp.autocreate_prefix.clone(); let backlog_start = p.cfg.whatsapp.backlog_start.clone(); let mark_read = p.cfg.whatsapp.mark_read; + let drop_non_group_messages_on_the_floor = p.cfg.whatsapp.drop_non_group_messages_on_the_floor; let autoupdate_nicks = p.cfg.whatsapp.autoupdate_nicks; let backoff_time_ms = p.cfg.whatsapp.backoff_time_ms.unwrap_or(10000); let track_presence = p.cfg.whatsapp.track_presence; @@ -126,6 +128,10 @@ impl WhatsappManager { backoff_time_ms }); + if drop_non_group_messages_on_the_floor { + error!("I'm going to drop all non-group messages on the floor! Are you sure this is a good idea?!"); + } + Self { conn, contacts: HashMap::new(), @@ -137,7 +143,8 @@ impl WhatsappManager { outbox: VecDeque::new(), backlog_start, rx, cf_tx, cb_tx, qr_path, store, msgproc, autocreate, - mark_read, autoupdate_nicks, track_presence, ackp + mark_read, autoupdate_nicks, track_presence, ackp, + drop_non_group_messages_on_the_floor } } fn handle_int_rx(&mut self, c: WhatsappCommand) -> Result<()> { @@ -409,7 +416,12 @@ impl WhatsappManager { let (msgs, is_media) = self.msgproc.process_wa_incoming(inc)?; let num_msgs = msgs.len(); for msg in msgs { - self.store_message(&msg.from, &msg.text, msg.group, msg.ts)?; + if self.drop_non_group_messages_on_the_floor && msg.group.is_some() && !is_media { + // *thud* + } + else { + self.store_message(&msg.from, &msg.text, msg.group, msg.ts)?; + } } if is_media { /* none of the other fancy stuff below applies */