Allow empty messages with attachment.

This commit is contained in:
Paul
2021-02-19 14:09:19 +00:00
parent 5baf85a8e9
commit db6047f2d3
2 changed files with 8 additions and 1 deletions

View File

@@ -12,7 +12,7 @@ use validator::Validate;
#[derive(Validate, Serialize, Deserialize)] #[derive(Validate, Serialize, Deserialize)]
pub struct Data { pub struct Data {
#[validate(length(min = 1, max = 2000))] #[validate(length(min = 0, max = 2000))]
content: String, content: String,
// Maximum length of 36 allows both ULIDs and UUIDs. // Maximum length of 36 allows both ULIDs and UUIDs.
#[validate(length(min = 1, max = 36))] #[validate(length(min = 1, max = 36))]
@@ -27,6 +27,10 @@ pub async fn req(user: User, target: Ref, message: Json<Data>) -> Result<JsonVal
.validate() .validate()
.map_err(|error| Error::FailedValidation { error })?; .map_err(|error| Error::FailedValidation { error })?;
if message.content.len() == 0 && message.attachment.is_none() {
return Err(Error::EmptyMessage);
}
let target = target.fetch_channel().await?; let target = target.fetch_channel().await?;
let perm = permissions::PermissionCalculator::new(&user) let perm = permissions::PermissionCalculator::new(&user)

View File

@@ -40,6 +40,8 @@ pub enum Error {
UnknownAttachment, UnknownAttachment,
#[snafu(display("Cannot edit someone else's message."))] #[snafu(display("Cannot edit someone else's message."))]
CannotEditMessage, CannotEditMessage,
#[snafu(display("Cannot send empty message."))]
EmptyMessage,
#[snafu(display("Cannot remove yourself from a group, use delete channel instead."))] #[snafu(display("Cannot remove yourself from a group, use delete channel instead."))]
CannotRemoveYourself, CannotRemoveYourself,
#[snafu(display("Group size is too large."))] #[snafu(display("Group size is too large."))]
@@ -92,6 +94,7 @@ impl<'r> Responder<'r, 'static> for Error {
Error::UnknownChannel => Status::NotFound, Error::UnknownChannel => Status::NotFound,
Error::UnknownAttachment => Status::BadRequest, Error::UnknownAttachment => Status::BadRequest,
Error::CannotEditMessage => Status::Forbidden, Error::CannotEditMessage => Status::Forbidden,
Error::EmptyMessage => Status::UnprocessableEntity,
Error::CannotRemoveYourself => Status::BadRequest, Error::CannotRemoveYourself => Status::BadRequest,
Error::GroupTooLarge { .. } => Status::Forbidden, Error::GroupTooLarge { .. } => Status::Forbidden,
Error::AlreadyInGroup => Status::Conflict, Error::AlreadyInGroup => Status::Conflict,