Send system message to chat when user changes autodelete timer

This commit is contained in:
Alexander Krotov
2020-01-06 08:03:09 +01:00
parent b4337685cf
commit e1773edf7f
2 changed files with 34 additions and 4 deletions

View File

@@ -2582,10 +2582,15 @@ pub fn get_autodelete_timer(context: &Context, chat_id: ChatId) -> u32 {
.unwrap_or_default()
}
/// Set autodelete timer value in seconds.
/// Set autodelete timer value without sending a message.
///
/// If timer value is 0, disable autodelete timer.
pub fn set_autodelete_timer(context: &Context, chat_id: ChatId, timer: u32) -> Result<(), Error> {
/// Used when a message arrives indicating that someone else has
/// changed the timer value for a chat.
pub(crate) fn inner_set_autodelete_timer(
context: &Context,
chat_id: ChatId,
timer: u32,
) -> Result<(), Error> {
context.sql.execute(
"UPDATE chats
SET autodelete_timer=?
@@ -2595,6 +2600,31 @@ pub fn set_autodelete_timer(context: &Context, chat_id: ChatId, timer: u32) -> R
Ok(())
}
/// Set autodelete timer value in seconds.
///
/// If timer value is 0, disable autodelete timer.
pub fn set_autodelete_timer(context: &Context, chat_id: ChatId, timer: u32) -> Result<(), Error> {
if timer == get_autodelete_timer(context, chat_id) {
return Ok(());
}
inner_set_autodelete_timer(context, chat_id, timer)?;
let mut msg = Message::new(Viewtype::Text);
msg.text = Some(context.stock_system_msg(
StockMessage::MsgAutodeleteTimerChanged,
timer.to_string(),
"",
0,
));
msg.param.set_cmd(SystemMessage::AutodeleteTimerChanged);
if let Err(err) = send_msg(context, chat_id, &mut msg) {
warn!(
context,
"Failed to send a message about autodelete timer change: {:?}", err
);
}
Ok(())
}
#[cfg(test)]
mod tests {
use super::*;

View File

@@ -217,7 +217,7 @@ pub fn dc_receive_imf(
};
if chat::get_autodelete_timer(context, chat_id) != timer {
match chat::set_autodelete_timer(context, chat_id, timer) {
match chat::inner_set_autodelete_timer(context, chat_id, timer) {
Ok(()) => {
let stock_str = context.stock_system_msg(
StockMessage::MsgAutodeleteTimerChanged,