From ba76944d757af7a824cd21e30836124922ffcdde Mon Sep 17 00:00:00 2001 From: link2xt Date: Thu, 31 Jul 2025 13:54:57 +0000 Subject: [PATCH] fix: display correct timer value for ephemeral timer changes The timer change should not disappear, but should display correct timer change. --- src/ephemeral/ephemeral_tests.rs | 26 ++++++++++++++------------ src/receive_imf.rs | 4 +++- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/ephemeral/ephemeral_tests.rs b/src/ephemeral/ephemeral_tests.rs index 19b3d1a87..56d18de45 100644 --- a/src/ephemeral/ephemeral_tests.rs +++ b/src/ephemeral/ephemeral_tests.rs @@ -128,31 +128,33 @@ async fn test_stock_ephemeral_messages() { /// Test enabling and disabling ephemeral timer remotely. #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_ephemeral_enable_disable() -> Result<()> { - let alice = TestContext::new_alice().await; - let bob = TestContext::new_bob().await; + let mut tcm = TestContextManager::new(); + let alice = &tcm.alice().await; + let bob = &tcm.bob().await; - let chat_alice = alice.create_chat(&bob).await.id; - let chat_bob = bob.create_chat(&alice).await.id; + let chat_alice = alice.create_chat(bob).await.id; + let chat_bob = bob.create_chat(alice).await.id; chat_alice - .set_ephemeral_timer(&alice.ctx, Timer::Enabled { duration: 60 }) + .set_ephemeral_timer(alice, Timer::Enabled { duration: 60 }) .await?; let sent = alice.pop_sent_msg().await; - bob.recv_msg(&sent).await; + let bob_received_message = bob.recv_msg(&sent).await; assert_eq!( - chat_bob.get_ephemeral_timer(&bob.ctx).await?, + bob_received_message.text, + "Message deletion timer is set to 1 minute by alice@example.org." + ); + assert_eq!( + chat_bob.get_ephemeral_timer(bob).await?, Timer::Enabled { duration: 60 } ); chat_alice - .set_ephemeral_timer(&alice.ctx, Timer::Disabled) + .set_ephemeral_timer(alice, Timer::Disabled) .await?; let sent = alice.pop_sent_msg().await; bob.recv_msg(&sent).await; - assert_eq!( - chat_bob.get_ephemeral_timer(&bob.ctx).await?, - Timer::Disabled - ); + assert_eq!(chat_bob.get_ephemeral_timer(bob).await?, Timer::Disabled); Ok(()) } diff --git a/src/receive_imf.rs b/src/receive_imf.rs index e24616654..840c4fa94 100644 --- a/src/receive_imf.rs +++ b/src/receive_imf.rs @@ -1835,6 +1835,8 @@ async fn add_parts( { Some(stock_str::msg_location_enabled_by(context, from_id).await) } else if mime_parser.is_system_message == SystemMessage::EphemeralTimerChanged { + let better_msg = stock_ephemeral_timer_changed(context, ephemeral_timer, from_id).await; + // Do not delete the system message itself. // // This prevents confusion when timer is changed @@ -1843,7 +1845,7 @@ async fn add_parts( // week is left. ephemeral_timer = EphemeralTimer::Disabled; - Some(stock_ephemeral_timer_changed(context, ephemeral_timer, from_id).await) + Some(better_msg) } else { None };