]> Untitled Git - lemmy.git/commitdiff
Put community last in webfinger response (fixes #2037) (#2047)
authorNutomic <me@nutomic.com>
Fri, 21 Jan 2022 21:00:17 +0000 (21:00 +0000)
committerGitHub <noreply@github.com>
Fri, 21 Jan 2022 21:00:17 +0000 (21:00 +0000)
crates/routes/src/webfinger.rs

index db5e662c09f212e740b827513cd9c1c15f5f145a..82b8a619e94bea2266308432e982ad0633ec4c1a 100644 (file)
@@ -43,21 +43,24 @@ async fn get_webfinger_response(
     .to_string();
 
   let name_ = name.clone();
-  let community_id: Option<Url> = blocking(context.pool(), move |conn| {
-    Community::read_from_name(conn, &name_)
+  let user_id: Option<Url> = blocking(context.pool(), move |conn| {
+    Person::find_by_name(conn, &name_)
   })
   .await?
   .ok()
   .map(|c| c.actor_id.into());
-  let user_id: Option<Url> = blocking(context.pool(), move |conn| {
-    Person::find_by_name(conn, &name)
+  let community_id: Option<Url> = blocking(context.pool(), move |conn| {
+    Community::read_from_name(conn, &name)
   })
   .await?
   .ok()
   .map(|c| c.actor_id.into());
+
+  // Mastodon seems to prioritize the last webfinger item in case of duplicates. Put
+  // community last so that it gets prioritized. For Lemmy the order doesnt matter.
   let links = vec![
-    webfinger_link_for_actor(community_id),
     webfinger_link_for_actor(user_id),
+    webfinger_link_for_actor(community_id),
   ]
   .into_iter()
   .flatten()