]> Untitled Git - lemmy.git/blobdiff - crates/api_crud/src/user/read.rs
Adding shortname fetching for users and communities. Fixes #1662 (#1663)
[lemmy.git] / crates / api_crud / src / user / read.rs
index f7275ef701af5e0b4b781f00eb48660dcb181b22..ff8db0a7e01a48d0a2f2ccb16c735f46f1831fed 100644 (file)
@@ -1,7 +1,8 @@
 use crate::PerformCrud;
 use actix_web::web::Data;
 use lemmy_api_common::{blocking, get_local_user_view_from_jwt_opt, person::*};
-use lemmy_db_queries::{from_opt_str_to_opt_enum, source::person::Person_, SortType};
+use lemmy_apub::{build_actor_id_from_shortname, EndpointType};
+use lemmy_db_queries::{from_opt_str_to_opt_enum, ApubObject, SortType};
 use lemmy_db_schema::source::person::*;
 use lemmy_db_views::{comment_view::CommentQueryBuilder, post_view::PostQueryBuilder};
 use lemmy_db_views_actor::{
@@ -34,15 +35,17 @@ impl PerformCrud for GetPersonDetails {
 
     let sort: Option<SortType> = from_opt_str_to_opt_enum(&data.sort);
 
-    let username = data
-      .username
-      .to_owned()
-      .unwrap_or_else(|| "admin".to_string());
     let person_details_id = match data.person_id {
       Some(id) => id,
       None => {
+        let name = data
+          .username
+          .to_owned()
+          .unwrap_or_else(|| "admin".to_string());
+        let actor_id = build_actor_id_from_shortname(EndpointType::Person, &name)?;
+
         let person = blocking(context.pool(), move |conn| {
-          Person::find_by_name(conn, &username)
+          Person::read_from_apub_id(conn, &actor_id)
         })
         .await?;
         person