]> Untitled Git - lemmy.git/blobdiff - crates/api_crud/src/site/read.rs
implement language tags for site/community in db and api (#2434)
[lemmy.git] / crates / api_crud / src / site / read.rs
index 1ef84a91f898ace88861031beac206b62379fb94..fc3293a7dadf9e8689bc58ea293a84d7593595b3 100644 (file)
@@ -5,7 +5,8 @@ use lemmy_api_common::{
   site::{CreateSite, GetSite, GetSiteResponse, MyUserInfo},
   utils::{blocking, build_federated_instances, get_local_user_settings_view_from_jwt_opt},
 };
-use lemmy_db_views::structs::SiteView;
+use lemmy_db_schema::source::{actor_language::SiteLanguage, language::Language};
+use lemmy_db_views::structs::{LocalUserDiscussionLanguageView, SiteView};
 use lemmy_db_views_actor::structs::{
   CommunityBlockView,
   CommunityFollowerView,
@@ -83,6 +84,8 @@ impl PerformCrud for GetSite {
     .await?
     {
       let person_id = local_user_view.person.id;
+      let local_user_id = local_user_view.local_user.id;
+
       let follows = blocking(context.pool(), move |conn| {
         CommunityFollowerView::for_person(conn, person_id)
       })
@@ -109,19 +112,28 @@ impl PerformCrud for GetSite {
       .await?
       .map_err(|e| LemmyError::from_error_message(e, "system_err_login"))?;
 
+      let discussion_languages = blocking(context.pool(), move |conn| {
+        LocalUserDiscussionLanguageView::read_languages(conn, local_user_id)
+      })
+      .await?
+      .map_err(|e| LemmyError::from_error_message(e, "system_err_login"))?;
+
       Some(MyUserInfo {
         local_user_view,
         follows,
         moderates,
         community_blocks,
         person_blocks,
+        discussion_languages,
       })
     } else {
       None
     };
 
-    let federated_instances =
-      build_federated_instances(context.pool(), &context.settings()).await?;
+    let federated_instances = build_federated_instances(context.pool(), context.settings()).await?;
+
+    let all_languages = blocking(context.pool(), Language::read_all).await??;
+    let discussion_languages = blocking(context.pool(), SiteLanguage::read_local).await??;
 
     Ok(GetSiteResponse {
       site_view,
@@ -130,6 +142,8 @@ impl PerformCrud for GetSite {
       version: version::VERSION.to_string(),
       my_user,
       federated_instances,
+      all_languages,
+      discussion_languages,
     })
   }
 }