Handle attachment file names more robustly (#494)
This commit is contained in:
@@ -220,12 +220,10 @@ impl ChatState {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let (source, msg_filename) = match &ev.content.msgtype {
|
let (source, msg_filename) = match &ev.content.msgtype {
|
||||||
MessageType::Audio(c) => (c.source.clone(), c.body.as_str()),
|
MessageType::Audio(c) => (c.source.clone(), c.filename()),
|
||||||
MessageType::File(c) => {
|
MessageType::File(c) => (c.source.clone(), c.filename()),
|
||||||
(c.source.clone(), c.filename.as_deref().unwrap_or(c.body.as_str()))
|
MessageType::Image(c) => (c.source.clone(), c.filename()),
|
||||||
},
|
MessageType::Video(c) => (c.source.clone(), c.filename()),
|
||||||
MessageType::Image(c) => (c.source.clone(), c.body.as_str()),
|
|
||||||
MessageType::Video(c) => (c.source.clone(), c.body.as_str()),
|
|
||||||
_ => {
|
_ => {
|
||||||
if !flags.contains(DownloadFlags::OPEN) {
|
if !flags.contains(DownloadFlags::OPEN) {
|
||||||
return Err(IambError::NoAttachment.into());
|
return Err(IambError::NoAttachment.into());
|
||||||
@@ -263,7 +261,7 @@ impl ChatState {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if filename.is_dir() {
|
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) {
|
if filename.exists() && !flags.contains(DownloadFlags::FORCE) {
|
||||||
|
|||||||
Reference in New Issue
Block a user