]> 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 4789bdc1ba2d8b4dd8551ad61d2aaaffe57eeb1f..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