Skip to content

Commit e83f764

Browse files
authored
Merge pull request #342 from Rustmail/331-the-unremind-command-does-not-indicate-that-a-reminder-does-not-exist
fix(unremind): the command does not indicate that a reminder does not exist
2 parents cff1ecb + 181e014 commit e83f764

6 files changed

Lines changed: 35 additions & 2 deletions

File tree

crates/rustmail/src/commands/remove_reminder/slash_command/remove_reminder.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,15 @@ impl RegistrableCommand for RemoveReminderCommand {
100100
};
101101

102102
let reminder = match get_reminder_by_id(reminder_id, pool).await {
103-
Ok(Some(r)) => r,
103+
Ok(Some(r)) => {
104+
if r.completed {
105+
return Err(ModmailError::Command(
106+
CommandError::ReminderAlreadyCompleted(reminder_id.to_string()),
107+
));
108+
} else {
109+
r
110+
}
111+
}
104112
Ok(None) => {
105113
return Err(ModmailError::Database(DatabaseError::NotFound(
106114
"".to_string(),

crates/rustmail/src/commands/remove_reminder/text_command/remove_reminder.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,15 @@ pub async fn remove_reminder(
3838
};
3939

4040
let reminder = match get_reminder_by_id(reminder_id as i64, pool).await {
41-
Ok(Some(r)) => r,
41+
Ok(Some(r)) => {
42+
if r.completed {
43+
return Err(ModmailError::Command(
44+
CommandError::ReminderAlreadyCompleted(reminder_id.to_string()),
45+
));
46+
} else {
47+
r
48+
}
49+
}
4250
Ok(None) => {
4351
return Err(ModmailError::Database(DatabaseError::NotFound(
4452
"".to_string(),

crates/rustmail/src/errors/dictionary.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,11 @@ impl DictionaryManager {
286286
Some(params),
287287
)
288288
}
289+
CommandError::ReminderAlreadyCompleted(reminder_id) => {
290+
let mut params = HashMap::new();
291+
params.insert("reminder_id".to_string(), reminder_id.clone());
292+
("reminder.already_complete".to_string(), Some(params))
293+
}
289294
_ => ("command.invalid_format".to_string(), None),
290295
},
291296
ModmailError::Thread(thread_err) => match thread_err {

crates/rustmail/src/errors/types.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ pub enum CommandError {
7575
ReminderAlreadyUnsubscribed(String),
7676
ReminderRoleRequired(String),
7777
ReminderRoleNotFound(String),
78+
ReminderAlreadyCompleted(String),
7879
}
7980

8081
#[derive(Debug, Clone)]
@@ -206,6 +207,9 @@ impl fmt::Display for CommandError {
206207
CommandError::ReminderRoleNotFound(role) => {
207208
write!(f, "Role {} not found", role)
208209
}
210+
CommandError::ReminderAlreadyCompleted(reminder_id) => {
211+
write!(f, "Reminder {} has already been completed", reminder_id)
212+
}
209213
}
210214
}
211215
}

crates/rustmail/src/i18n/language/en.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -786,6 +786,10 @@ pub fn load_english_messages(dict: &mut ErrorDictionary) {
786786
"⏰ Reminder for {roles} scheduled for **{time}** ({remaining_time})\n\n{content}",
787787
),
788788
);
789+
dict.messages.insert(
790+
"reminder.already_complete".to_string(),
791+
DictionaryMessage::new("The reminder '#{reminder_id}' has already been completed."),
792+
);
789793
dict.messages.insert(
790794
"reminder.show_with_content".to_string(),
791795
DictionaryMessage::new("⏰ Reminder <@{user}>: \n\n{content} !"),

crates/rustmail/src/i18n/language/fr.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -822,6 +822,10 @@ pub fn load_french_messages(dict: &mut ErrorDictionary) {
822822
"reminder.show_without_content_roles".to_string(),
823823
DictionaryMessage::new("⏰ Rappel pour {roles} !"),
824824
);
825+
dict.messages.insert(
826+
"reminder.already_complete".to_string(),
827+
DictionaryMessage::new("Le rappel **#{reminder_id}** a déjà été complété."),
828+
);
825829
dict.messages.insert(
826830
"slash_command.add_reminder_command_description".to_string(),
827831
DictionaryMessage::new("Ajouter un rappel pour vous-même"),

0 commit comments

Comments
 (0)