import { logger, safeExec, sanitizeSensitiveData } from "@zerobyte/core/node";
import { toMessage } from "./errors";

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 safeExec({ command: "shoutrrr", args });

		if (result.exitCode === 0) {
			logger.debug(`Notification sent successfully: ${title}`);
			return { success: true };
		}

		const errorMessage = sanitizeSensitiveData(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,
		};
	}
}
