From 7f8f8718133e1e122b3b9cb35b85e2c70d5bf960 Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Wed, 8 Jul 2020 00:43:49 +0300 Subject: [PATCH] Make ephemeral timer changes not ephemeral --- python/tests/test_account.py | 4 +++- src/chat.rs | 6 +++++- src/dc_receive_imf.rs | 10 +++++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/python/tests/test_account.py b/python/tests/test_account.py index fba13799e..c65164eb7 100644 --- a/python/tests/test_account.py +++ b/python/tests/test_account.py @@ -1562,7 +1562,9 @@ class TestOnlineAccount: system_message1 = ac2._evtracker.wait_next_incoming_message() assert chat2.get_ephemeral_timer() == 60 assert system_message1.is_system_message() - assert "Ephemeral timer: 60\n" in system_message1.get_message_info() + + # Disabled until markers are implemented + # assert "Ephemeral timer: 60\n" in system_message1.get_message_info() lp.sec("ac2: send message to ac1") sent_message = chat2.send_text("message") diff --git a/src/chat.rs b/src/chat.rs index 34a36c8f0..f30714d0f 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -959,7 +959,11 @@ impl Chat { .await?; } - let ephemeral_timer = self.id.get_ephemeral_timer(context).await?; + let ephemeral_timer = if msg.param.get_cmd() == SystemMessage::EphemeralTimerChanged { + EphemeralTimer::Disabled + } else { + self.id.get_ephemeral_timer(context).await? + }; let ephemeral_timestamp = match ephemeral_timer { EphemeralTimer::Disabled => 0, EphemeralTimer::Enabled { duration } => timestamp + i64::from(duration), diff --git a/src/dc_receive_imf.rs b/src/dc_receive_imf.rs index a977ac6d1..bf07bd0e7 100644 --- a/src/dc_receive_imf.rs +++ b/src/dc_receive_imf.rs @@ -622,7 +622,7 @@ async fn add_parts( } // Extract ephemeral timer from the message. - let timer = if let Some(value) = mime_parser.get(HeaderDef::EphemeralTimer) { + let mut timer = if let Some(value) = mime_parser.get(HeaderDef::EphemeralTimer) { match value.parse::() { Ok(timer) => timer, Err(err) => { @@ -658,6 +658,14 @@ async fn add_parts( mime_parser, stock_ephemeral_timer_changed(context, timer, from_id).await, ); + + // Do not delete the system message itself. + // + // This prevents confusion when timer is changed + // to 1 week, and then changed to 1 hour: after 1 + // hour, only the message about the change to 1 + // week is left. + timer = EphemeralTimer::Disabled; } else { chat::add_info_msg( context,