fix(notifications): update Mattermost notification handling

- Changed webhookUrl validation to ensure it is a valid URL.
- Updated input types for createMattermostNotification and updateMattermostNotification functions to use z.infer for better type inference.
- Refactored sendMattermostNotification to improve error handling and payload construction.
This commit is contained in:
Mauricio Siu
2026-03-24 12:39:38 -06:00
parent 58b9a0d3d0
commit d6056972f4
3 changed files with 22 additions and 22 deletions

View File

@@ -211,26 +211,26 @@ export const sendMattermostNotification = async (
connection: typeof mattermost.$inferInsert,
message: any,
) => {
try {
const payload = {
...message,
// Only include username if it's provided and not empty
...(message.username &&
message.username.trim() && { username: message.username }),
// Only include channel if it's provided and not empty
...(message.channel &&
message.channel.trim() && {
channel: `#${message.channel.replace("#", "")}`,
}),
};
const payload = {
...message,
// Only include username if it's provided and not empty
...(message.username?.trim() && { username: message.username }),
// Only include channel if it's provided and not empty
...(message.channel?.trim() && {
channel: `#${message.channel.replace("#", "")}`,
}),
};
await fetch(connection.webhookUrl, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
} catch (err) {
console.log(err);
const response = await fetch(connection.webhookUrl, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
if (!response.ok) {
throw new Error(
`Failed to send Mattermost notification: ${response.statusText}`,
);
}
};