diff --git a/python/src/deltachat/events.py b/python/src/deltachat/events.py index d68f83dd3..8ff0ae770 100644 --- a/python/src/deltachat/events.py +++ b/python/src/deltachat/events.py @@ -99,12 +99,16 @@ class FFIEventTracker: break def get_matching(self, event_name_regex, check_error=True, timeout=None): + for ev in self.yield_matching(event_name_regex, check_error, timeout): + return ev + + def yield_matching(self, event_name_regex, check_error=True, timeout=None): self.account.log("-- waiting for event with regex: {} --".format(event_name_regex)) rex = re.compile("(?:{}).*".format(event_name_regex)) while 1: ev = self.get(timeout=timeout, check_error=check_error) if rex.match(ev.name): - return ev + yield ev def get_info_matching(self, regex): rex = re.compile("(?:{}).*".format(regex)) diff --git a/python/tests/test_account.py b/python/tests/test_account.py index 23d9f1e29..9ea912ed4 100644 --- a/python/tests/test_account.py +++ b/python/tests/test_account.py @@ -1087,13 +1087,11 @@ class TestOnlineAccount: lp.sec("ac2: mark seen {}".format(msg)) msg.mark_seen() - lp.sec("ac2: send echo message") - msg.chat.send_text("world") - - lp.sec("ac1: waiting for echo message") - incoming = message_queue.get(timeout=10) - assert incoming.text == "world" - assert msg.is_in_seen() + for ev in ac1._evtracker.yield_matching(""): + if ev.name == "DC_EVENT_INCOMING_MSG": + pytest.fail("MDN arrived as regular incoming message") + elif ev.name == "DC_EVENT_MSG_READ": + break def test_send_and_receive_image(self, acfactory, lp, data): ac1, ac2 = acfactory.get_two_online_accounts() diff --git a/src/dc_receive_imf.rs b/src/dc_receive_imf.rs index 813ed6732..eb303cadd 100644 --- a/src/dc_receive_imf.rs +++ b/src/dc_receive_imf.rs @@ -656,10 +656,10 @@ async fn add_parts( .sql .with_conn(move |mut conn| { let mut ids = Vec::with_capacity(parts.len()); + let mut is_hidden = is_hidden; + for part in &mut parts { let mut txt_raw = "".to_string(); - let mut is_hidden = is_hidden; - let mut stmt = conn.prepare_cached( "INSERT INTO msgs \ (rfc724_mid, server_folder, server_uid, chat_id, from_id, to_id, timestamp, \