mirror of https://github.com/LemmyNet/lemmy.git
* Expose remote site info in GetCommunity API (fixes #2208) * use instance_actor_id_from_url()change_default_listing_type
parent
3d8709780a
commit
e0381df88a
|
@ -505,6 +505,7 @@ impl Perform for TransferCommunity {
|
|||
// Return the jwt
|
||||
Ok(GetCommunityResponse {
|
||||
community_view,
|
||||
site: None,
|
||||
moderators,
|
||||
online: 0,
|
||||
})
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
use lemmy_db_schema::newtypes::{CommunityId, PersonId};
|
||||
use lemmy_db_schema::{
|
||||
newtypes::{CommunityId, PersonId},
|
||||
source::site::Site,
|
||||
};
|
||||
use lemmy_db_views_actor::{
|
||||
community_moderator_view::CommunityModeratorView,
|
||||
community_view::CommunityView,
|
||||
|
@ -18,6 +21,7 @@ pub struct GetCommunity {
|
|||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct GetCommunityResponse {
|
||||
pub community_view: CommunityView,
|
||||
pub site: Option<Site>,
|
||||
pub moderators: Vec<CommunityModeratorView>,
|
||||
pub online: usize,
|
||||
}
|
||||
|
|
|
@ -6,10 +6,13 @@ use lemmy_api_common::{
|
|||
community::*,
|
||||
get_local_user_view_from_jwt_opt,
|
||||
};
|
||||
use lemmy_apub::{fetcher::resolve_actor_identifier, objects::community::ApubCommunity};
|
||||
use lemmy_apub::{
|
||||
fetcher::resolve_actor_identifier,
|
||||
objects::{community::ApubCommunity, instance::instance_actor_id_from_url},
|
||||
};
|
||||
use lemmy_db_schema::{
|
||||
from_opt_str_to_opt_enum,
|
||||
source::community::Community,
|
||||
source::{community::Community, site::Site},
|
||||
traits::DeleteableOrRemoveable,
|
||||
ListingType,
|
||||
SortType,
|
||||
|
@ -75,8 +78,22 @@ impl PerformCrud for GetCommunity {
|
|||
.await
|
||||
.unwrap_or(1);
|
||||
|
||||
let site_id = instance_actor_id_from_url(community_view.community.actor_id.clone().into());
|
||||
let mut site: Option<Site> = blocking(context.pool(), move |conn| {
|
||||
Site::read_from_apub_id(conn, site_id)
|
||||
})
|
||||
.await??;
|
||||
// no need to include metadata for local site (its already available through other endpoints).
|
||||
// this also prevents us from leaking the federation private key.
|
||||
if let Some(s) = &site {
|
||||
if s.actor_id.domain() == Some(context.settings().hostname.as_ref()) {
|
||||
site = None;
|
||||
}
|
||||
}
|
||||
|
||||
let res = GetCommunityResponse {
|
||||
community_view,
|
||||
site,
|
||||
moderators,
|
||||
online,
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue