@ginstone/nga-api
Version:
157 lines (156 loc) • 5.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseStatus = exports.replyStatusItems = exports.ReplyStatus = exports.ReplyStatusItem = exports.ReplyStatusEnum = void 0;
const StrUtils_1 = require("../utils/StrUtils");
/**
* 回复状态枚举
*/
var ReplyStatusEnum;
(function (ReplyStatusEnum) {
/**
* 评论
*/
ReplyStatusEnum[ReplyStatusEnum["IS_COMMENT"] = 0] = "IS_COMMENT";
/**
* 隐藏
*/
ReplyStatusEnum[ReplyStatusEnum["HIDDEN"] = 1] = "HIDDEN";
/**
* 有评论
*/
ReplyStatusEnum[ReplyStatusEnum["HAS_COMMENT"] = 2] = "HAS_COMMENT";
/**
* 延时
*/
ReplyStatusEnum[ReplyStatusEnum["DELAY_ACTION"] = 3] = "DELAY_ACTION";
/**
* 更多
*/
ReplyStatusEnum[ReplyStatusEnum["EXTRA_USER_INFO"] = 4] = "EXTRA_USER_INFO";
/**
* 被标记
*/
ReplyStatusEnum[ReplyStatusEnum["LOG"] = 5] = "LOG";
/**
* 不再提示
*/
ReplyStatusEnum[ReplyStatusEnum["NO_HINT"] = 6] = "NO_HINT";
/**
* 编辑
*/
ReplyStatusEnum[ReplyStatusEnum["FREE_EDIT"] = 7] = "FREE_EDIT";
/**
* 自回
*/
ReplyStatusEnum[ReplyStatusEnum["SELF_REPLY"] = 8] = "SELF_REPLY";
/**
* 审核中
*/
ReplyStatusEnum[ReplyStatusEnum["VERIFYING"] = 9] = "VERIFYING";
/**
* 锁定
*/
ReplyStatusEnum[ReplyStatusEnum["LOCKED"] = 10] = "LOCKED";
/**
* 处罚标记
*/
ReplyStatusEnum[ReplyStatusEnum["HIDE_TITLE"] = 11] = "HIDE_TITLE";
/**
* 翻译
*/
ReplyStatusEnum[ReplyStatusEnum["HAS_AUTO_TRANSLATE"] = 12] = "HAS_AUTO_TRANSLATE";
/**
* 附件
*/
ReplyStatusEnum[ReplyStatusEnum["HAS_UPLOAD"] = 13] = "HAS_UPLOAD";
/**
* 合集
*/
ReplyStatusEnum[ReplyStatusEnum["IS_SET"] = 15] = "IS_SET";
/**
* 合集主题
*/
ReplyStatusEnum[ReplyStatusEnum["IS_SET_THREAD"] = 16] = "IS_SET_THREAD";
/**
* 合并版面
*/
ReplyStatusEnum[ReplyStatusEnum["UNION_HIDDEN"] = 17] = "UNION_HIDDEN";
/**
* 审核不通过
*/
ReplyStatusEnum[ReplyStatusEnum["NOT_VERIFIED"] = 26] = "NOT_VERIFIED";
/**
* 未知
*/
ReplyStatusEnum[ReplyStatusEnum["UNKNOWN"] = 27] = "UNKNOWN";
})(ReplyStatusEnum = exports.ReplyStatusEnum || (exports.ReplyStatusEnum = {}));
class ReplyStatusItem {
constructor(position, name, description) {
this.position = position;
this.name = name;
this.description = description;
}
}
exports.ReplyStatusItem = ReplyStatusItem;
class ReplyStatus {
constructor(id, status) {
this.id = id;
this.status = status;
}
// 是否存在某个状态
hasStatus(status) {
return this.id.filter(i => i === status).length > 0;
}
// 添加状态
addStatus(status) {
this.id.push(status);
this.status.push(...exports.replyStatusItems.filter(i => i.position === status));
}
// 移除状态
removeStatus(status) {
this.id = this.id.filter(i => i !== status);
this.status = this.status.filter(i => i.position !== status);
}
}
exports.ReplyStatus = ReplyStatus;
/**
* 状态字典
*/
exports.replyStatusItems = [
new ReplyStatusItem(ReplyStatusEnum.IS_COMMENT, "评论", "这是一条评论"),
new ReplyStatusItem(ReplyStatusEnum.HIDDEN, "隐藏", "被隐藏"),
new ReplyStatusItem(ReplyStatusEnum.HAS_COMMENT, "有评论", "有评论"),
new ReplyStatusItem(ReplyStatusEnum.DELAY_ACTION, "延时", "是否有延时操作"),
new ReplyStatusItem(ReplyStatusEnum.EXTRA_USER_INFO, "更多", "更多用户信息"),
new ReplyStatusItem(ReplyStatusEnum.LOG, "被标记", "是否被标记了"),
new ReplyStatusItem(ReplyStatusEnum.NO_HINT, "不再提示", "不再提醒回复"),
new ReplyStatusItem(ReplyStatusEnum.FREE_EDIT, "编辑", "编辑时间不受限制"),
new ReplyStatusItem(ReplyStatusEnum.SELF_REPLY, "自回", "主题只能作者自己回复"),
new ReplyStatusItem(ReplyStatusEnum.VERIFYING, "审核中", "正在人工审核.."),
new ReplyStatusItem(ReplyStatusEnum.LOCKED, "锁定", "不允许编辑和回复"),
new ReplyStatusItem(ReplyStatusEnum.HIDE_TITLE, "处罚标记", "是否显示被处罚的标记"),
new ReplyStatusItem(ReplyStatusEnum.HAS_AUTO_TRANSLATE, "翻译", "有可以自动翻译的内容"),
new ReplyStatusItem(ReplyStatusEnum.HAS_UPLOAD, "附件", "有上传文件"),
new ReplyStatusItem(ReplyStatusEnum.IS_SET, "合集", "这是一个合集入口"),
new ReplyStatusItem(ReplyStatusEnum.IS_SET_THREAD, "合集主题", "这是一个合集内主题"),
new ReplyStatusItem(ReplyStatusEnum.UNION_HIDDEN, "合并版面", "是否不在合并版面中显示"),
new ReplyStatusItem(ReplyStatusEnum.NOT_VERIFIED, "审核不通过", "经过了人工审核,且被判定为不通过"),
new ReplyStatusItem(ReplyStatusEnum.UNKNOWN, "未知", "未知状态"),
];
/**
* 解析type字段
* @param type 回复的type字段
*/
function parseStatus(type) {
if (!type) {
return undefined;
}
const s = (0, StrUtils_1.parseBit)(type);
const items = exports.replyStatusItems.filter(item => {
const i = item.position;
return s.length > i && s[i] === '1';
});
const id = items.map(i => i.position);
return new ReplyStatus(id, items);
}
exports.parseStatus = parseStatus;