UNPKG

@stackend/api

Version:

JS bindings to api.stackend.com

175 lines 6.48 kB
"use strict"; 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