UNPKG

@ginstone/nga-api

Version:

157 lines (156 loc) 5.46 kB
"use strict"; 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;