diff --git a/src/chat.rs b/src/chat.rs index 20dd8a595..b4c7835b2 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -2004,7 +2004,7 @@ async fn prepare_send_msg( chat_id.is_unset() || chat_id == msg.chat_id, "Inconsistent chat ID" ); - message::update_msg_state(context, msg.id, MessageState::OutPending).await; + message::update_msg_state(context, msg.id, MessageState::OutPending).await?; } let job = job::send_msg_job(context, msg.id).await?; diff --git a/src/job.rs b/src/job.rs index 499eba5b9..516da5316 100644 --- a/src/job.rs +++ b/src/job.rs @@ -704,7 +704,7 @@ pub async fn action_exists(context: &Context, action: Action) -> Result { } async fn set_delivered(context: &Context, msg_id: MsgId) -> Result<()> { - message::update_msg_state(context, msg_id, MessageState::OutDelivered).await; + message::update_msg_state(context, msg_id, MessageState::OutDelivered).await?; let chat_id: ChatId = context .sql .query_get_value("SELECT chat_id FROM msgs WHERE id=?", paramsv![msg_id]) diff --git a/src/message.rs b/src/message.rs index ee968117e..898e61969 100644 --- a/src/message.rs +++ b/src/message.rs @@ -1297,7 +1297,7 @@ pub async fn markseen_msgs(context: &Context, msg_ids: Vec) -> Result<()> if curr_blocked == Blocked::Not && (curr_state == MessageState::InFresh || curr_state == MessageState::InNoticed) { - update_msg_state(context, id, MessageState::InSeen).await; + update_msg_state(context, id, MessageState::InSeen).await?; info!(context, "Seen message {}.", id); job::add( @@ -1316,15 +1316,19 @@ pub async fn markseen_msgs(context: &Context, msg_ids: Vec) -> Result<()> Ok(()) } -pub async fn update_msg_state(context: &Context, msg_id: MsgId, state: MessageState) -> bool { +pub(crate) async fn update_msg_state( + context: &Context, + msg_id: MsgId, + state: MessageState, +) -> Result<()> { context .sql .execute( "UPDATE msgs SET state=? WHERE id=?;", paramsv![state, msg_id], ) - .await - .is_ok() + .await?; + Ok(()) } // as we do not cut inside words, this results in about 32-42 characters. @@ -1456,7 +1460,7 @@ pub async fn handle_mdn( || msg_state == MessageState::OutPending || msg_state == MessageState::OutDelivered { - update_msg_state(context, msg_id, MessageState::OutMdnRcvd).await; + update_msg_state(context, msg_id, MessageState::OutMdnRcvd).await?; Ok(Some((chat_id, msg_id))) } else { Ok(None) @@ -2043,7 +2047,7 @@ mod tests { let payload = alice.pop_sent_msg().await; assert_state(&alice, alice_msg.id, MessageState::OutDelivered).await; - update_msg_state(&alice, alice_msg.id, MessageState::OutMdnRcvd).await; + update_msg_state(&alice, alice_msg.id, MessageState::OutMdnRcvd).await?; assert_state(&alice, alice_msg.id, MessageState::OutMdnRcvd).await; set_msg_failed(&alice, alice_msg.id, Some("badly failed")).await; diff --git a/src/test_utils.rs b/src/test_utils.rs index 1ba9d9650..4be0cab49 100644 --- a/src/test_utils.rs +++ b/src/test_utils.rs @@ -317,7 +317,9 @@ impl TestContext { .execute("DELETE FROM jobs WHERE id=?;", paramsv![rowid]) .await .expect("failed to remove job"); - update_msg_state(&self.ctx, id, MessageState::OutDelivered).await; + update_msg_state(&self.ctx, id, MessageState::OutDelivered) + .await + .expect("failed to update message state"); SentMessage { params, blob_path,