wechaty-puppet-padplus
Version:
Puppet Padplus for Wechaty
101 lines • 3.58 kB
JavaScript
"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