content/hifi-content/seth/pr-monitor/pr-monitor-es.js
2022-02-14 02:04:11 +01:00

88 lines
2.8 KiB
JavaScript

"use strict";
/* global Script, Entities */
(function() {
var self = this;
var prUtils = Script.require(Script.resolvePath("pr-utils.js?v=2"));
var dataCache = {};
self.updateVisuals = function () {
if (!self.response) {
// error state
Entities.editEntity(self.entityID, { color: { red: 255, green: 165, blue: 0 }});
return;
}
if (self.response.mergeable) {
self.status = "good";
} else {
self.status = "bad";
}
if (self.response.labelNames.indexOf("DO NOT MERGE") >= 0 ||
self.response.labelNames.indexOf("QA Rejected :sob:") >= 0 ||
self.response.labelNames.indexOf("Development Rejected") >= 0) {
self.status = "bad";
}
for (var i = 0; i < self.response.statuses.length; i++) {
var status = self.response.statuses[i];
if (status.state == "pending") {
self.status = "pending";
}
}
if (self.response.state == "closed") {
self.status = "closed";
}
if (self.response.state == "merged") {
self.status = "merged";
}
if (self.previousStatus != self.status) {
if (self.status == "good") {
Entities.editEntity(self.entityID, { color: { red: 0, green: 255, blue: 0 }});
} else if (self.status == "pending") {
Entities.editEntity(self.entityID, { color: { red: 255, green: 255, blue: 0 }});
} else if (self.status == "closed") {
Entities.editEntity(self.entityID, { color: { red: 120, green: 120, blue: 120 }});
} else if (self.status == "merged") {
Entities.editEntity(self.entityID, { color: { red: 250, green: 250, blue: 250 }});
} else {
Entities.editEntity(self.entityID, { color: { red: 255, green: 0, blue: 0 }});
}
self.previousStatus = self.status;
}
};
self.updateStatus = function () {
try {
var userData = Entities.getEntityProperties(self.entityID, "userData").userData;
var data = JSON.parse(userData);
self.prNumber = data.prNumber;
prUtils.getPRDetails(self.prNumber, dataCache, function (response) {
self.response = response;
self.updateVisuals();
});
} catch (err) {
print("pr-monitor-es.js -- updateStatus failed: " + JSON.stringify(err));
}
};
self.preload = function (entityID) {
self.entityID = entityID;
Script.setInterval(function () {
self.updateStatus();
// }, 180000); // 180 second
}, 20000); // 20 second
self.updateStatus();
};
});