UNPKG

wechaty-redux

Version:

Wechaty Redux Plugin Powered By Ducks

63 lines 2.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * Wechaty Open Source Software - https://github.com/wechaty * * @copyright 2016 Huan LI (李卓桓) <https://github.com/huan>, and * Wechaty Contributors <https://github.com/wechaty>. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ const redux_1 = require("redux"); const redux_observable_1 = require("redux-observable"); const wechaty_1 = require("wechaty"); const mod_js_1 = require("../src/mod.js"); // 'wechaty-redux' async function main() { /** * 1. Configure Store with RxJS Epic Middleware for Wechaty Ducks API */ const epicMiddleware = (0, redux_observable_1.createEpicMiddleware)(); const origStore = (0, redux_1.createStore)(mod_js_1.Duck.default, (0, redux_1.applyMiddleware)(epicMiddleware)); const store = { ...origStore, dispatch: (action) => { console.info('action:', action); return origStore.dispatch(action); }, }; const rootEpic = (0, redux_observable_1.combineEpics)(...Object.values(mod_js_1.Duck.epics)); epicMiddleware.run(rootEpic); /** * 2. Instantiate Wechaty and Install Redux Plugin */ const bot = wechaty_1.WechatyBuilder.build({ puppet: 'wechaty-puppet-mock' }); bot.use((0, mod_js_1.WechatyRedux)({ store, })); /** * 3. Using Redux Store with Wechaty Ducks API! */ store.subscribe(() => console.info(store.getState())); await bot.start(); // store.dispatch(Duck.actions.dingCommand(bot.puppet.id, 'dispatch a ding action')) // The above code 👆 is exactly do the same thing with the following code 👇 : // Duck.operations.ding(store.dispatch)(bot.puppet.id, 'call ding from operations') // await new Promise(setImmediate) await new Promise(resolve => setTimeout(resolve, 1)); await bot.stop(); console.info('Vanilla Redux Example finished.'); } main() .catch(console.error); //# sourceMappingURL=vanilla-redux.js.map