diff --git a/src/mastodon_api/accounts/types.rs b/src/mastodon_api/accounts/types.rs index 17157af..22086f7 100644 --- a/src/mastodon_api/accounts/types.rs +++ b/src/mastodon_api/accounts/types.rs @@ -11,7 +11,6 @@ use crate::mastodon_api::uploads::{save_b64_file, UploadError}; use crate::models::profiles::types::{ DbActorProfile, ExtraField, - IdentityProof, PaymentOption, ProfileUpdateData, }; @@ -248,10 +247,7 @@ fn process_b64_image_field_value( impl AccountUpdateData { pub fn into_profile_data( self, - current_avatar: &Option, - current_banner: &Option, - current_identity_proofs: &[IdentityProof], - current_payment_options: &[PaymentOption], + profile: &DbActorProfile, media_dir: &Path, ) -> Result { let maybe_bio = if let Some(ref bio_source) = self.note { @@ -262,13 +258,17 @@ impl AccountUpdateData { None }; let avatar = process_b64_image_field_value( - self.avatar, current_avatar.clone(), media_dir, + self.avatar, + profile.avatar_file_name.clone(), + media_dir, )?; let banner = process_b64_image_field_value( - self.header, current_banner.clone(), media_dir, + self.header, + profile.banner_file_name.clone(), + media_dir, )?; - let identity_proofs = current_identity_proofs.to_vec(); - let payment_options = current_payment_options.to_vec(); + let identity_proofs = profile.identity_proofs.inner().to_vec(); + let payment_options = profile.payment_options.inner().to_vec(); let mut extra_fields = vec![]; for field_source in self.fields_attributes.unwrap_or(vec![]) { let value = markdown_basic_to_html(&field_source.value) diff --git a/src/mastodon_api/accounts/views.rs b/src/mastodon_api/accounts/views.rs index 42d84af..be76a06 100644 --- a/src/mastodon_api/accounts/views.rs +++ b/src/mastodon_api/accounts/views.rs @@ -222,10 +222,7 @@ async fn update_credentials( let mut current_user = get_current_user(db_client, auth.token()).await?; let mut profile_data = account_data.into_inner() .into_profile_data( - ¤t_user.profile.avatar_file_name, - ¤t_user.profile.banner_file_name, - ¤t_user.profile.identity_proofs.into_inner(), - ¤t_user.profile.payment_options.into_inner(), + ¤t_user.profile, &config.media_dir(), )?; profile_data.clean()?; diff --git a/src/models/profiles/types.rs b/src/models/profiles/types.rs index 190ff26..2469785 100644 --- a/src/models/profiles/types.rs +++ b/src/models/profiles/types.rs @@ -236,6 +236,11 @@ impl Serialize for PaymentOption { pub struct PaymentOptions(pub Vec); impl PaymentOptions { + pub fn inner(&self) -> &[PaymentOption] { + let Self(payment_options) = self; + payment_options + } + pub fn into_inner(self) -> Vec { let Self(payment_options) = self; payment_options