feat(RemoteActor): add bio, banner_url, followers_url, following_url, also_known_as fields
Bump to 0.3.1. These fields are available on DbActor at follow/ingest time but were discarded when constructing RemoteActor. Now populated in from_json and follow(), so consuming repos can store and return rich actor profiles without extra queries.
This commit is contained in:
@@ -355,6 +355,11 @@ impl Object for DbActor {
|
||||
display_name: json.name.clone(),
|
||||
avatar_url: json.icon.as_ref().map(|i| i.url.to_string()),
|
||||
outbox_url: json.outbox.as_ref().map(|u| u.to_string()),
|
||||
bio: json.summary.clone(),
|
||||
banner_url: json.image.as_ref().map(|i| i.url.to_string()),
|
||||
followers_url: json.followers.as_ref().map(|u| u.to_string()),
|
||||
following_url: json.following.as_ref().map(|u| u.to_string()),
|
||||
also_known_as: json.also_known_as.clone(),
|
||||
};
|
||||
data.actor_repo.upsert_remote_actor(actor).await?;
|
||||
|
||||
|
||||
@@ -30,6 +30,11 @@ pub struct RemoteActor {
|
||||
pub display_name: Option<String>,
|
||||
pub avatar_url: Option<String>,
|
||||
pub outbox_url: Option<String>,
|
||||
pub bio: Option<String>,
|
||||
pub banner_url: Option<String>,
|
||||
pub followers_url: Option<String>,
|
||||
pub following_url: Option<String>,
|
||||
pub also_known_as: Vec<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
|
||||
@@ -37,9 +37,14 @@ impl ActivityPubService {
|
||||
.shared_inbox_url
|
||||
.as_ref()
|
||||
.map(|u| u.to_string()),
|
||||
display_name: Some(remote_actor.username.clone()),
|
||||
display_name: remote_actor.display_name.clone().or_else(|| Some(remote_actor.username.clone())),
|
||||
avatar_url: remote_actor.avatar_url.as_ref().map(|u| u.to_string()),
|
||||
outbox_url: Some(remote_actor.outbox_url.to_string()),
|
||||
bio: remote_actor.bio.clone(),
|
||||
banner_url: remote_actor.banner_url.as_ref().map(|u| u.to_string()),
|
||||
followers_url: Some(remote_actor.followers_url.to_string()),
|
||||
following_url: Some(remote_actor.following_url.to_string()),
|
||||
also_known_as: remote_actor.also_known_as.clone(),
|
||||
};
|
||||
// Save BEFORE delivering — prevents lost state on process restart.
|
||||
data.follow_repo
|
||||
@@ -382,9 +387,14 @@ impl ActivityPubService {
|
||||
handle: format!("{}@{}", target.username, data.domain),
|
||||
inbox_url: format!("{}/inbox", target_actor_url),
|
||||
shared_inbox_url: None,
|
||||
display_name: Some(target.username),
|
||||
avatar_url: None,
|
||||
outbox_url: None,
|
||||
display_name: target.display_name.or(Some(target.username)),
|
||||
avatar_url: target.avatar_url.as_ref().map(|u| u.to_string()),
|
||||
outbox_url: Some(format!("{}/outbox", target_actor_url)),
|
||||
bio: target.bio,
|
||||
banner_url: target.banner_url.as_ref().map(|u| u.to_string()),
|
||||
followers_url: Some(format!("{}/followers", target_actor_url)),
|
||||
following_url: Some(format!("{}/following", target_actor_url)),
|
||||
also_known_as: target.also_known_as,
|
||||
};
|
||||
data.follow_repo
|
||||
.add_following(local_user_id, target_as_remote, &follow_id)
|
||||
|
||||
Reference in New Issue
Block a user