From d90d5694576ef3295eb390d309f17dc36e661c45 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Tue, 10 Aug 2021 18:55:45 -0400 Subject: [PATCH] Moving blocked and follows to MyUserInfo --- crates/api/src/lib.rs | 9 ---- crates/api/src/local_user.rs | 81 ------------------------------ crates/api/src/site.rs | 5 +- crates/api_common/src/community.rs | 22 -------- crates/api_common/src/person.rs | 18 +------ crates/api_common/src/site.rs | 18 ++++++- crates/api_crud/src/site/read.rs | 45 +++++++++++++++-- crates/api_crud/src/user/read.rs | 28 ----------- crates/websocket/src/lib.rs | 3 -- src/api_routes.rs | 9 ---- 10 files changed, 60 insertions(+), 178 deletions(-) diff --git a/crates/api/src/lib.rs b/crates/api/src/lib.rs index 769f5d14f..bf3a813b3 100644 --- a/crates/api/src/lib.rs +++ b/crates/api/src/lib.rs @@ -45,9 +45,6 @@ pub async fn match_websocket_operation( UserOperation::GetPersonMentions => { do_websocket_operation::(context, id, op, data).await } - UserOperation::GetBlockedPersons => { - do_websocket_operation::(context, id, op, data).await - } UserOperation::MarkPersonMentionAsRead => { do_websocket_operation::(context, id, op, data).await } @@ -104,12 +101,6 @@ pub async fn match_websocket_operation( UserOperation::BlockCommunity => { do_websocket_operation::(context, id, op, data).await } - UserOperation::GetFollowedCommunities => { - do_websocket_operation::(context, id, op, data).await - } - UserOperation::GetBlockedCommunities => { - do_websocket_operation::(context, id, op, data).await - } UserOperation::BanFromCommunity => { do_websocket_operation::(context, id, op, data).await } diff --git a/crates/api/src/local_user.rs b/crates/api/src/local_user.rs index ae609e27e..492c8d158 100644 --- a/crates/api/src/local_user.rs +++ b/crates/api/src/local_user.rs @@ -7,12 +7,6 @@ use chrono::Duration; use lemmy_api_common::{ blocking, collect_moderated_communities, - community::{ - GetBlockedCommunities, - GetBlockedCommunitiesResponse, - GetFollowedCommunities, - GetFollowedCommunitiesResponse, - }, get_local_user_view_from_jwt, is_admin, password_length_check, @@ -59,10 +53,7 @@ use lemmy_db_views::{ post_report_view::PostReportView, }; use lemmy_db_views_actor::{ - community_block_view::CommunityBlockView, - community_follower_view::CommunityFollowerView, community_moderator_view::CommunityModeratorView, - person_block_view::PersonBlockView, person_mention_view::{PersonMentionQueryBuilder, PersonMentionView}, person_view::PersonViewSafe, }; @@ -840,75 +831,3 @@ impl Perform for GetReportCount { Ok(res) } } - -#[async_trait::async_trait(?Send)] -impl Perform for GetFollowedCommunities { - type Response = GetFollowedCommunitiesResponse; - - async fn perform( - &self, - context: &Data, - _websocket_id: Option, - ) -> Result { - let data: &GetFollowedCommunities = self; - let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?; - - let person_id = local_user_view.person.id; - let communities = blocking(context.pool(), move |conn| { - CommunityFollowerView::for_person(conn, person_id) - }) - .await? - .map_err(|_| ApiError::err("system_err_login"))?; - - // Return the jwt - Ok(GetFollowedCommunitiesResponse { communities }) - } -} - -#[async_trait::async_trait(?Send)] -impl Perform for GetBlockedCommunities { - type Response = GetBlockedCommunitiesResponse; - - async fn perform( - &self, - context: &Data, - _websocket_id: Option, - ) -> Result { - let data: &GetBlockedCommunities = self; - let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?; - - let person_id = local_user_view.person.id; - let communities = blocking(context.pool(), move |conn| { - CommunityBlockView::for_person(conn, person_id) - }) - .await? - .map_err(|_| ApiError::err("system_err_login"))?; - - // Return the jwt - Ok(GetBlockedCommunitiesResponse { communities }) - } -} - -#[async_trait::async_trait(?Send)] -impl Perform for GetBlockedPersons { - type Response = GetBlockedPersonsResponse; - - async fn perform( - &self, - context: &Data, - _websocket_id: Option, - ) -> Result { - let data: &GetBlockedPersons = self; - let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?; - - let person_id = local_user_view.person.id; - let persons = blocking(context.pool(), move |conn| { - PersonBlockView::for_person(conn, person_id) - }) - .await? - .map_err(|_| ApiError::err("system_err_login"))?; - - // Return the jwt - Ok(GetBlockedPersonsResponse { persons }) - } -} diff --git a/crates/api/src/site.rs b/crates/api/src/site.rs index 7b6783a70..221b9870f 100644 --- a/crates/api/src/site.rs +++ b/crates/api/src/site.rs @@ -4,7 +4,6 @@ use anyhow::Context; use lemmy_api_common::{ blocking, build_federated_instances, - get_local_user_settings_view_from_jwt, get_local_user_view_from_jwt, get_local_user_view_from_jwt_opt, is_admin, @@ -422,15 +421,13 @@ impl Perform for TransferSite { let banned = blocking(context.pool(), move |conn| PersonViewSafe::banned(conn)).await??; let federated_instances = build_federated_instances(context.pool()).await?; - let my_user = Some(get_local_user_settings_view_from_jwt(&data.auth, context.pool()).await?); - Ok(GetSiteResponse { site_view: Some(site_view), admins, banned, online: 0, version: version::VERSION.to_string(), - my_user, + my_user: None, federated_instances, }) } diff --git a/crates/api_common/src/community.rs b/crates/api_common/src/community.rs index e05fe02ea..2a62a3c4e 100644 --- a/crates/api_common/src/community.rs +++ b/crates/api_common/src/community.rs @@ -1,7 +1,5 @@ use lemmy_db_schema::{CommunityId, PersonId}; use lemmy_db_views_actor::{ - community_block_view::CommunityBlockView, - community_follower_view::CommunityFollowerView, community_moderator_view::CommunityModeratorView, community_view::CommunityView, person_view::PersonViewSafe, @@ -124,26 +122,6 @@ pub struct BlockCommunity { pub auth: String, } -#[derive(Deserialize)] -pub struct GetFollowedCommunities { - pub auth: String, -} - -#[derive(Serialize)] -pub struct GetFollowedCommunitiesResponse { - pub communities: Vec, -} - -#[derive(Deserialize)] -pub struct GetBlockedCommunities { - pub auth: String, -} - -#[derive(Serialize)] -pub struct GetBlockedCommunitiesResponse { - pub communities: Vec, -} - #[derive(Deserialize)] pub struct TransferCommunity { pub community_id: CommunityId, diff --git a/crates/api_common/src/person.rs b/crates/api_common/src/person.rs index 5c50ab7b1..a63e55d7e 100644 --- a/crates/api_common/src/person.rs +++ b/crates/api_common/src/person.rs @@ -4,10 +4,7 @@ use lemmy_db_views::{ private_message_view::PrivateMessageView, }; use lemmy_db_views_actor::{ - community_block_view::CommunityBlockView, - community_follower_view::CommunityFollowerView, community_moderator_view::CommunityModeratorView, - person_block_view::PersonBlockView, person_mention_view::PersonMentionView, person_view::PersonViewSafe, }; @@ -98,12 +95,9 @@ pub struct GetPersonDetails { #[derive(Serialize)] pub struct GetPersonDetailsResponse { pub person_view: PersonViewSafe, - pub follows: Vec, - pub community_blocks: Vec, - pub person_blocks: Vec, - pub moderates: Vec, pub comments: Vec, pub posts: Vec, + pub moderates: Vec, } #[derive(Serialize)] @@ -271,13 +265,3 @@ pub struct GetReportCountResponse { pub comment_reports: i64, pub post_reports: i64, } - -#[derive(Deserialize)] -pub struct GetBlockedPersons { - pub auth: String, -} - -#[derive(Serialize)] -pub struct GetBlockedPersonsResponse { - pub persons: Vec, -} diff --git a/crates/api_common/src/site.rs b/crates/api_common/src/site.rs index 796549860..0da4b9d6b 100644 --- a/crates/api_common/src/site.rs +++ b/crates/api_common/src/site.rs @@ -5,7 +5,13 @@ use lemmy_db_views::{ post_view::PostView, site_view::SiteView, }; -use lemmy_db_views_actor::{community_view::CommunityView, person_view::PersonViewSafe}; +use lemmy_db_views_actor::{ + community_block_view::CommunityBlockView, + community_follower_view::CommunityFollowerView, + community_view::CommunityView, + person_block_view::PersonBlockView, + person_view::PersonViewSafe, +}; use lemmy_db_views_moderator::{ mod_add_community_view::ModAddCommunityView, mod_add_view::ModAddView, @@ -110,10 +116,18 @@ pub struct GetSiteResponse { pub banned: Vec, pub online: usize, pub version: String, - pub my_user: Option, + pub my_user: Option, pub federated_instances: Option, // Federation may be disabled } +#[derive(Serialize)] +pub struct MyUserInfo { + pub local_user: LocalUserSettingsView, + pub follows: Vec, + pub community_blocks: Vec, + pub person_blocks: Vec, +} + #[derive(Deserialize)] pub struct TransferSite { pub person_id: PersonId, diff --git a/crates/api_crud/src/site/read.rs b/crates/api_crud/src/site/read.rs index 8b2df7117..58925c7e9 100644 --- a/crates/api_crud/src/site/read.rs +++ b/crates/api_crud/src/site/read.rs @@ -8,8 +8,13 @@ use lemmy_api_common::{ site::*, }; use lemmy_db_views::site_view::SiteView; -use lemmy_db_views_actor::person_view::PersonViewSafe; -use lemmy_utils::{settings::structs::Settings, version, ConnectionId, LemmyError}; +use lemmy_db_views_actor::{ + community_block_view::CommunityBlockView, + community_follower_view::CommunityFollowerView, + person_block_view::PersonBlockView, + person_view::PersonViewSafe, +}; +use lemmy_utils::{settings::structs::Settings, version, ApiError, ConnectionId, LemmyError}; use lemmy_websocket::{messages::GetUsersOnline, LemmyContext}; use log::info; @@ -83,7 +88,41 @@ impl PerformCrud for GetSite { .await .unwrap_or(1); - let my_user = get_local_user_settings_view_from_jwt_opt(&data.auth, context.pool()).await?; + // Build the local user + let my_user = if let Some(local_user_view) = + get_local_user_settings_view_from_jwt_opt(&data.auth, context.pool()).await? + { + let person_id = local_user_view.person.id; + let follows = blocking(context.pool(), move |conn| { + CommunityFollowerView::for_person(conn, person_id) + }) + .await? + .map_err(|_| ApiError::err("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(|_| ApiError::err("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(|_| ApiError::err("system_err_login"))?; + + Some(MyUserInfo { + local_user: local_user_view, + follows, + community_blocks, + person_blocks, + }) + } else { + None + }; + let federated_instances = build_federated_instances(context.pool()).await?; Ok(GetSiteResponse { diff --git a/crates/api_crud/src/user/read.rs b/crates/api_crud/src/user/read.rs index c605013ad..4cfd90ab5 100644 --- a/crates/api_crud/src/user/read.rs +++ b/crates/api_crud/src/user/read.rs @@ -6,10 +6,7 @@ use lemmy_db_queries::{from_opt_str_to_opt_enum, ApubObject, SortType}; use lemmy_db_schema::source::person::*; use lemmy_db_views::{comment_view::CommentQueryBuilder, post_view::PostQueryBuilder}; use lemmy_db_views_actor::{ - community_block_view::CommunityBlockView, - community_follower_view::CommunityFollowerView, community_moderator_view::CommunityModeratorView, - person_block_view::PersonBlockView, person_view::PersonViewSafe, }; use lemmy_utils::{ApiError, ConnectionId, LemmyError}; @@ -105,28 +102,6 @@ impl PerformCrud for GetPersonDetails { }) .await??; - let mut follows = vec![]; - let mut person_blocks = vec![]; - let mut community_blocks = vec![]; - - // Only show the followers and blocks for that user - if let Some(pid) = person_id { - if pid == person_details_id { - follows = blocking(context.pool(), move |conn| { - CommunityFollowerView::for_person(conn, person_details_id) - }) - .await??; - person_blocks = blocking(context.pool(), move |conn| { - PersonBlockView::for_person(conn, person_details_id) - }) - .await??; - community_blocks = blocking(context.pool(), move |conn| { - CommunityBlockView::for_person(conn, person_details_id) - }) - .await??; - } - }; - let moderates = blocking(context.pool(), move |conn| { CommunityModeratorView::for_person(conn, person_details_id) }) @@ -135,9 +110,6 @@ impl PerformCrud for GetPersonDetails { // Return the jwt Ok(GetPersonDetailsResponse { person_view, - follows, - community_blocks, - person_blocks, moderates, comments, posts, diff --git a/crates/websocket/src/lib.rs b/crates/websocket/src/lib.rs index 811478d0b..fbb2bb512 100644 --- a/crates/websocket/src/lib.rs +++ b/crates/websocket/src/lib.rs @@ -101,7 +101,6 @@ pub enum UserOperation { ListPostReports, GetReportCount, FollowCommunity, - GetFollowedCommunities, GetReplies, GetPersonMentions, MarkPersonMentionAsRead, @@ -128,8 +127,6 @@ pub enum UserOperation { GetSiteMetadata, BlockCommunity, BlockPerson, - GetBlockedCommunities, - GetBlockedPersons, } #[derive(EnumString, ToString, Debug, Clone)] diff --git a/src/api_routes.rs b/src/api_routes.rs index 9f678aef7..feaf0e235 100644 --- a/src/api_routes.rs +++ b/src/api_routes.rs @@ -151,20 +151,11 @@ pub fn config(cfg: &mut web::ServiceConfig, rate_limit: &RateLimit) { .wrap(rate_limit.message()) .route("", web::get().to(route_get_crud::)) .route("/mention", web::get().to(route_get::)) - .route("/block", web::get().to(route_get::)) .route( "/mention/mark_as_read", web::post().to(route_post::), ) .route("/replies", web::get().to(route_get::)) - .route( - "/followed_communities", - web::get().to(route_get::), - ) - .route( - "/blocked_communities", - web::get().to(route_get::), - ) .route("/join", web::post().to(route_post::)) // Admin action. I don't like that it's in /user .route("/ban", web::post().to(route_post::))