From f7be00009772f01dd51cc8b635a7996ac854555c Mon Sep 17 00:00:00 2001 From: aprilthepink Date: Sat, 3 Aug 2024 08:05:17 +0200 Subject: [PATCH] fix: awa --- src/lysand/http.rs | 23 +++++++++++++++++++++++ src/lysand/inbox.rs | 9 +++------ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/lysand/http.rs b/src/lysand/http.rs index 0e28ef6..27f892e 100644 --- a/src/lysand/http.rs +++ b/src/lysand/http.rs @@ -230,6 +230,29 @@ pub async fn lysand_url_to_user_and_model( let db = DB.get().unwrap(); let data = FEDERATION_CONFIG.get().unwrap(); + let opt_model = prelude::User::find() + .filter(user::Column::Url.eq(url.as_str())) + .one(db) + .await?; + let target; + if let Some(model) = opt_model { + target = model; + } else { + target = ObjectId::::from(url) + .dereference(&data.to_request_data()) + .await + .unwrap(); + } + + Ok((lysand_user_from_db(target.clone()).await?, target)) +} + +pub async fn main_lysand_url_to_user_and_model( + url: Url, +) -> anyhow::Result<(super::objects::User, user::Model)> { + let db = DB.get().unwrap(); + let data = FEDERATION_CONFIG.get().unwrap(); + let opt_model = prelude::User::find() .filter(user::Column::Url.eq(url.as_str())) .one(db) diff --git a/src/lysand/inbox.rs b/src/lysand/inbox.rs index c629131..dfd9d27 100644 --- a/src/lysand/inbox.rs +++ b/src/lysand/inbox.rs @@ -1,12 +1,9 @@ use crate::{ - activities::follow::Follow, - entities::{ + activities::follow::Follow, entities::{ self, follow_relation, prelude::{self, FollowRelation}, user, - }, - utils::generate_follow_req_id, - DB, FEDERATION_CONFIG, + }, lysand::http::main_lysand_url_to_user_and_model, utils::generate_follow_req_id, DB, FEDERATION_CONFIG }; use activitypub_federation::{ activity_sending::SendActivityTask, fetch::object_id::ObjectId, protocol::context::WithContext, @@ -75,7 +72,7 @@ async fn follow_request(follow: super::objects::Follow) -> Result<()> { )); } let data = FEDERATION_CONFIG.get().unwrap(); - let author = lysand_url_to_user_and_model(follow.author.into()).await?; + let author = main_lysand_url_to_user_and_model(follow.author.into()).await?; let followee = lysand_url_to_user_and_model(follow.followee.into()).await?; let serial_ap_author = serde_json::from_str::( &(author.1.ap_json.clone()).unwrap(),