]> Untitled Git - lemmy.git/blobdiff - crates/api_crud/src/site/read.rs
Get rid of Safe Views, use serde_skip (#2767)
[lemmy.git] / crates / api_crud / src / site / read.rs
index 226e24f341a25567c3aca1170bda217a7c862774..51457b8834d0448698bc049d078396bba78b8e7d 100644 (file)
@@ -1,20 +1,24 @@
 use crate::PerformCrud;
 use actix_web::web::Data;
 use lemmy_api_common::{
+  context::LemmyContext,
   site::{GetSite, GetSiteResponse, MyUserInfo},
-  utils::{blocking, build_federated_instances, get_local_user_settings_view_from_jwt_opt},
+  utils::{build_federated_instances, get_local_user_settings_view_from_jwt_opt},
 };
-use lemmy_db_schema::source::{actor_language::SiteLanguage, language::Language};
-use lemmy_db_views::structs::{LocalUserDiscussionLanguageView, SiteView};
+use lemmy_db_schema::source::{
+  actor_language::{LocalUserLanguage, SiteLanguage},
+  language::Language,
+  tagline::Tagline,
+};
+use lemmy_db_views::structs::SiteView;
 use lemmy_db_views_actor::structs::{
   CommunityBlockView,
   CommunityFollowerView,
   CommunityModeratorView,
   PersonBlockView,
-  PersonViewSafe,
+  PersonView,
 };
 use lemmy_utils::{error::LemmyError, version, ConnectionId};
-use lemmy_websocket::{messages::GetUsersOnline, LemmyContext};
 
 #[async_trait::async_trait(?Send)]
 impl PerformCrud for GetSite {
@@ -28,15 +32,11 @@ impl PerformCrud for GetSite {
   ) -> Result<GetSiteResponse, LemmyError> {
     let data: &GetSite = self;
 
-    let site_view = blocking(context.pool(), SiteView::read_local).await??;
+    let site_view = SiteView::read_local(context.pool()).await?;
 
-    let admins = blocking(context.pool(), PersonViewSafe::admins).await??;
+    let admins = PersonView::admins(context.pool()).await?;
 
-    let online = context
-      .chat_server()
-      .send(GetUsersOnline)
-      .await
-      .unwrap_or(1);
+    let online = context.chat_server().get_users_online()?;
 
     // Build the local user
     let my_user = if let Some(local_user_view) = get_local_user_settings_view_from_jwt_opt(
@@ -49,37 +49,27 @@ impl PerformCrud for GetSite {
       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)
-      })
-      .await?
-      .map_err(|e| LemmyError::from_error_message(e, "system_err_login"))?;
+      let follows = CommunityFollowerView::for_person(context.pool(), person_id)
+        .await
+        .map_err(|e| LemmyError::from_error_message(e, "system_err_login"))?;
 
       let person_id = local_user_view.person.id;
-      let community_blocks = blocking(context.pool(), move |conn| {
-        CommunityBlockView::for_person(conn, person_id)
-      })
-      .await?
-      .map_err(|e| LemmyError::from_error_message(e, "system_err_login"))?;
+      let community_blocks = CommunityBlockView::for_person(context.pool(), person_id)
+        .await
+        .map_err(|e| LemmyError::from_error_message(e, "system_err_login"))?;
 
       let person_id = local_user_view.person.id;
-      let person_blocks = blocking(context.pool(), move |conn| {
-        PersonBlockView::for_person(conn, person_id)
-      })
-      .await?
-      .map_err(|e| LemmyError::from_error_message(e, "system_err_login"))?;
+      let person_blocks = PersonBlockView::for_person(context.pool(), person_id)
+        .await
+        .map_err(|e| LemmyError::from_error_message(e, "system_err_login"))?;
 
-      let moderates = blocking(context.pool(), move |conn| {
-        CommunityModeratorView::for_person(conn, person_id)
-      })
-      .await?
-      .map_err(|e| LemmyError::from_error_message(e, "system_err_login"))?;
+      let moderates = CommunityModeratorView::for_person(context.pool(), person_id)
+        .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"))?;
+      let discussion_languages = LocalUserLanguage::read(context.pool(), local_user_id)
+        .await
+        .map_err(|e| LemmyError::from_error_message(e, "system_err_login"))?;
 
       Some(MyUserInfo {
         local_user_view,
@@ -96,8 +86,10 @@ impl PerformCrud for GetSite {
     let federated_instances =
       build_federated_instances(&site_view.local_site, context.pool()).await?;
 
-    let all_languages = blocking(context.pool(), Language::read_all).await??;
-    let discussion_languages = blocking(context.pool(), SiteLanguage::read_local).await??;
+    let all_languages = Language::read_all(context.pool()).await?;
+    let discussion_languages = SiteLanguage::read_local(context.pool()).await?;
+    let taglines_res = Tagline::get_all(context.pool(), site_view.local_site.id).await?;
+    let taglines = (!taglines_res.is_empty()).then_some(taglines_res);
 
     Ok(GetSiteResponse {
       site_view,
@@ -108,6 +100,7 @@ impl PerformCrud for GetSite {
       federated_instances,
       all_languages,
       discussion_languages,
+      taglines,
     })
   }
 }