UNPKG

wechaty-redux

Version:

Wechaty Redux Plugin Powered By Ducks

89 lines 4.02 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.wechatyRef = exports.decreaseWechatyReferenceInRegistry = exports.increaseWechatyReferenceInRegistry = exports.registerWechatyInRegistry = void 0; const wechaty_puppet_1 = require("wechaty-puppet"); const duck = __importStar(require("../duck/mod.js")); const wechatyRef = new Map(); exports.wechatyRef = wechatyRef; const increaseWechatyReferenceInRegistry = (registry) => (wechaty) => { const counter = wechatyRef.get(wechaty.id) ?? 0; const incCounter = counter + 1; wechaty_puppet_1.log.verbose('WechatyRedux', 'increaseWechatyReferenceInRegistry() counter: %d', incCounter); if (incCounter === 1) { wechaty_puppet_1.log.verbose('WechatyRedux', 'increaseWechatyReferenceInRegistry() register wechaty id: %s', wechaty.id); registry.set(wechaty.id, wechaty); } wechatyRef.set(wechaty.id, incCounter); return incCounter; }; exports.increaseWechatyReferenceInRegistry = increaseWechatyReferenceInRegistry; const decreaseWechatyReferenceInRegistry = (registry) => (wechaty) => { const counter = wechatyRef.get(wechaty.id) ?? 0; const decCounter = counter - 1; wechaty_puppet_1.log.verbose('WechatyRedux', 'decreaseWechatyReferenceInRegistry() counter: %d', decCounter); wechatyRef.set(wechaty.id, decCounter); if (decCounter <= 0) { wechaty_puppet_1.log.verbose('WechatyRedux', 'decreaseWechatyReferenceInRegistry() deregister wechaty id: %s', wechaty.id); registry.delete(wechaty.id); wechatyRef.delete(wechaty.id); } return decCounter; }; exports.decreaseWechatyReferenceInRegistry = decreaseWechatyReferenceInRegistry; /** * Wechaty automatic registration RxJS operator * * - Creating new operators from scratch * @see https://rxjs.dev/guide/operators * */ const registerWechatyInRegistry = (registry) => (wechaty, store) => { wechaty_puppet_1.log.verbose('WechatyRedux', 'registerWechatyInRegistry() wechaty id: %s', wechaty.id); const counter = increaseWechatyReferenceInRegistry(registry)(wechaty); /** * Emit `RegisterWechaty` action when first time subscribe to the wechaty */ if (counter === 1) { store.dispatch(duck.actions.REGISTER_WECHATY_COMMAND(wechaty.id)); } /** * Return the teardown logic. * * This will be invoked when the result errors, completes, or is unsubscribed. */ return () => { wechaty_puppet_1.log.verbose('WechatyRedux', 'registerWechatyInRegistry() dispose wechaty id: %s', wechaty.id); const counter = decreaseWechatyReferenceInRegistry(registry)(wechaty); if (counter <= 0) { /** * Cleanup wechaty in registry with reference counter */ store.dispatch(duck.actions.DEREGISTER_WECHATY_COMMAND(wechaty.id)); } }; }; exports.registerWechatyInRegistry = registerWechatyInRegistry; //# sourceMappingURL=register-wechaty.js.map