diff --git a/deltachat-ffi/deltachat.h b/deltachat-ffi/deltachat.h index 627af2c0f..67a0ac654 100644 --- a/deltachat-ffi/deltachat.h +++ b/deltachat-ffi/deltachat.h @@ -3924,6 +3924,16 @@ int64_t dc_lot_get_timestamp (const dc_lot_t* lot); */ #define DC_EVENT_IMAP_MESSAGE_MOVED 105 +/** + * Emitted when a new blob file was successfully written + * + * @param data1 0 + * @param data2 (const char*) path name + * Must not be free()'d or modified and is valid only until the callback returns. + * @return 0 + */ +#define DC_EVENT_NEW_BLOB_FILE 150 + /** * The library-user should write a warning string to the log. * Passed to the callback given to dc_context_new(). diff --git a/deltachat-ffi/src/lib.rs b/deltachat-ffi/src/lib.rs index 265f634c6..fdce0e5ca 100644 --- a/deltachat-ffi/src/lib.rs +++ b/deltachat-ffi/src/lib.rs @@ -127,6 +127,7 @@ impl ContextWrapper { | Event::SmtpMessageSent(msg) | Event::ImapMessageDeleted(msg) | Event::ImapMessageMoved(msg) + | Event::NewBlobFile(msg) | Event::Warning(msg) | Event::Error(msg) | Event::ErrorNetwork(msg) diff --git a/python/src/deltachat/const.py b/python/src/deltachat/const.py index 09821bda8..64587ce68 100644 --- a/python/src/deltachat/const.py +++ b/python/src/deltachat/const.py @@ -63,6 +63,7 @@ DC_EVENT_IMAP_CONNECTED = 102 DC_EVENT_SMTP_MESSAGE_SENT = 103 DC_EVENT_IMAP_MESSAGE_DELETED = 104 DC_EVENT_IMAP_MESSAGE_MOVED = 105 +DC_EVENT_NEW_BLOB_FILE = 150 DC_EVENT_WARNING = 300 DC_EVENT_ERROR = 400 DC_EVENT_ERROR_NETWORK = 401 diff --git a/python/tests/test_account.py b/python/tests/test_account.py index af9750c3e..2a0d29fd4 100644 --- a/python/tests/test_account.py +++ b/python/tests/test_account.py @@ -229,7 +229,9 @@ class TestOfflineChat: chat1.send_image(path="notexists") fn = data.get_path("d.png") lp.sec("sending image") + chat1.account._evlogger.consume_events() msg = chat1.send_image(fn) + chat1.account._evlogger.get_matching("DC_EVENT_NEW_BLOB_FILE") assert msg.is_image() assert msg assert msg.id > 0 diff --git a/src/context.rs b/src/context.rs index d4e8e559f..2b70a39ca 100644 --- a/src/context.rs +++ b/src/context.rs @@ -208,7 +208,9 @@ impl Context { .open(&path) { file.write_all(data)?; - return Ok(format!("$BLOBDIR/{}", candidate_basename)); + let db_entry = format!("$BLOBDIR/{}", candidate_basename); + self.call_cb(Event::NewBlobFile(db_entry.clone())); + return Ok(db_entry); } } bail!("out of luck to create new blob file"); diff --git a/src/events.rs b/src/events.rs index 8ef45aba9..6e792d18a 100644 --- a/src/events.rs +++ b/src/events.rs @@ -54,6 +54,12 @@ pub enum Event { #[strum(props(id = "105"))] ImapMessageMoved(String), + /// Emitted when an new file in the $BLOBDIR was created + /// + /// @return 0 + #[strum(props(id = "150"))] + NewBlobFile(String), + /// The library-user should write a warning string to the log. /// Passed to the callback given to dc_context_new(). /// diff --git a/src/job.rs b/src/job.rs index 111cf6513..77192f42a 100644 --- a/src/job.rs +++ b/src/job.rs @@ -947,7 +947,6 @@ fn add_smtp_job(context: &Context, action: Action, mimefactory: &MimeFactory) -> ) }; let bpath = context.new_blob_file(&mimefactory.rfc724_mid, bytes)?; - info!(context, "add_smtp_job file written: {:?}", bpath); let recipients = mimefactory.recipients_addr.join("\x1e"); param.set(Param::File, &bpath); param.set(Param::Recipients, &recipients);