diff --git a/src/message.rs b/src/message.rs index eb01fa55a..f9c39cde4 100644 --- a/src/message.rs +++ b/src/message.rs @@ -980,19 +980,14 @@ impl Message { } } self.param.set(Param::File, file); - if let Some(filemime) = filemime { - self.param.set(Param::MimeType, filemime); - } + self.param.set_optional(Param::MimeType, filemime); } /// Set different sender name for a message. /// This overrides the name set by the `set_config()`-option `displayname`. pub fn set_override_sender_name(&mut self, name: Option) { - if let Some(name) = name { - self.param.set(Param::OverrideSenderDisplayname, name); - } else { - self.param.remove(Param::OverrideSenderDisplayname); - } + self.param + .set_optional(Param::OverrideSenderDisplayname, name); } /// Sets the dimensions of associated image or video file. diff --git a/src/param.rs b/src/param.rs index 8768f996d..d0f3bb1aa 100644 --- a/src/param.rs +++ b/src/param.rs @@ -281,6 +281,16 @@ impl Params { self } + /// Sets the given key from an optional value. + /// Removes the key if the value is `None`. + pub fn set_optional(&mut self, key: Param, value: Option) -> &mut Self { + if let Some(value) = value { + self.set(key, value) + } else { + self.remove(key) + } + } + /// Check if there are any values in this. pub fn is_empty(&self) -> bool { self.inner.is_empty()