Move profile details model into entities too
This commit is contained in:
		
							parent
							
								
									e1baeffc6e
								
							
						
					
					
						commit
						fddcf7272c
					
				| 
						 | 
				
			
			@ -13,16 +13,10 @@ use futures::StreamExt;
 | 
			
		|||
use log::error;
 | 
			
		||||
use tokio_tungstenite::{connect_async, tungstenite};
 | 
			
		||||
 | 
			
		||||
use super::entities::Session;
 | 
			
		||||
use super::entities::{ProfileDetails, Session};
 | 
			
		||||
use super::internals::xrpc::AuthenticateableXrpcClient;
 | 
			
		||||
use super::streaming::{handle_message, CommitProcessor};
 | 
			
		||||
 | 
			
		||||
#[derive(Debug)]
 | 
			
		||||
pub struct ProfileDetails {
 | 
			
		||||
    pub display_name: String,
 | 
			
		||||
    pub description: String,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub struct Bluesky {
 | 
			
		||||
    client: AtpServiceClient<AtpServiceWrapper<AuthenticateableXrpcClient>>,
 | 
			
		||||
    session: Option<Arc<Mutex<Session>>>,
 | 
			
		||||
| 
						 | 
				
			
			@ -150,15 +144,10 @@ impl Bluesky {
 | 
			
		|||
            Err(e) => return Err(e.into()),
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        let profile = match profile_data.value {
 | 
			
		||||
            Record::AppBskyActorProfile(profile) => profile,
 | 
			
		||||
            _ => return Err(anyhow!("Big bad, no such profile")),
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        Ok(Some(ProfileDetails {
 | 
			
		||||
            display_name: profile.display_name.unwrap_or_default(),
 | 
			
		||||
            description: profile.description.unwrap_or_default(),
 | 
			
		||||
        }))
 | 
			
		||||
        match profile_data.value {
 | 
			
		||||
            Record::AppBskyActorProfile(profile) => Ok(Some(ProfileDetails::from(*profile))),
 | 
			
		||||
            _ => Err(anyhow!("Wrong type of record")),
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub async fn resolve_handle(&self, handle: &str) -> Result<Option<String>> {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,8 +2,10 @@ mod follow;
 | 
			
		|||
mod like;
 | 
			
		||||
mod post;
 | 
			
		||||
mod session;
 | 
			
		||||
mod profile;
 | 
			
		||||
 | 
			
		||||
pub use follow::FollowRecord;
 | 
			
		||||
pub use like::LikeRecord;
 | 
			
		||||
pub use post::PostRecord;
 | 
			
		||||
pub use session::Session;
 | 
			
		||||
pub use profile::ProfileDetails;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
use atrium_api::app::bsky::actor::profile::Record as ProfileRecord;
 | 
			
		||||
 | 
			
		||||
#[derive(Debug)]
 | 
			
		||||
pub struct ProfileDetails {
 | 
			
		||||
    pub display_name: String,
 | 
			
		||||
    pub description: String,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl From<ProfileRecord> for ProfileDetails {
 | 
			
		||||
    fn from(value: ProfileRecord) -> Self {
 | 
			
		||||
        Self {
 | 
			
		||||
            display_name: value.display_name.unwrap_or_default(),
 | 
			
		||||
            description: value.description.unwrap_or_default()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue