refactor: do not ignore Contact::get_by_id errors in get_encrinfo

This commit is contained in:
link2xt
2024-04-05 20:31:33 +00:00
parent b6a12e3914
commit cf11741a8c

View File

@@ -1051,55 +1051,52 @@ impl Contact {
"Can not provide encryption info for special contact" "Can not provide encryption info for special contact"
); );
let mut ret = String::new(); let contact = Contact::get_by_id(context, contact_id).await?;
if let Ok(contact) = Contact::get_by_id(context, contact_id).await { let loginparam = LoginParam::load_configured_params(context).await?;
let loginparam = LoginParam::load_configured_params(context).await?; let peerstate = Peerstate::from_addr(context, &contact.addr).await?;
let peerstate = Peerstate::from_addr(context, &contact.addr).await?;
if let Some(peerstate) = let Some(peerstate) = peerstate.filter(|peerstate| peerstate.peek_key(false).is_some())
peerstate.filter(|peerstate| peerstate.peek_key(false).is_some()) else {
{ return Ok(stock_str::encr_none(context).await);
let stock_message = match peerstate.prefer_encrypt { };
EncryptPreference::Mutual => stock_str::e2e_preferred(context).await,
EncryptPreference::NoPreference => stock_str::e2e_available(context).await,
EncryptPreference::Reset => stock_str::encr_none(context).await,
};
let finger_prints = stock_str::finger_prints(context).await; let stock_message = match peerstate.prefer_encrypt {
ret += &format!("{stock_message}.\n{finger_prints}:"); EncryptPreference::Mutual => stock_str::e2e_preferred(context).await,
EncryptPreference::NoPreference => stock_str::e2e_available(context).await,
EncryptPreference::Reset => stock_str::encr_none(context).await,
};
let fingerprint_self = load_self_public_key(context) let finger_prints = stock_str::finger_prints(context).await;
.await? let mut ret = format!("{stock_message}.\n{finger_prints}:");
.fingerprint()
.to_string(); let fingerprint_self = load_self_public_key(context)
let fingerprint_other_verified = peerstate .await?
.peek_key(true) .fingerprint()
.map(|k| k.fingerprint().to_string()) .to_string();
.unwrap_or_default(); let fingerprint_other_verified = peerstate
let fingerprint_other_unverified = peerstate .peek_key(true)
.peek_key(false) .map(|k| k.fingerprint().to_string())
.map(|k| k.fingerprint().to_string()) .unwrap_or_default();
.unwrap_or_default(); let fingerprint_other_unverified = peerstate
if loginparam.addr < peerstate.addr { .peek_key(false)
cat_fingerprint(&mut ret, &loginparam.addr, &fingerprint_self, ""); .map(|k| k.fingerprint().to_string())
cat_fingerprint( .unwrap_or_default();
&mut ret, if loginparam.addr < peerstate.addr {
&peerstate.addr, cat_fingerprint(&mut ret, &loginparam.addr, &fingerprint_self, "");
&fingerprint_other_verified, cat_fingerprint(
&fingerprint_other_unverified, &mut ret,
); &peerstate.addr,
} else { &fingerprint_other_verified,
cat_fingerprint( &fingerprint_other_unverified,
&mut ret, );
&peerstate.addr, } else {
&fingerprint_other_verified, cat_fingerprint(
&fingerprint_other_unverified, &mut ret,
); &peerstate.addr,
cat_fingerprint(&mut ret, &loginparam.addr, &fingerprint_self, ""); &fingerprint_other_verified,
} &fingerprint_other_unverified,
} else { );
ret += &stock_str::encr_none(context).await; cat_fingerprint(&mut ret, &loginparam.addr, &fingerprint_self, "");
}
} }
Ok(ret) Ok(ret)