fix: display children as paused when pausing parent

This commit is contained in:
Peace 2024-10-14 23:04:07 +02:00
parent b02b21299b
commit d336d09d78
No known key found for this signature in database
GPG key ID: 0EF6B46E172B739F
3 changed files with 22 additions and 14 deletions

View file

@ -727,7 +727,7 @@ let needSetup = false;
await updateMonitorNotification(bean.id, notificationIDList);
await server.sendUpdateMonitorIntoList(socket, bean.id);
await server.sendUpdateMonitorsIntoList(socket, bean.id);
if (monitor.active !== false) {
await startMonitor(socket.userID, bean.id);
@ -884,7 +884,7 @@ let needSetup = false;
await restartMonitor(socket.userID, bean.id);
}
await server.sendUpdateMonitorIntoList(socket, bean.id);
await server.sendUpdateMonitorsIntoList(socket, bean.id);
callback({
ok: true,
@ -985,7 +985,9 @@ let needSetup = false;
try {
checkLogin(socket);
await startMonitor(socket.userID, monitorID);
await server.sendUpdateMonitorIntoList(socket, monitorID);
const childrenIDs = await Monitor.getAllChildrenIDs(monitorID);
await server.sendUpdateMonitorsIntoList(socket, [ monitorID, ...childrenIDs ]);
callback({
ok: true,
@ -1005,7 +1007,9 @@ let needSetup = false;
try {
checkLogin(socket);
await pauseMonitor(socket.userID, monitorID);
await server.sendUpdateMonitorIntoList(socket, monitorID);
const childrenIDs = await Monitor.getAllChildrenIDs(monitorID);
await server.sendUpdateMonitorsIntoList(socket, [ monitorID, ...childrenIDs ]);
callback({
ok: true,

View file

@ -208,12 +208,16 @@ class UptimeKumaServer {
/**
* Update Monitor into list
* @param {Socket} socket Socket to send list on
* @param {number} monitorID update or deleted monitor id
* @param {number | number[]} monitorIDs update or deleted monitor ids
* @returns {Promise<void>}
*/
async sendUpdateMonitorIntoList(socket, monitorID) {
let list = await this.getMonitorJSONList(socket.userID, monitorID);
this.io.to(socket.userID).emit("updateMonitorIntoList", list);
async sendUpdateMonitorsIntoList(socket, monitorIDs) {
if (!Array.isArray(monitorIDs)) {
monitorIDs = [ monitorIDs ];
}
let list = await this.getMonitorJSONList(socket.userID, monitorIDs);
this.io.to(socket.userID).emit("updateMonitorsIntoList", list);
}
/**
@ -229,19 +233,19 @@ class UptimeKumaServer {
/**
* Get a list of monitors for the given user.
* @param {string} userID - The ID of the user to get monitors for.
* @param {number} monitorID - The ID of monitor for.
* @param {number[]} monitorIDs - The IDs of monitors for.
* @returns {Promise<object>} A promise that resolves to an object with monitor IDs as keys and monitor objects as values.
*
* Generated by Trelent
*/
async getMonitorJSONList(userID, monitorID = null) {
async getMonitorJSONList(userID, monitorIDs = null) {
let query = " user_id = ? ";
let queryParams = [ userID ];
if (monitorID) {
query += "AND id = ? ";
queryParams.push(monitorID);
if (monitorIDs) {
query += `AND id IN (${monitorIDs.map((_) => "?").join(",")}) `;
queryParams.push(...monitorIDs);
}
let monitorList = await R.find("monitor", query + "ORDER BY weight DESC, name", queryParams);

View file

@ -145,7 +145,7 @@ export default {
this.monitorList = data;
});
socket.on("updateMonitorIntoList", (data) => {
socket.on("updateMonitorsIntoList", (data) => {
this.assignMonitorUrlParser(data);
Object.entries(data).forEach(([ monitorID, updatedMonitor ]) => {
this.monitorList[monitorID] = updatedMonitor;