mirror of
https://github.com/LemmyNet/lemmy.git
synced 2024-06-02 13:39:21 +00:00
6f513793cb
* update activitypub-federation crate to 0.4.0 * fixes * apub compiles! * everything compiling! * almost done, federated follow failing * some test fixes * use release * add code back in
34 lines
1.2 KiB
Rust
34 lines
1.2 KiB
Rust
use crate::objects::person::ApubPerson;
|
|
use activitypub_federation::{config::Data, fetch::object_id::ObjectId};
|
|
use lemmy_api_common::{context::LemmyContext, websocket::send::send_local_notifs};
|
|
use lemmy_db_schema::{
|
|
newtypes::LocalUserId,
|
|
source::{comment::Comment, post::Post},
|
|
traits::Crud,
|
|
};
|
|
use lemmy_utils::{error::LemmyError, utils::mention::scrape_text_for_mentions};
|
|
|
|
pub mod comment;
|
|
pub mod post;
|
|
pub mod private_message;
|
|
|
|
#[tracing::instrument(skip_all)]
|
|
async fn get_comment_notif_recipients(
|
|
actor: &ObjectId<ApubPerson>,
|
|
comment: &Comment,
|
|
do_send_email: bool,
|
|
context: &Data<LemmyContext>,
|
|
) -> Result<Vec<LocalUserId>, LemmyError> {
|
|
let post_id = comment.post_id;
|
|
let post = Post::read(context.pool(), post_id).await?;
|
|
let actor = actor.dereference(context).await?;
|
|
|
|
// Note:
|
|
// Although mentions could be gotten from the post tags (they are included there), or the ccs,
|
|
// Its much easier to scrape them from the comment body, since the API has to do that
|
|
// anyway.
|
|
// TODO: for compatibility with other projects, it would be much better to read this from cc or tags
|
|
let mentions = scrape_text_for_mentions(&comment.content);
|
|
send_local_notifs(mentions, comment, &actor, &post, do_send_email, context).await
|
|
}
|