UNPKG

wechaty-puppet-padplus

Version:
101 lines 3.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class CallbackPool { constructor() { this.poolMap = {}; this.contactRequestMap = {}; this.contactAliasMap = {}; this.roomTopicMap = {}; this.acceptFriendMap = {}; this.roomMemberMap = {}; } static get Instance() { if (!this._instance) { this._instance = new CallbackPool(); } return this._instance; } pushCallbackToPool(requestId, callback) { this.poolMap[requestId] = callback; } getCallback(requestId) { return this.poolMap[requestId]; } removeCallback(requestId) { delete this.poolMap[requestId]; } pushContactCallback(contactId, callback) { if (!this.contactRequestMap[contactId]) { this.contactRequestMap[contactId] = []; } this.contactRequestMap[contactId].push(callback); } resolveContactCallBack(contactId, data) { const callbacks = this.contactRequestMap[contactId] || []; callbacks.map(callback => callback(data)); this.resolveContactAliasCallback(contactId, data.remark); this.resolveAcceptFriendCallback(contactId); delete this.contactRequestMap[contactId]; } resolveRoomCallBack(roomId, data) { const callbacks = this.contactRequestMap[roomId] || []; callbacks.map(callback => callback(data)); this.resolveRoomTopicCallback(data.chatroomId, data.nickName); delete this.contactRequestMap[roomId]; } pushContactAliasCallback(contactId, alias, callback) { if (!this.contactAliasMap[contactId]) { this.contactAliasMap[contactId] = {}; } this.contactAliasMap[contactId][alias] = callback; } resolveContactAliasCallback(contactId, alias) { const callback = this.contactAliasMap[contactId] && this.contactAliasMap[contactId][alias]; if (callback) { callback(); delete this.contactAliasMap[contactId][alias]; } } pushRoomTopicCallback(roomId, topic, callback) { if (!this.roomTopicMap[roomId]) { this.roomTopicMap[roomId] = {}; } this.roomTopicMap[roomId][topic] = callback; } resolveRoomTopicCallback(roomId, topic) { const callback = this.roomTopicMap[roomId] && this.roomTopicMap[roomId][topic]; if (callback) { callback(); delete this.roomTopicMap[roomId][topic]; } } pushAcceptFriendCallback(contactId, callback) { if (!this.acceptFriendMap[contactId]) { this.acceptFriendMap[contactId] = []; } this.acceptFriendMap[contactId].push(callback); } resolveAcceptFriendCallback(contactId) { const callbacks = this.acceptFriendMap[contactId]; if (callbacks) { callbacks.map(cb => cb()); delete this.acceptFriendMap[contactId]; } } pushRoomMemberCallback(roomId, callback) { if (!this.roomMemberMap[roomId]) { this.roomMemberMap[roomId] = []; } this.roomMemberMap[roomId].push(callback); } resolveRoomMemberCallback(roomId, memberList) { const callbacks = this.roomMemberMap[roomId] && this.roomMemberMap[roomId]; if (callbacks) { callbacks.map(cb => cb(memberList)); delete this.roomMemberMap[roomId]; } } } exports.CallbackPool = CallbackPool; CallbackPool._instance = undefined; //# sourceMappingURL=callbackHelper.js.map