From 73f527e772b054946a652a774b03cdbf8744af03 Mon Sep 17 00:00:00 2001 From: link2xt Date: Mon, 15 Jul 2024 21:44:25 +0000 Subject: [PATCH] fix: randomize avatar blob filenames to work around caching --- src/mimeparser.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/mimeparser.rs b/src/mimeparser.rs index d21e3f0ac..081b3b4e5 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -11,6 +11,7 @@ use deltachat_derive::{FromSql, ToSql}; use format_flowed::unformat_flowed; use lettre_email::mime::Mime; use mailparse::{addrparse_header, DispositionType, MailHeader, MailHeaderMap, SingleInfo}; +use rand::distributions::{Alphanumeric, DistString}; use crate::aheader::{Aheader, EncryptPreference}; use crate::blob::BlobObject; @@ -785,7 +786,15 @@ impl MimeMessage { .collect::() .strip_prefix("base64:") { - match BlobObject::store_from_base64(context, base64, "avatar").await { + // Add random suffix to the filename + // to prevent the UI from accidentally using + // cached "avatar.jpg". + let suffix = Alphanumeric + .sample_string(&mut rand::thread_rng(), 7) + .to_lowercase(); + + match BlobObject::store_from_base64(context, base64, &format!("avatar-{suffix}")).await + { Ok(path) => Some(AvatarAction::Change(path)), Err(err) => { warn!(