UNPKG

sdg

Version:

pomelo ts

100 lines 6.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const lodash_1 = tslib_1.__importDefault(require("lodash")); const channelUtil_1 = require("../../../util/channelUtil"); const constants = tslib_1.__importStar(require("../../../util/constants")); const { INIT, DESTROYED } = constants.STATE; class Channel { constructor(name, channelService) { this.channelService = channelService; this.userAmount = 0; this.name = name; this.groups = {}; this.records = {}; this.state = INIT; } /** * 用户加入channel * @param uid * @param frontendId */ async add(uid, frontendId) { if (this.state > INIT) return false; const res = channelUtil_1.add(uid, frontendId, this.groups); if (res) { this.records[uid] = { uid, frontendId }; this.userAmount++; await channelUtil_1.addToStore(this.channelService, channelUtil_1.genKey(this.channelService, this.name), channelUtil_1.genValue(frontendId, uid)); } return res; } /** * 退出channel * @param uid * @param frontendId */ async leave(uid, frontendId) { if (!uid || !frontendId) return false; const res = channelUtil_1.leave(uid, frontendId, this.groups); if (res) { delete this.records[uid]; this.userAmount--; await channelUtil_1.removeFromStore(this.channelService, channelUtil_1.genKey(this.channelService, this.name), channelUtil_1.genValue(frontendId, uid)); } if (this.userAmount < 0) this.userAmount = 0; if (this.groups[frontendId] && this.groups[frontendId].length === 0) delete this.groups[frontendId]; return res; } getUserAmount() { return this.userAmount; } /** * Get channel members. * @return {Array} channel member uid list */ getMembers() { const arr = []; lodash_1.default.forOwn(this.groups, group => { arr.push(...group); }); return arr; } /** * Get Member info. * * @param {String} uid user id * @return {Object} member info */ getMember(uid) { return this.records[uid]; } /** * Remove member by uid * @param uid member to removed */ async removeMember(uid) { const member = this.getMember(uid); if (!member) return false; return this.leave(member.uid, member.frontendId); } /** * 给当前channel所有用户发消息 * @param route * @param msg */ pushMessage(route, msg) { this.channelService.sendMessageByGroup(route, msg, this.groups); } async destroy() { this.state = DESTROYED; await this.channelService.destroyChannel(this.name); } } exports.default = Channel; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vc2VydmljZS9jaGFubmVsL2NoYW5uZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNERBQXVCO0FBSXZCLDJEQUFzRztBQUN0RywyRUFBcUQ7QUFFckQsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO0FBRTVDLE1BQXFCLE9BQU87SUFRMUIsWUFBWSxJQUFZLEVBQVUsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBSHhELGVBQVUsR0FBRyxDQUFDLENBQUM7UUFJckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQVEsRUFBRSxVQUF1QjtRQUNoRCxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRXBDLE1BQU0sR0FBRyxHQUFHLGlCQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFOUMsSUFBSSxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixNQUFNLHdCQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxvQkFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLHNC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