Files
ironmount/app/server/utils/shoutrrr.ts
Nico 6c30e7e357 Feat/notifications alerts (#52)
* feat: notifications backend & creation

* feat: assign notification to backup schedule

* refactor: status dot one component

* chore(notification-details): remove refetchInterval
2025-11-22 14:58:21 +01:00

44 lines
1.0 KiB
TypeScript

import { safeSpawn } from "./spawn";
import { logger } from "./logger";
import { toMessage } from "./errors";
export interface SendNotificationParams {
shoutrrrUrl: string;
title: string;
body: string;
}
export async function sendNotification(params: SendNotificationParams) {
const { shoutrrrUrl, title, body } = params;
try {
const args = ["send", "--url", shoutrrrUrl, "--title", title, "--message", body];
logger.debug(`Sending notification via Shoutrrr: ${title}`);
const result = await safeSpawn({
command: "shoutrrr",
args,
});
if (result.exitCode === 0) {
logger.debug(`Notification sent successfully: ${title}`);
return { success: true };
}
const errorMessage = result.stderr || result.stdout || "Unknown error";
logger.error(`Failed to send notification: ${errorMessage}`);
return {
success: false,
error: errorMessage,
};
} catch (error) {
const errorMessage = toMessage(error);
logger.error(`Error sending notification: ${errorMessage}`);
return {
success: false,
error: errorMessage,
};
}
}