@stackend/api
Version:
JS bindings to api.stackend.com
175 lines • 6.48 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.setModStatuses = exports.setModStatus = exports.search = exports.OrderBy = exports.isVisible = exports.combineContentFilterResults = exports.getMostRestrictiveModStatus = exports.getMostRestrictiveModerationStatus = void 0;
var api_1 = require("../api");
var ModerationStatus_1 = require("../api/ModerationStatus");
var Order_1 = require("../api/Order");
var ModerationVisibility_1 = __importDefault(require("../api/ModerationVisibility"));
/**
* Get the most restrictive ModerationStatus status
* @param m1
* @param m2
* @returns {string}
*/
function getMostRestrictiveModerationStatus(m1, m2) {
if (m1 === ModerationStatus_1.ModerationStatus.NOT_PASSED || m2 === ModerationStatus_1.ModerationStatus.NOT_PASSED) {
return ModerationStatus_1.ModerationStatus.NOT_PASSED;
}
if (m1 === ModerationStatus_1.ModerationStatus.PRE || m2 === ModerationStatus_1.ModerationStatus.PRE) {
return ModerationStatus_1.ModerationStatus.PRE;
}
if (m1 === ModerationStatus_1.ModerationStatus.POST || m2 === ModerationStatus_1.ModerationStatus.POST) {
return ModerationStatus_1.ModerationStatus.POST;
}
if (m1 === ModerationStatus_1.ModerationStatus.NONE || m2 === ModerationStatus_1.ModerationStatus.NONE) {
return ModerationStatus_1.ModerationStatus.NONE;
}
return ModerationStatus_1.ModerationStatus.PASSED;
}
exports.getMostRestrictiveModerationStatus = getMostRestrictiveModerationStatus;
/**
* Get the most restrictive mod status
* @param m1
* @param m2
* @returns {number}
*/
function getMostRestrictiveModStatus(m1, m2) {
if (m1 === 2 || m2 === 2) {
return 2;
}
if (m1 === 4 || m2 === 4) {
return 4;
}
if (m1 === 5 || m2 === 5) {
return 5;
}
if (m1 === 0 || m2 === 0) {
return 0;
}
if (m1 === 1 || m2 === 1) {
return 1;
}
return 0;
}
exports.getMostRestrictiveModStatus = getMostRestrictiveModStatus;
/**
* Combine all content filter results to a single result
* @param results
*/
function combineContentFilterResults(results) {
var r = {
filterName: '',
modStatus: ModerationStatus_1.ModerationStatusCode[ModerationStatus_1.ModerationStatus.NONE],
keyValues: {},
labels: []
};
if (!results || results.length === 0) {
return r;
}
results.forEach(function (x) {
r.modStatus = getMostRestrictiveModStatus(x.modStatus, r.modStatus);
if (x.keyValues) {
Object.keys(x.keyValues).map(function (key) {
var v = x.keyValues[key];
var n = r.keyValues[key];
if (!n || parseInt(v + '') > parseInt(n + '')) {
r.keyValues[key] = v;
}
});
}
// TODO: Labels ignored
});
return r;
}
exports.combineContentFilterResults = combineContentFilterResults;
/**
* Check if a an object is visible
* @param object
* @returns {boolean}
*/
function isVisible(object) {
if (!object) {
return false;
}
var o = object;
if (typeof o.modStatus === 'undefined') {
return true;
}
switch (o.modStatus) {
case ModerationStatus_1.ModerationStatus.NONE:
case ModerationStatus_1.ModerationStatus.PASSED:
return true;
case ModerationStatus_1.ModerationStatus.NOT_PASSED:
case ModerationStatus_1.ModerationStatus.PRE:
return false;
case ModerationStatus_1.ModerationStatus.POST:
if (o.expiresDate) {
var now = new Date();
return o.expiresDate > now.getTime();
}
else if (o.ttl && o.createdDate) {
var now = new Date();
var expires = o.createdDate + o.ttl * 60 * 1000;
return expires > now.getTime();
}
return false;
}
return true;
}
exports.isVisible = isVisible;
var OrderBy;
(function (OrderBy) {
OrderBy["SCORE"] = "SCORE";
OrderBy["CREATED_DATE"] = "CREATED_DATE";
OrderBy["VIEWS"] = "VIEWS";
OrderBy["VOTE_AVERAGE"] = "VOTE_AVERAGE";
})(OrderBy = exports.OrderBy || (exports.OrderBy = {}));
/**
* Search for objects to moderate.
*
* This search can find all objects in the system. The default is to only show objects that requires moderation.
*
* @param q {String} Search expression
* @param p {number} Page number
* @param type {String} all|article|comment|group|...
* @param groupIds {number}
* @param moderationVisibility {moderationVisibility} Default: ModerationVisibility.MODERATION_PENDING
* @param orderBy {orderBy} Default: CREATED_DATE
* @param order {order} Default: ASCENDING
* @param communityPermalink type {String}
* @return {Promise}
*/
function search(_a) {
var q = _a.q, _b = _a.type, type = _b === void 0 ? 'all' : _b, author = _a.author, groupId = _a.groupId, _c = _a.moderationVisibility, moderationVisibility = _c === void 0 ? ModerationVisibility_1.default.MODERATION_PENDING : _c, _d = _a.orderBy, orderBy = _d === void 0 ? OrderBy.CREATED_DATE : _d, _e = _a.order, order = _e === void 0 ? Order_1.Order.ASCENDING : _e, communityPermalink = _a.communityPermalink, p = _a.p;
!!arguments[0].communityPermalink && delete arguments[0].communityPermalink;
return (0, api_1.getJson)({ url: '/admin/search', parameters: arguments, community: communityPermalink });
}
exports.search = search;
/**
* Change moderation status for a single object.
*
* @param {String} obfuscatedReference
* @param {Boolean} approved
* @return {Promise}
*/
function setModStatus(_a) {
var obfuscatedReference = _a.obfuscatedReference, approved = _a.approved;
return (0, api_1.post)({ url: '/admin/moderate', parameters: arguments });
}
exports.setModStatus = setModStatus;
/**
* Change moderation status for multiple objects.
*
* @param obfuscatedReferences {Array} A list of obfuscatedReference
* @param approved {Boolean}
* @return {Promise}
*/
function setModStatuses(_a) {
var obfuscatedReferences = _a.obfuscatedReferences, approved = _a.approved;
return (0, api_1.post)({ url: '/admin/moderate-multiple', parameters: arguments });
}
exports.setModStatuses = setModStatuses;
//# sourceMappingURL=index.js.map