feat: use key fingerprints for color generation

This way contact colors stays the same
even if the address changes later.
This commit is contained in:
link2xt
2025-08-26 16:35:25 +00:00
committed by l
parent aaa83a8f52
commit 4010c60e7b
2 changed files with 10 additions and 4 deletions

View File

@@ -1797,7 +1797,8 @@ impl Chat {
/// Returns chat avatar color.
///
/// For 1:1 chats, the color is calculated from the contact's address.
/// For 1:1 chats, the color is calculated from the contact's address
/// for address-contacts and from the OpenPGP key fingerprint for key-contacts.
/// For group chats the color is calculated from the grpid, if present, or the chat name.
pub async fn get_color(&self, context: &Context) -> Result<u32> {
let mut color = 0;

View File

@@ -1575,11 +1575,16 @@ impl Contact {
}
/// Get a color for the contact.
/// The color is calculated from the contact's email address
/// and can be used for an fallback avatar with white initials
/// The color is calculated from the contact's fingerprint (for key-contacts)
/// or email address (for address-contacts) and can be used
/// for an fallback avatar with white initials
/// as well as for headlines in bubbles of group chats.
pub fn get_color(&self) -> u32 {
str_to_color(&self.addr.to_lowercase())
if let Some(fingerprint) = self.fingerprint() {
str_to_color(&fingerprint.hex())
} else {
str_to_color(&self.addr.to_lowercase())
}
}
/// Gets the contact's status.