diff --git a/.gitignore b/.gitignore index b11a79354..eeaabdbe7 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ dist dist-ssr *.local .idea +.history/ /data !/data/.gitkeep diff --git a/server/model/status_page.js b/server/model/status_page.js index e40b28f6f..237f3e59c 100644 --- a/server/model/status_page.js +++ b/server/model/status_page.js @@ -106,16 +106,10 @@ class StatusPage extends BeanModel { static async getStatusPageData(statusPage) { const config = await statusPage.toPublicJSON(); - // Incident - let incident = await R.findOne("incident", " pin = 1 AND active = 1 AND status_page_id = ? ", [ - statusPage.id, - ]); + // Incident List + const incidentList = await StatusPage.getIncidentList(statusPage.id); - if (incident) { - incident = incident.toPublicJSON(); - } - - let maintenanceList = await StatusPage.getMaintenanceList(statusPage.id); + const maintenanceList = await StatusPage.getMaintenanceList(statusPage.id); // Public Group List const publicGroupList = []; @@ -133,7 +127,7 @@ class StatusPage extends BeanModel { // Response return { config, - incident, + incidentList, publicGroupList, maintenanceList, }; @@ -329,6 +323,29 @@ class StatusPage extends BeanModel { return []; } } + + /** + * Get list of incidents + * @param {number} statusPageId ID of status page to get incidents for + * @returns {object} Object representing incidents sanitized for public + */ + static async getIncidentList(statusPageId) { + try { + const publicIncidentList = []; + let incidentList = await R.find("incident", " pin = 1 AND active = 1 AND status_page_id = ? ", [ + statusPageId, + ]); + + for (const incident of incidentList) { + publicIncidentList.push(await incident.toPublicJSON()); + } + + return publicIncidentList; + + } catch (error) { + return []; + } + } } module.exports = StatusPage; diff --git a/server/socket-handlers/status-page-socket-handler.js b/server/socket-handlers/status-page-socket-handler.js index 0804da15d..d42fc723b 100644 --- a/server/socket-handlers/status-page-socket-handler.js +++ b/server/socket-handlers/status-page-socket-handler.js @@ -26,9 +26,6 @@ module.exports.statusPageSocketHandler = (socket) => { throw new Error("slug is not found"); } - await R.exec("UPDATE incident SET pin = 0 WHERE status_page_id = ? ", [ - statusPageID - ]); let incidentBean; @@ -69,14 +66,15 @@ module.exports.statusPageSocketHandler = (socket) => { } }); - socket.on("unpinIncident", async (slug, callback) => { + socket.on("unpinIncident", async (slug, incident, callback) => { try { checkLogin(socket); let statusPageID = await StatusPage.slugToID(slug); - await R.exec("UPDATE incident SET pin = 0 WHERE pin = 1 AND status_page_id = ? ", [ - statusPageID + await R.exec("UPDATE incident SET pin = 0 WHERE pin = 1 AND status_page_id = ? AND id = ? ", [ + statusPageID, + incident.id ]); callback({ diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index 53d0781d7..8c14b161e 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -169,7 +169,7 @@
- @@ -177,62 +177,64 @@
-