use bitwarden_api_api::models::UserDecryptionResponseModel;
use serde::{Deserialize, Serialize};
use crate::{
auth::UserDecryptionOptionsResponseModel,
key_management::master_password::{MasterPasswordError, MasterPasswordUnlockData},
};
#[allow(dead_code)]
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct UserDecryptionData {
pub master_password_unlock: Option<MasterPasswordUnlockData>,
}
impl TryFrom<&UserDecryptionResponseModel> for UserDecryptionData {
type Error = MasterPasswordError;
fn try_from(response: &UserDecryptionResponseModel) -> Result<Self, Self::Error> {
let master_password_unlock = response
.master_password_unlock
.as_deref()
.map(MasterPasswordUnlockData::try_from)
.transpose()?;
Ok(UserDecryptionData {
master_password_unlock,
})
}
}
impl TryFrom<&UserDecryptionOptionsResponseModel> for UserDecryptionData {
type Error = MasterPasswordError;
fn try_from(response: &UserDecryptionOptionsResponseModel) -> Result<Self, Self::Error> {
let master_password_unlock = response
.master_password_unlock
.as_ref()
.map(MasterPasswordUnlockData::try_from)
.transpose()?;
Ok(UserDecryptionData {
master_password_unlock,
})
}
}