mirror of https://github.com/LemmyNet/lemmy.git
Only blank out info for non-logged in users.
parent
fba3d9b8df
commit
a73e387ead
|
@ -339,13 +339,29 @@ impl Perform for Search {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Blank out deleted or removed info
|
// Blank out deleted or removed info for non logged in users
|
||||||
|
if person_id.is_none() {
|
||||||
|
for cv in communities
|
||||||
|
.iter_mut()
|
||||||
|
.filter(|cv| cv.community.deleted || cv.community.removed)
|
||||||
|
{
|
||||||
|
cv.community = cv.to_owned().community.blank_out_deleted_or_removed_info();
|
||||||
|
}
|
||||||
|
|
||||||
|
for pv in posts
|
||||||
|
.iter_mut()
|
||||||
|
.filter(|p| p.post.deleted || p.post.removed)
|
||||||
|
{
|
||||||
|
pv.post = pv.to_owned().post.blank_out_deleted_or_removed_info();
|
||||||
|
}
|
||||||
|
|
||||||
for cv in comments
|
for cv in comments
|
||||||
.iter_mut()
|
.iter_mut()
|
||||||
.filter(|cv| cv.comment.deleted || cv.comment.removed)
|
.filter(|cv| cv.comment.deleted || cv.comment.removed)
|
||||||
{
|
{
|
||||||
cv.comment = cv.to_owned().comment.blank_out_deleted_or_removed_info();
|
cv.comment = cv.to_owned().comment.blank_out_deleted_or_removed_info();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Return the jwt
|
// Return the jwt
|
||||||
Ok(SearchResponse {
|
Ok(SearchResponse {
|
||||||
|
|
|
@ -7,7 +7,12 @@ use lemmy_apub::{
|
||||||
objects::community::ApubCommunity,
|
objects::community::ApubCommunity,
|
||||||
EndpointType,
|
EndpointType,
|
||||||
};
|
};
|
||||||
use lemmy_db_schema::{from_opt_str_to_opt_enum, ListingType, SortType};
|
use lemmy_db_schema::{
|
||||||
|
from_opt_str_to_opt_enum,
|
||||||
|
traits::DeleteableOrRemoveable,
|
||||||
|
ListingType,
|
||||||
|
SortType,
|
||||||
|
};
|
||||||
use lemmy_db_views_actor::{
|
use lemmy_db_views_actor::{
|
||||||
community_moderator_view::CommunityModeratorView,
|
community_moderator_view::CommunityModeratorView,
|
||||||
community_view::{CommunityQueryBuilder, CommunityView},
|
community_view::{CommunityQueryBuilder, CommunityView},
|
||||||
|
@ -44,12 +49,18 @@ impl PerformCrud for GetCommunity {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let community_view = blocking(context.pool(), move |conn| {
|
let mut community_view = blocking(context.pool(), move |conn| {
|
||||||
CommunityView::read(conn, community_id, person_id)
|
CommunityView::read(conn, community_id, person_id)
|
||||||
})
|
})
|
||||||
.await?
|
.await?
|
||||||
.map_err(|e| ApiError::err("couldnt_find_community", e))?;
|
.map_err(|e| ApiError::err("couldnt_find_community", e))?;
|
||||||
|
|
||||||
|
// Blank out deleted or removed info for non-logged in users
|
||||||
|
if person_id.is_none() && (community_view.community.deleted || community_view.community.removed)
|
||||||
|
{
|
||||||
|
community_view.community = community_view.community.blank_out_deleted_or_removed_info();
|
||||||
|
}
|
||||||
|
|
||||||
let moderators: Vec<CommunityModeratorView> = blocking(context.pool(), move |conn| {
|
let moderators: Vec<CommunityModeratorView> = blocking(context.pool(), move |conn| {
|
||||||
CommunityModeratorView::for_community(conn, community_id)
|
CommunityModeratorView::for_community(conn, community_id)
|
||||||
})
|
})
|
||||||
|
@ -99,7 +110,7 @@ impl PerformCrud for ListCommunities {
|
||||||
|
|
||||||
let page = data.page;
|
let page = data.page;
|
||||||
let limit = data.limit;
|
let limit = data.limit;
|
||||||
let communities = blocking(context.pool(), move |conn| {
|
let mut communities = blocking(context.pool(), move |conn| {
|
||||||
CommunityQueryBuilder::create(conn)
|
CommunityQueryBuilder::create(conn)
|
||||||
.listing_type(listing_type)
|
.listing_type(listing_type)
|
||||||
.sort(sort)
|
.sort(sort)
|
||||||
|
@ -111,6 +122,16 @@ impl PerformCrud for ListCommunities {
|
||||||
})
|
})
|
||||||
.await??;
|
.await??;
|
||||||
|
|
||||||
|
// Blank out deleted or removed info for non-logged in users
|
||||||
|
if person_id.is_none() {
|
||||||
|
for cv in communities
|
||||||
|
.iter_mut()
|
||||||
|
.filter(|cv| cv.community.deleted || cv.community.removed)
|
||||||
|
{
|
||||||
|
cv.community = cv.to_owned().community.blank_out_deleted_or_removed_info();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Return the jwt
|
// Return the jwt
|
||||||
Ok(ListCommunitiesResponse { communities })
|
Ok(ListCommunitiesResponse { communities })
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ impl PerformCrud for GetPost {
|
||||||
let person_id = local_user_view.map(|u| u.person.id);
|
let person_id = local_user_view.map(|u| u.person.id);
|
||||||
|
|
||||||
let id = data.id;
|
let id = data.id;
|
||||||
let post_view = blocking(context.pool(), move |conn| {
|
let mut post_view = blocking(context.pool(), move |conn| {
|
||||||
PostView::read(conn, id, person_id)
|
PostView::read(conn, id, person_id)
|
||||||
})
|
})
|
||||||
.await?
|
.await?
|
||||||
|
@ -60,27 +60,36 @@ impl PerformCrud for GetPost {
|
||||||
})
|
})
|
||||||
.await??;
|
.await??;
|
||||||
|
|
||||||
// Blank out deleted or removed info
|
// Necessary for the sidebar
|
||||||
|
let community_id = post_view.community.id;
|
||||||
|
let mut community_view = blocking(context.pool(), move |conn| {
|
||||||
|
CommunityView::read(conn, community_id, person_id)
|
||||||
|
})
|
||||||
|
.await?
|
||||||
|
.map_err(|e| ApiError::err("couldnt_find_community", e))?;
|
||||||
|
|
||||||
|
// Blank out deleted or removed info for non-logged in users
|
||||||
|
if person_id.is_none() {
|
||||||
|
if post_view.post.deleted || post_view.post.removed {
|
||||||
|
post_view.post = post_view.post.blank_out_deleted_or_removed_info();
|
||||||
|
}
|
||||||
|
|
||||||
for cv in comments
|
for cv in comments
|
||||||
.iter_mut()
|
.iter_mut()
|
||||||
.filter(|cv| cv.comment.deleted || cv.comment.removed)
|
.filter(|cv| cv.comment.deleted || cv.comment.removed)
|
||||||
{
|
{
|
||||||
cv.comment = cv.to_owned().comment.blank_out_deleted_or_removed_info();
|
cv.comment = cv.to_owned().comment.blank_out_deleted_or_removed_info();
|
||||||
}
|
}
|
||||||
|
if community_view.community.deleted || community_view.community.removed {
|
||||||
|
community_view.community = community_view.community.blank_out_deleted_or_removed_info();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let community_id = post_view.community.id;
|
|
||||||
let moderators = blocking(context.pool(), move |conn| {
|
let moderators = blocking(context.pool(), move |conn| {
|
||||||
CommunityModeratorView::for_community(conn, community_id)
|
CommunityModeratorView::for_community(conn, community_id)
|
||||||
})
|
})
|
||||||
.await??;
|
.await??;
|
||||||
|
|
||||||
// Necessary for the sidebar
|
|
||||||
let community_view = blocking(context.pool(), move |conn| {
|
|
||||||
CommunityView::read(conn, community_id, person_id)
|
|
||||||
})
|
|
||||||
.await?
|
|
||||||
.map_err(|e| ApiError::err("couldnt_find_community", e))?;
|
|
||||||
|
|
||||||
let online = context
|
let online = context
|
||||||
.chat_server()
|
.chat_server()
|
||||||
.send(GetPostUsersOnline { post_id: data.id })
|
.send(GetPostUsersOnline { post_id: data.id })
|
||||||
|
@ -134,7 +143,7 @@ impl PerformCrud for GetPosts {
|
||||||
.unwrap_or(None);
|
.unwrap_or(None);
|
||||||
let saved_only = data.saved_only;
|
let saved_only = data.saved_only;
|
||||||
|
|
||||||
let posts = blocking(context.pool(), move |conn| {
|
let mut posts = blocking(context.pool(), move |conn| {
|
||||||
PostQueryBuilder::create(conn)
|
PostQueryBuilder::create(conn)
|
||||||
.listing_type(listing_type)
|
.listing_type(listing_type)
|
||||||
.sort(sort)
|
.sort(sort)
|
||||||
|
@ -152,6 +161,16 @@ impl PerformCrud for GetPosts {
|
||||||
.await?
|
.await?
|
||||||
.map_err(|e| ApiError::err("couldnt_get_posts", e))?;
|
.map_err(|e| ApiError::err("couldnt_get_posts", e))?;
|
||||||
|
|
||||||
|
// Blank out deleted or removed info for non-logged in users
|
||||||
|
if person_id.is_none() {
|
||||||
|
for pv in posts
|
||||||
|
.iter_mut()
|
||||||
|
.filter(|p| p.post.deleted || p.post.removed)
|
||||||
|
{
|
||||||
|
pv.post = pv.to_owned().post.blank_out_deleted_or_removed_info();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(GetPostsResponse { posts })
|
Ok(GetPostsResponse { posts })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ use crate::{
|
||||||
PostSaved,
|
PostSaved,
|
||||||
PostSavedForm,
|
PostSavedForm,
|
||||||
},
|
},
|
||||||
traits::{Crud, Likeable, Readable, Saveable},
|
traits::{Crud, DeleteableOrRemoveable, Likeable, Readable, Saveable},
|
||||||
};
|
};
|
||||||
use diesel::{dsl::*, result::Error, ExpressionMethods, PgConnection, QueryDsl, RunQueryDsl};
|
use diesel::{dsl::*, result::Error, ExpressionMethods, PgConnection, QueryDsl, RunQueryDsl};
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
@ -242,6 +242,20 @@ impl Readable for PostRead {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl DeleteableOrRemoveable for Post {
|
||||||
|
fn blank_out_deleted_or_removed_info(mut self) -> Self {
|
||||||
|
self.name = "".into();
|
||||||
|
self.url = None;
|
||||||
|
self.body = None;
|
||||||
|
self.embed_title = None;
|
||||||
|
self.embed_description = None;
|
||||||
|
self.embed_html = None;
|
||||||
|
self.thumbnail_url = None;
|
||||||
|
|
||||||
|
self
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use crate::{
|
use crate::{
|
||||||
|
|
Loading…
Reference in New Issue