]> Untitled Git - lemmy.git/blobdiff - crates/apub/src/objects/post.rs
implement language tags for site/community in db and api (#2434)
[lemmy.git] / crates / apub / src / objects / post.rs
index 93273466d3e6b518dfa3d03b1e5daa2075600bad..655f0342e7849d0f8e084e7fe4e02f34ff92c1ca 100644 (file)
@@ -25,7 +25,6 @@ use lemmy_db_schema::{
   self,
   source::{
     community::Community,
-    language::Language,
     moderator::{ModLockPost, ModLockPostForm, ModStickyPost, ModStickyPostForm},
     person::Person,
     post::{Post, PostForm},
@@ -102,11 +101,7 @@ impl ApubObject for ApubPost {
       Community::read(conn, community_id)
     })
     .await??;
-    let language = self.language_id;
-    let language = blocking(context.pool(), move |conn| {
-      Language::read_from_id(conn, language)
-    })
-    .await??;
+    let language = LanguageTag::new_single(self.language_id, context.pool()).await?;
 
     let page = Page {
       kind: PageType::Page,
@@ -124,7 +119,7 @@ impl ApubObject for ApubPost {
       comments_enabled: Some(!self.locked),
       sensitive: Some(self.nsfw),
       stickied: Some(self.stickied),
-      language: LanguageTag::new(language),
+      language,
       published: Some(convert_datetime(self.published)),
       updated: self.updated.map(convert_datetime),
     };
@@ -191,11 +186,7 @@ impl ApubObject for ApubPost {
       let body_slurs_removed =
         read_from_string_or_source_opt(&page.content, &page.media_type, &page.source)
           .map(|s| Some(remove_slurs(&s, &context.settings().slur_regex())));
-      let language = page.language.map(|l| l.identifier);
-      let language = blocking(context.pool(), move |conn| {
-        Language::read_id_from_code_opt(conn, language.as_deref())
-      })
-      .await??;
+      let language_id = LanguageTag::to_language_id_single(page.language, context.pool()).await?;
 
       PostForm {
         name: page.name.clone(),
@@ -216,7 +207,7 @@ impl ApubObject for ApubPost {
         thumbnail_url: Some(thumbnail_url),
         ap_id: Some(page.id.clone().into()),
         local: Some(false),
-        language_id: language,
+        language_id,
       }
     } else {
       // if is mod action, only update locked/stickied fields, nothing else
@@ -283,6 +274,7 @@ mod tests {
   #[serial]
   async fn test_parse_lemmy_post() {
     let context = init_context();
+    let conn = &mut context.pool().get().unwrap();
     let (person, site) = parse_lemmy_person(&context).await;
     let community = parse_lemmy_community(&context).await;
 
@@ -304,9 +296,9 @@ mod tests {
     assert!(post.stickied);
     assert_eq!(request_counter, 0);
 
-    Post::delete(&*context.pool().get().unwrap(), post.id).unwrap();
-    Person::delete(&*context.pool().get().unwrap(), person.id).unwrap();
-    Community::delete(&*context.pool().get().unwrap(), community.id).unwrap();
-    Site::delete(&*context.pool().get().unwrap(), site.id).unwrap();
+    Post::delete(conn, post.id).unwrap();
+    Person::delete(conn, person.id).unwrap();
+    Community::delete(conn, community.id).unwrap();
+    Site::delete(conn, site.id).unwrap();
   }
 }