From 6ae279c7f387ffe79a9341eaa9c11e9257d2989f Mon Sep 17 00:00:00 2001
From: Domenic Horner <domenic@tgxn.net>
Date: Sat, 4 Sep 2021 11:06:06 +0800
Subject: [PATCH] Move title generation to notification class

---
 server/model/monitor.js | 11 +----------
 server/notification.js  | 14 +++++++++++++-
 server/server.js        |  2 +-
 3 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/server/model/monitor.js b/server/model/monitor.js
index 19f21d924..126d59b1e 100644
--- a/server/model/monitor.js
+++ b/server/model/monitor.js
@@ -270,18 +270,9 @@ class Monitor extends BeanModel {
                         this.id,
                     ])
 
-                    let text;
-                    if (bean.status === UP) {
-                        text = "✅ Up"
-                    } else {
-                        text = "🔴 Down"
-                    }
-
-                    let msg = `[${this.name}] [${text}] ${bean.msg}`;
-
                     for (let notification of notificationList) {
                         try {
-                            await Notification.send(JSON.parse(notification.config), msg, await this.toJSON(), bean.toJSON())
+                            await Notification.send(JSON.parse(notification.config), this.name, await this.toJSON(), bean.toJSON())
                         } catch (e) {
                             console.error("Cannot send notification to " + notification.name);
                             console.log(e);
diff --git a/server/notification.js b/server/notification.js
index b9eba5a01..42c4627d8 100644
--- a/server/notification.js
+++ b/server/notification.js
@@ -15,9 +15,21 @@ class Notification {
      * @returns {Promise<string>} Successful msg
      * Throw Error with fail msg
      */
-    static async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
+    static async send(notification, monitorName = null, monitorJSON = null, heartbeatJSON = null) {
         let okMsg = "Sent Successfully. ";
 
+        let msg = `[${notification.name}] Testing`;
+        // heartbeatJSON is only defined if we're not testing
+        if(heartbeatJSON) {
+            let text;
+            if (heartbeatJSON["status"] === 1) {
+                text = "✅ Up"
+            } else {
+                text = "🔴 Down"
+            }
+            msg = `[${monitorName}] [${text}] ${heartbeatJSON["msg"]}`;
+        }
+
         if (notification.type === "telegram") {
             try {
                 await axios.get(`https://api.telegram.org/bot${notification.telegramBotToken}/sendMessage`, {
diff --git a/server/server.js b/server/server.js
index 39191de79..8f4516dc0 100644
--- a/server/server.js
+++ b/server/server.js
@@ -552,7 +552,7 @@ let indexHTML = fs.readFileSync("./dist/index.html").toString();
             try {
                 checkLogin(socket)
 
-                let msg = await Notification.send(notification, notification.name + " Testing")
+                let msg = await Notification.send(notification)
 
                 callback({
                     ok: true,