diff --git a/src/dc_receive_imf.rs b/src/dc_receive_imf.rs index 99d662d5e..1511c51b4 100644 --- a/src/dc_receive_imf.rs +++ b/src/dc_receive_imf.rs @@ -201,42 +201,6 @@ pub fn dc_receive_imf( }; } - let timer = if let Some(value) = mime_parser.get(HeaderDef::AutodeleteTimer) { - match value.parse::() { - Ok(timer) => timer, - Err(err) => { - warn!( - context, - "can't parse autodelete timer \"{}\": {}", value, err - ); - 0 - } - } - } else { - 0 - }; - - if chat::get_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, - timer.to_string(), - "", - from_id, - ); - chat::add_info_msg(context, chat_id, stock_str); - context.call_cb(Event::ChatAutodeleteTimerModified { chat_id, timer }); - } - Err(err) => { - warn!( - context, - "failed to modify timer for chat {}: {}", chat_id, err - ); - } - } - } - // Get user-configured server deletion let delete_server_after = context.get_config_delete_server_after(); @@ -640,6 +604,47 @@ fn add_parts( &mut rcvd_timestamp, ); + // Extract autodelete timer from the message. + let timer = if let Some(value) = mime_parser.get(HeaderDef::AutodeleteTimer) { + match value.parse::() { + Ok(timer) => timer, + Err(err) => { + warn!( + context, + "can't parse autodelete timer \"{}\": {}", value, err + ); + 0 + } + } + } else { + 0 + }; + + // Apply autodelete timer changes to the chat. + if chat::get_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, + timer.to_string(), + "", + from_id, + ); + chat::add_info_msg(context, *chat_id, stock_str); + context.call_cb(Event::ChatAutodeleteTimerModified { + chat_id: *chat_id, + timer, + }); + } + Err(err) => { + warn!( + context, + "failed to modify timer for chat {}: {}", chat_id, err + ); + } + } + } + // unarchive chat chat_id.unarchive(context)?;