diff --git a/crates/routes/src/webfinger.rs b/crates/routes/src/webfinger.rs index db5e662c0..82b8a619e 100644 --- a/crates/routes/src/webfinger.rs +++ b/crates/routes/src/webfinger.rs @@ -43,21 +43,24 @@ async fn get_webfinger_response( .to_string(); let name_ = name.clone(); - let community_id: Option = blocking(context.pool(), move |conn| { - Community::read_from_name(conn, &name_) - }) - .await? - .ok() - .map(|c| c.actor_id.into()); let user_id: Option = blocking(context.pool(), move |conn| { - Person::find_by_name(conn, &name) + Person::find_by_name(conn, &name_) }) .await? .ok() .map(|c| c.actor_id.into()); + let community_id: Option = 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()