mirror of
https://github.com/chatmail/core.git
synced 2026-05-19 14:56:33 +03:00
Compare commits
1 Commits
v2.18.0
...
link2xt/sk
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c16b29b126 |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
16
src/chat.rs
16
src/chat.rs
@@ -1771,6 +1771,12 @@ impl Chat {
|
|||||||
return Ok(Some(get_device_icon(context).await?));
|
return Ok(Some(get_device_icon(context).await?));
|
||||||
} else if self.is_self_talk() {
|
} else if self.is_self_talk() {
|
||||||
return Ok(Some(get_saved_messages_icon(context).await?));
|
return Ok(Some(get_saved_messages_icon(context).await?));
|
||||||
|
} else if !self.is_encrypted(context).await? {
|
||||||
|
// This is an unencrypted chat, show a special avatar that marks it as such.
|
||||||
|
return Ok(Some(get_abs_path(
|
||||||
|
context,
|
||||||
|
Path::new(&get_unencrypted_chat_icon(context).await?),
|
||||||
|
)));
|
||||||
} else if self.typ == Chattype::Single {
|
} else if self.typ == Chattype::Single {
|
||||||
// For 1:1 chats, we always use the same avatar as for the contact
|
// For 1:1 chats, we always use the same avatar as for the contact
|
||||||
// This is before the `self.is_encrypted()` check, because that function
|
// This is before the `self.is_encrypted()` check, because that function
|
||||||
@@ -1780,12 +1786,6 @@ impl Chat {
|
|||||||
let contact = Contact::get_by_id(context, *contact_id).await?;
|
let contact = Contact::get_by_id(context, *contact_id).await?;
|
||||||
return contact.get_profile_image(context).await;
|
return contact.get_profile_image(context).await;
|
||||||
}
|
}
|
||||||
} else if !self.is_encrypted(context).await? {
|
|
||||||
// This is an address-contact chat, show a special avatar that marks it as such
|
|
||||||
return Ok(Some(get_abs_path(
|
|
||||||
context,
|
|
||||||
Path::new(&get_address_contact_icon(context).await?),
|
|
||||||
)));
|
|
||||||
} else if let Some(image_rel) = self.param.get(Param::ProfileImage) {
|
} else if let Some(image_rel) = self.param.get(Param::ProfileImage) {
|
||||||
// Load the group avatar, or the device-chat / saved-messages icon
|
// Load the group avatar, or the device-chat / saved-messages icon
|
||||||
if !image_rel.is_empty() {
|
if !image_rel.is_empty() {
|
||||||
@@ -2490,11 +2490,11 @@ pub(crate) async fn get_archive_icon(context: &Context) -> Result<PathBuf> {
|
|||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) async fn get_address_contact_icon(context: &Context) -> Result<PathBuf> {
|
pub(crate) async fn get_unencrypted_chat_icon(context: &Context) -> Result<PathBuf> {
|
||||||
get_asset_icon(
|
get_asset_icon(
|
||||||
context,
|
context,
|
||||||
"icon-address-contact",
|
"icon-address-contact",
|
||||||
include_bytes!("../assets/icon-address-contact.png"),
|
include_bytes!("../assets/icon-unencrypted-chat.png"),
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -268,7 +268,7 @@ pub async fn make_vcard(context: &Context, contacts: &[ContactId]) -> Result<Str
|
|||||||
for id in contacts {
|
for id in contacts {
|
||||||
let c = Contact::get_by_id(context, *id).await?;
|
let c = Contact::get_by_id(context, *id).await?;
|
||||||
let key = c.public_key(context).await?.map(|k| k.to_base64());
|
let key = c.public_key(context).await?.map(|k| k.to_base64());
|
||||||
let profile_image = match c.get_profile_image_ex(context, false).await? {
|
let profile_image = match c.get_profile_image(context).await? {
|
||||||
None => None,
|
None => None,
|
||||||
Some(path) => tokio::fs::read(path)
|
Some(path) => tokio::fs::read(path)
|
||||||
.await
|
.await
|
||||||
@@ -1545,17 +1545,6 @@ impl Contact {
|
|||||||
/// This is the image set by each remote user on their own
|
/// This is the image set by each remote user on their own
|
||||||
/// using set_config(context, "selfavatar", image).
|
/// using set_config(context, "selfavatar", image).
|
||||||
pub async fn get_profile_image(&self, context: &Context) -> Result<Option<PathBuf>> {
|
pub async fn get_profile_image(&self, context: &Context) -> Result<Option<PathBuf>> {
|
||||||
self.get_profile_image_ex(context, true).await
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Get the contact's profile image.
|
|
||||||
/// This is the image set by each remote user on their own
|
|
||||||
/// using set_config(context, "selfavatar", image).
|
|
||||||
async fn get_profile_image_ex(
|
|
||||||
&self,
|
|
||||||
context: &Context,
|
|
||||||
show_fallback_icon: bool,
|
|
||||||
) -> Result<Option<PathBuf>> {
|
|
||||||
if self.id == ContactId::SELF {
|
if self.id == ContactId::SELF {
|
||||||
if let Some(p) = context.get_config(Config::Selfavatar).await? {
|
if let Some(p) = context.get_config(Config::Selfavatar).await? {
|
||||||
return Ok(Some(PathBuf::from(p))); // get_config() calls get_abs_path() internally already
|
return Ok(Some(PathBuf::from(p))); // get_config() calls get_abs_path() internally already
|
||||||
@@ -1563,9 +1552,6 @@ impl Contact {
|
|||||||
} else if self.id == ContactId::DEVICE {
|
} else if self.id == ContactId::DEVICE {
|
||||||
return Ok(Some(chat::get_device_icon(context).await?));
|
return Ok(Some(chat::get_device_icon(context).await?));
|
||||||
}
|
}
|
||||||
if show_fallback_icon && !self.id.is_special() && !self.is_key_contact() {
|
|
||||||
return Ok(Some(chat::get_address_contact_icon(context).await?));
|
|
||||||
}
|
|
||||||
if let Some(image_rel) = self.param.get(Param::ProfileImage) {
|
if let Some(image_rel) = self.param.get(Param::ProfileImage) {
|
||||||
if !image_rel.is_empty() {
|
if !image_rel.is_empty() {
|
||||||
return Ok(Some(get_abs_path(context, Path::new(image_rel))));
|
return Ok(Some(get_abs_path(context, Path::new(image_rel))));
|
||||||
|
|||||||
Reference in New Issue
Block a user