Resultify update_msg_state

This commit is contained in:
link2xt
2022-01-02 21:33:26 +00:00
parent 3e394f14e8
commit f63efc29bf
4 changed files with 15 additions and 9 deletions

View File

@@ -2004,7 +2004,7 @@ async fn prepare_send_msg(
chat_id.is_unset() || chat_id == msg.chat_id, chat_id.is_unset() || chat_id == msg.chat_id,
"Inconsistent 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?; let job = job::send_msg_job(context, msg.id).await?;

View File

@@ -704,7 +704,7 @@ pub async fn action_exists(context: &Context, action: Action) -> Result<bool> {
} }
async fn set_delivered(context: &Context, msg_id: MsgId) -> 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 let chat_id: ChatId = context
.sql .sql
.query_get_value("SELECT chat_id FROM msgs WHERE id=?", paramsv![msg_id]) .query_get_value("SELECT chat_id FROM msgs WHERE id=?", paramsv![msg_id])

View File

@@ -1297,7 +1297,7 @@ pub async fn markseen_msgs(context: &Context, msg_ids: Vec<MsgId>) -> Result<()>
if curr_blocked == Blocked::Not if curr_blocked == Blocked::Not
&& (curr_state == MessageState::InFresh || curr_state == MessageState::InNoticed) && (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); info!(context, "Seen message {}.", id);
job::add( job::add(
@@ -1316,15 +1316,19 @@ pub async fn markseen_msgs(context: &Context, msg_ids: Vec<MsgId>) -> Result<()>
Ok(()) 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 context
.sql .sql
.execute( .execute(
"UPDATE msgs SET state=? WHERE id=?;", "UPDATE msgs SET state=? WHERE id=?;",
paramsv![state, msg_id], paramsv![state, msg_id],
) )
.await .await?;
.is_ok() Ok(())
} }
// as we do not cut inside words, this results in about 32-42 characters. // 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::OutPending
|| msg_state == MessageState::OutDelivered || 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))) Ok(Some((chat_id, msg_id)))
} else { } else {
Ok(None) Ok(None)
@@ -2043,7 +2047,7 @@ mod tests {
let payload = alice.pop_sent_msg().await; let payload = alice.pop_sent_msg().await;
assert_state(&alice, alice_msg.id, MessageState::OutDelivered).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; assert_state(&alice, alice_msg.id, MessageState::OutMdnRcvd).await;
set_msg_failed(&alice, alice_msg.id, Some("badly failed")).await; set_msg_failed(&alice, alice_msg.id, Some("badly failed")).await;

View File

@@ -317,7 +317,9 @@ impl TestContext {
.execute("DELETE FROM jobs WHERE id=?;", paramsv![rowid]) .execute("DELETE FROM jobs WHERE id=?;", paramsv![rowid])
.await .await
.expect("failed to remove job"); .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 { SentMessage {
params, params,
blob_path, blob_path,