Add source field to Account entity only if user is authenticated
This commit is contained in:
parent
5ec6ee4a6a
commit
56d073e1d8
1 changed files with 63 additions and 18 deletions
|
@ -52,23 +52,6 @@ impl Account {
|
||||||
.map(|name| get_file_url(instance_url, &name));
|
.map(|name| get_file_url(instance_url, &name));
|
||||||
let header_url = profile.banner_file_name.as_ref()
|
let header_url = profile.banner_file_name.as_ref()
|
||||||
.map(|name| get_file_url(instance_url, &name));
|
.map(|name| get_file_url(instance_url, &name));
|
||||||
let source = if !profile.is_local() {
|
|
||||||
// Remote actor
|
|
||||||
None
|
|
||||||
} else {
|
|
||||||
let fields_sources = profile.extra_fields.clone()
|
|
||||||
.unpack().into_iter()
|
|
||||||
.map(|field| AccountField {
|
|
||||||
name: field.name,
|
|
||||||
value: field.value_source.unwrap_or(field.value),
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
let source = Source {
|
|
||||||
note: profile.bio_source,
|
|
||||||
fields: fields_sources,
|
|
||||||
};
|
|
||||||
Some(source)
|
|
||||||
};
|
|
||||||
let fields = profile.extra_fields.unpack().into_iter()
|
let fields = profile.extra_fields.unpack().into_iter()
|
||||||
.map(|field| AccountField { name: field.name, value: field.value })
|
.map(|field| AccountField { name: field.name, value: field.value })
|
||||||
.collect();
|
.collect();
|
||||||
|
@ -85,13 +68,25 @@ impl Account {
|
||||||
followers_count: profile.follower_count,
|
followers_count: profile.follower_count,
|
||||||
following_count: profile.following_count,
|
following_count: profile.following_count,
|
||||||
statuses_count: profile.post_count,
|
statuses_count: profile.post_count,
|
||||||
source,
|
source: None,
|
||||||
wallet_address: None,
|
wallet_address: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn from_user(user: User, instance_url: &str) -> Self {
|
pub fn from_user(user: User, instance_url: &str) -> Self {
|
||||||
|
let fields_sources = user.profile.extra_fields.clone()
|
||||||
|
.unpack().into_iter()
|
||||||
|
.map(|field| AccountField {
|
||||||
|
name: field.name,
|
||||||
|
value: field.value_source.unwrap_or(field.value),
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
let source = Source {
|
||||||
|
note: user.profile.bio_source.clone(),
|
||||||
|
fields: fields_sources,
|
||||||
|
};
|
||||||
let mut account = Self::from_profile(user.profile, instance_url);
|
let mut account = Self::from_profile(user.profile, instance_url);
|
||||||
|
account.source = Some(source);
|
||||||
account.wallet_address = Some(user.wallet_address);
|
account.wallet_address = Some(user.wallet_address);
|
||||||
account
|
account
|
||||||
}
|
}
|
||||||
|
@ -177,3 +172,53 @@ impl AccountUpdateData {
|
||||||
Ok(profile_data)
|
Ok(profile_data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INSTANCE_URL: &str = "https://example.com";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_create_account_from_profile() {
|
||||||
|
let profile = DbActorProfile {
|
||||||
|
avatar_file_name: Some("test".to_string()),
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
let account = Account::from_profile(profile, INSTANCE_URL);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
account.avatar.unwrap(),
|
||||||
|
format!("{}/media/test", INSTANCE_URL),
|
||||||
|
);
|
||||||
|
assert!(account.source.is_none());
|
||||||
|
assert!(account.wallet_address.is_none());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_create_account_from_user() {
|
||||||
|
let bio_source = "test";
|
||||||
|
let wallet_address = "0x1234";
|
||||||
|
let profile = DbActorProfile {
|
||||||
|
bio_source: Some(bio_source.to_string()),
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
let user = User {
|
||||||
|
id: Uuid::new_v4(),
|
||||||
|
wallet_address: wallet_address.to_string(),
|
||||||
|
password_hash: "".to_string(),
|
||||||
|
private_key: "".to_string(),
|
||||||
|
profile,
|
||||||
|
};
|
||||||
|
let account = Account::from_user(user, INSTANCE_URL);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
account.source.unwrap().note.unwrap(),
|
||||||
|
bio_source,
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
account.wallet_address.unwrap(),
|
||||||
|
wallet_address,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue