diff --git a/deltachat-ffi/deltachat.h b/deltachat-ffi/deltachat.h index afa5770c2..0a8875d2c 100644 --- a/deltachat-ffi/deltachat.h +++ b/deltachat-ffi/deltachat.h @@ -373,6 +373,14 @@ char* dc_get_blobdir (const dc_context_t* context); * - `save_mime_headers` = 1=save mime headers * and make dc_get_mime_headers() work for subsequent calls, * 0=do not save mime headers (default) + * - `delete_device_after` = 0=do not delete messages from device automatically (default), + * >=1=seconds, after which messages are deleted automatically from the device. + * Messages in the "saved messages" chat (see dc_chat_is_self_talk()) are skipped. + * - `delete_server_after` = 0=do not delete messages from server automatically (default), + * >=1=seconds, after which messages are deleted automatically from the server. + * Also emails matching the `show_emails` settings above are deleted from the server, + * the UI should clearly point that out. + * Messages in the "saved messages" chat (see dc_chat_is_self_talk()) are skipped. * * If you want to retrieve a value, use dc_get_config(). * @@ -1295,6 +1303,21 @@ int dc_get_msg_cnt (dc_context_t* context, uint32_t ch int dc_get_fresh_msg_cnt (dc_context_t* context, uint32_t chat_id); + +/** + * Estimte the number of messages that will be deleted + * by the dc_set_config()-options `delete_device_after` or `delete_server_after`. + * This is typically used to show the estimated impact to the user before actually enabling ephemeral messages. + * + * @param context The context object as returned from dc_context_new(). + * @param from_server 1=Estimate deletion count for server, 0=Estimate deletion count for device + * @param seconds Count messages older than the given number of seconds. + * @return Number of messages that are older than the given number of seconds. + * This includes emails downloaded due to the `show_emails` option. + * Messages in the "saved messages" folder are not counted as they will not be deleted automatically. + */ +int dc_estimate_deletion_cnt (dc_context_t* context, int from_server, int64_t seconds); + /** * Returns the message IDs of all _fresh_ messages of any chat. * Typically used for implementing notification summaries. @@ -1658,8 +1681,9 @@ char* dc_get_mime_headers (dc_context_t* context, uint32_t ms */ void dc_delete_msgs (dc_context_t* context, const uint32_t* msg_ids, int msg_cnt); -/** +/* * Empty IMAP server folder: delete all messages. + * Deprecated, use dc_set_config() with the key "delete_server_after" instead. * * @memberof dc_context_t * @param context The context object as created by dc_context_new() @@ -4127,28 +4151,8 @@ int64_t dc_lot_get_timestamp (const dc_lot_t* lot); */ -/** - * @defgroup DC_EMPTY DC_EMPTY - * - * These constants configure emptying imap folders with dc_empty_server() - * - * @addtogroup DC_EMPTY - * @{ - */ - -/** - * Clear all mvbox messages. - */ -#define DC_EMPTY_MVBOX 0x01 - -/** - * Clear all INBOX messages. - */ -#define DC_EMPTY_INBOX 0x02 - -/** - * @} - */ +#define DC_EMPTY_MVBOX 0x01 // Deprecated, flag for dc_empty_server(): Clear all mvbox messages +#define DC_EMPTY_INBOX 0x02 // Deprecated, flag for dc_empty_server(): Clear all INBOX messages /** diff --git a/deltachat-ffi/src/lib.rs b/deltachat-ffi/src/lib.rs index a7ccca1be..bf07d9f68 100644 --- a/deltachat-ffi/src/lib.rs +++ b/deltachat-ffi/src/lib.rs @@ -1045,6 +1045,25 @@ pub unsafe extern "C" fn dc_get_fresh_msg_cnt( .unwrap_or(0) } +#[no_mangle] +pub unsafe extern "C" fn dc_estimate_deletion_cnt( + context: *mut dc_context_t, + from_server: libc::c_int, + seconds: i64, +) -> libc::c_int { + if context.is_null() || seconds < 0 { + eprintln!("ignoring careless call to dc_estimate_deletion_cnt()"); + return 0; + } + let ffi_context = &*context; + ffi_context + .with_inner(|ctx| { + message::estimate_deletion_cnt(ctx, from_server as bool, seconds).unwrap_or(0) + as libc::c_int + }) + .unwrap_or(0) +} + #[no_mangle] pub unsafe extern "C" fn dc_get_fresh_msgs( context: *mut dc_context_t, diff --git a/src/message.rs b/src/message.rs index 32ef942b5..ee4a2e84a 100644 --- a/src/message.rs +++ b/src/message.rs @@ -1369,6 +1369,14 @@ pub fn get_deaddrop_msg_cnt(context: &Context) -> usize { } } +pub fn estimate_deletion_cnt( + _context: &Context, + _from_server: bool, + _seconds: i64, +) -> Result { + Ok(0) +} + /// Counts number of database records pointing to specified /// Message-ID. ///