Fetch community mods synchronously (#5169)

* Fetch community mods synchronously

* fix

* fix

---------

Co-authored-by: Dessalines <dessalines@users.noreply.github.com>
This commit is contained in:
Nutomic 2024-11-12 18:43:24 +01:00 committed by Felix Ableitner
parent c155243ac6
commit 005f4d53c8

View file

@ -178,10 +178,16 @@ impl Object for ApubCommunity {
LanguageTag::to_language_id_multiple(group.language, &mut context.pool()).await?; LanguageTag::to_language_id_multiple(group.language, &mut context.pool()).await?;
let timestamp = group.updated.or(group.published).unwrap_or_else(naive_now); let timestamp = group.updated.or(group.published).unwrap_or_else(naive_now);
let community = Community::insert_apub(&mut context.pool(), timestamp, &form).await?; let community: ApubCommunity = Community::insert_apub(&mut context.pool(), timestamp, &form)
.await?
.into();
CommunityLanguage::update(&mut context.pool(), languages, community.id).await?; CommunityLanguage::update(&mut context.pool(), languages, community.id).await?;
let community: ApubCommunity = community.into(); // Need to fetch mods synchronously, otherwise fetching a post in community with
// `posting_restricted_to_mods` can fail if mods havent been fetched yet.
if let Some(moderators) = group.attributed_to {
moderators.dereference(&community, context).await.ok();
}
// These collections are not necessary for Lemmy to work, so ignore errors. // These collections are not necessary for Lemmy to work, so ignore errors.
let community_ = community.clone(); let community_ = community.clone();
@ -194,9 +200,6 @@ impl Object for ApubCommunity {
if let Some(featured) = group.featured { if let Some(featured) = group.featured {
featured.dereference(&community_, &context_).await.ok(); featured.dereference(&community_, &context_).await.ok();
} }
if let Some(moderators) = group.attributed_to {
moderators.dereference(&community_, &context_).await.ok();
}
Ok(()) Ok(())
}); });