From: Nutomic <me@nutomic.com>
Date: Mon, 26 Jun 2023 16:14:50 +0000 (+0200)
Subject: Fetch community outbox and moderators in parallel (#3360)
X-Git-Url: http://these/git/readmes/%24%7B%60data:application/%24%7Bargs.pageFn.jump%20n%7D?a=commitdiff_plain;h=50efb1d519c63a7007a07f11cc8a11487703c70d;p=lemmy.git

Fetch community outbox and moderators in parallel (#3360)

This will speedup first time fetching of a remote community
---

diff --git a/crates/apub/src/objects/community.rs b/crates/apub/src/objects/community.rs
index 888a7f45..17476e9f 100644
--- a/crates/apub/src/objects/community.rs
+++ b/crates/apub/src/objects/community.rs
@@ -140,19 +140,16 @@ impl Object for ApubCommunity {
 
     // Fetching mods and outbox is not necessary for Lemmy to work, so ignore errors. Besides,
     // we need to ignore these errors so that tests can work entirely offline.
-    group
-      .outbox
-      .dereference(&community, context)
-      .await
-      .map_err(|e| debug!("{}", e))
-      .ok();
+    let fetch_outbox = group.outbox.dereference(&community, context);
 
     if let Some(moderators) = group.attributed_to {
-      moderators
-        .dereference(&community, context)
-        .await
-        .map_err(|e| debug!("{}", e))
-        .ok();
+      let fetch_moderators = moderators.dereference(&community, context);
+      // Fetch mods and outbox in parallel
+      let res = tokio::join!(fetch_outbox, fetch_moderators);
+      res.0.map_err(|e| debug!("{}", e)).ok();
+      res.1.map_err(|e| debug!("{}", e)).ok();
+    } else {
+      fetch_outbox.await.map_err(|e| debug!("{}", e)).ok();
     }
 
     Ok(community)