From 7d26968bb352f9c5fd600945b4bd886f011e3f28 Mon Sep 17 00:00:00 2001 From: link2xt Date: Sun, 20 Mar 2022 18:12:01 +0000 Subject: [PATCH] Try to start ephemeral timers only if some message has nonzero timer --- src/message.rs | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/message.rs b/src/message.rs index 4ff3460ac..2f94db7f5 100644 --- a/src/message.rs +++ b/src/message.rs @@ -1294,6 +1294,7 @@ pub async fn markseen_msgs(context: &Context, msg_ids: Vec) -> Result<()> m.id AS id, m.chat_id AS chat_id, m.state AS state, + m.ephemeral_timer AS ephemeral_timer, c.blocked AS blocked FROM msgs m LEFT JOIN chats c ON c.id=m.chat_id WHERE m.id IN ({}) AND m.chat_id>9", @@ -1305,18 +1306,32 @@ pub async fn markseen_msgs(context: &Context, msg_ids: Vec) -> Result<()> let chat_id: ChatId = row.get("chat_id")?; let state: MessageState = row.get("state")?; let blocked: Option = row.get("blocked")?; - Ok((id, chat_id, state, blocked.unwrap_or_default())) + let ephemeral_timer: EphemeralTimer = row.get("ephemeral_timer")?; + Ok(( + id, + chat_id, + state, + blocked.unwrap_or_default(), + ephemeral_timer, + )) }, |rows| rows.collect::, _>>().map_err(Into::into), ) .await?; - start_ephemeral_timers_msgids(context, &msg_ids) - .await - .context("failed to start ephemeral timers")?; + if msgs + .iter() + .any(|(_id, _chat_id, _state, _blocked, ephemeral_timer)| { + *ephemeral_timer != EphemeralTimer::Disabled + }) + { + start_ephemeral_timers_msgids(context, &msg_ids) + .await + .context("failed to start ephemeral timers")?; + } let mut updated_chat_ids = BTreeSet::new(); - for (id, curr_chat_id, curr_state, curr_blocked) in msgs.into_iter() { + for (id, curr_chat_id, curr_state, curr_blocked, _curr_ephemeral_timer) in msgs.into_iter() { if curr_blocked == Blocked::Not && (curr_state == MessageState::InFresh || curr_state == MessageState::InNoticed) {