From f6c3cbc0fa317e0de812e4b12c2ec9d70ba13e05 Mon Sep 17 00:00:00 2001 From: silverpill Date: Sun, 16 Oct 2022 00:42:06 +0000 Subject: [PATCH] Prepare Delete(Note) before deleting post from database --- src/cli.rs | 20 ++++++++++++++------ src/mastodon_api/statuses/views.rs | 13 ++++++++----- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/cli.rs b/src/cli.rs index 97b173d..e871798 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -185,14 +185,22 @@ impl DeletePost { db_client: &mut impl GenericClient, ) -> Result<(), Error> { let post = get_post_by_id(db_client, &self.id).await?; + let mut maybe_delete_note = None; + if post.author.is_local() { + let author = get_user_by_id(db_client, &post.author.id).await?; + let activity = prepare_delete_note( + db_client, + config.instance(), + &author, + &post, + ).await?; + maybe_delete_note = Some(activity); + }; let deletion_queue = delete_post(db_client, &post.id).await?; deletion_queue.process(config).await; - if post.author.is_local() { - // Send Delete(Note) activity - let author = get_user_by_id(db_client, &post.author.id).await?; - prepare_delete_note(db_client, config.instance(), &author, &post) - .await? - .deliver().await?; + // Send Delete(Note) activity + if let Some(activity) = maybe_delete_note { + activity.deliver().await?; }; println!("post deleted"); Ok(()) diff --git a/src/mastodon_api/statuses/views.rs b/src/mastodon_api/statuses/views.rs index fd40f41..3356e5e 100644 --- a/src/mastodon_api/statuses/views.rs +++ b/src/mastodon_api/statuses/views.rs @@ -242,14 +242,17 @@ async fn delete_status( if post.author.id != current_user.id { return Err(HttpError::PermissionError); }; + let delete_note = prepare_delete_note( + db_client, + config.instance(), + ¤t_user, + &post, + ).await?; let deletion_queue = delete_post(db_client, &status_id).await?; - let config_clone = config.clone(); tokio::spawn(async move { - deletion_queue.process(&config_clone).await; + deletion_queue.process(&config).await; }); - - prepare_delete_note(db_client, config.instance(), ¤t_user, &post).await? - .spawn_deliver(); + delete_note.spawn_deliver(); Ok(HttpResponse::NoContent().finish()) }