]> Untitled Git - lemmy.git/blobdiff - crates/apub/src/objects/private_message.rs
Rewrite fetcher (#1792)
[lemmy.git] / crates / apub / src / objects / private_message.rs
index 02cf12ebac248af62191134aeb99f0eff504c49a..9bc917a95830d703cdf85c6d0ca3987aebdb79f3 100644 (file)
@@ -1,6 +1,6 @@
 use crate::{
   extensions::context::lemmy_context,
-  fetcher::person::get_or_fetch_and_upsert_person,
+  fetcher::object_id::ObjectId,
   objects::{create_tombstone, FromApub, Source, ToApub},
 };
 use activitystreams::{
@@ -16,7 +16,7 @@ use lemmy_apub_lib::{
   values::{MediaTypeHtml, MediaTypeMarkdown},
   verify_domains_match,
 };
-use lemmy_db_queries::{ApubObject, Crud, DbPool};
+use lemmy_db_queries::{source::private_message::PrivateMessage_, Crud, DbPool};
 use lemmy_db_schema::source::{
   person::Person,
   private_message::{PrivateMessage, PrivateMessageForm},
@@ -35,8 +35,8 @@ pub struct Note {
   context: OneOrMany<AnyBase>,
   r#type: NoteType,
   id: Url,
-  pub(crate) attributed_to: Url,
-  to: Url,
+  pub(crate) attributed_to: ObjectId<Person>,
+  to: ObjectId<Person>,
   content: String,
   media_type: MediaTypeHtml,
   source: Source,
@@ -60,9 +60,11 @@ impl Note {
     context: &LemmyContext,
     request_counter: &mut i32,
   ) -> Result<(), LemmyError> {
-    verify_domains_match(&self.attributed_to, &self.id)?;
-    let person =
-      get_or_fetch_and_upsert_person(&self.attributed_to, context, request_counter).await?;
+    verify_domains_match(self.attributed_to.inner(), &self.id)?;
+    let person = self
+      .attributed_to
+      .dereference(context, request_counter)
+      .await?;
     if person.banned {
       return Err(anyhow!("Person is banned from site").into());
     }
@@ -85,8 +87,8 @@ impl ToApub for PrivateMessage {
       context: lemmy_context(),
       r#type: NoteType::Note,
       id: self.ap_id.clone().into(),
-      attributed_to: creator.actor_id.into_inner(),
-      to: recipient.actor_id.into(),
+      attributed_to: ObjectId::new(creator.actor_id),
+      to: ObjectId::new(recipient.actor_id),
       content: self.content.clone(),
       media_type: MediaTypeHtml::Html,
       source: Source {
@@ -121,9 +123,11 @@ impl FromApub for PrivateMessage {
     request_counter: &mut i32,
   ) -> Result<PrivateMessage, LemmyError> {
     let ap_id = Some(note.id(expected_domain)?.clone().into());
-    let creator =
-      get_or_fetch_and_upsert_person(&note.attributed_to, context, request_counter).await?;
-    let recipient = get_or_fetch_and_upsert_person(&note.to, context, request_counter).await?;
+    let creator = note
+      .attributed_to
+      .dereference(context, request_counter)
+      .await?;
+    let recipient = note.to.dereference(context, request_counter).await?;
 
     let form = PrivateMessageForm {
       creator_id: creator.id,