From e3090e537fa30eddf118c4b51a76ed0fcacbbacf Mon Sep 17 00:00:00 2001 From: vaw Date: Fri, 22 Aug 2025 21:24:35 +0000 Subject: [PATCH] Handle attachment file names more robustly (#494) --- src/windows/room/chat.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/windows/room/chat.rs b/src/windows/room/chat.rs index 8a01a0a..c92d410 100644 --- a/src/windows/room/chat.rs +++ b/src/windows/room/chat.rs @@ -220,12 +220,10 @@ impl ChatState { }; let (source, msg_filename) = match &ev.content.msgtype { - MessageType::Audio(c) => (c.source.clone(), c.body.as_str()), - MessageType::File(c) => { - (c.source.clone(), c.filename.as_deref().unwrap_or(c.body.as_str())) - }, - MessageType::Image(c) => (c.source.clone(), c.body.as_str()), - MessageType::Video(c) => (c.source.clone(), c.body.as_str()), + MessageType::Audio(c) => (c.source.clone(), c.filename()), + MessageType::File(c) => (c.source.clone(), c.filename()), + MessageType::Image(c) => (c.source.clone(), c.filename()), + MessageType::Video(c) => (c.source.clone(), c.filename()), _ => { if !flags.contains(DownloadFlags::OPEN) { return Err(IambError::NoAttachment.into()); @@ -263,7 +261,7 @@ impl ChatState { }; if filename.is_dir() { - filename.push(msg_filename); + filename.push(msg_filename.replace(std::path::MAIN_SEPARATOR_STR, "_")); } if filename.exists() && !flags.contains(DownloadFlags::FORCE) {