Wrap Wechaty with Redux Actions & Reducers for Easy State Management
Image Source: Managing your React state with Redux
Redux is a Predictable State Container for JS Apps
To be write...
See Ducks
npm install wechaty-redux
Vanilla Redux means using plain Redux without any additional libraries like Ducks.
import { createStore, applyMiddleware, } from 'redux' import { createEpicMiddleware, combineEpics, } from 'redux-observable' import { WechatyBuilder } from 'wechaty' import { WechatyRedux, Api, } from 'wechaty-redux' /** * 1. Configure Store with RxJS Epic Middleware for Wechaty Ducks API */ const epicMiddleware = createEpicMiddleware() const store = createStore( Api.default, applyMiddleware(epicMiddleware), ) const rootEpic = combineEpics(...Object.values(Api.epics)) epicMiddleware.run(rootEpic) /** * 2. Instanciate Wechaty and Install Redux Plugin */ const bot = WechatyBuilder.build({ puppet: 'wechaty-puppet-mock' }) bot.use(WechatyRedux({ store })) /** * 3. Using Redux Store with Wechaty Ducks API! */ store.subscribe(() => console.info(store.getState())) store.dispatch(Api.actions.ding(bot.puppet.id, 'dispatch a ding action')) // The above code 👆 is exactly do the same thing with the following code 👇 : Api.operations.ding(store.dispatch)(bot.puppet.id, 'call ding from operations')
import { WechatyBuilder } from 'wechaty' import { Ducks } from 'ducks' import { WechatyRedux, Api, } from 'wechaty-redux' /** * 1. Ducksify Wechaty Redux API */ const ducks = new Ducks({ wechaty: Api }) const store = ducks.configureStore() /** * 2. Instanciate Wechaty with Redux Plugin */ const bot = WechatyBuilder.build({ puppet: 'wechaty-puppet-mock' }) bot.use(WechatyRedux({ store })) /** * 3. Using Redux Store with Wechaty Ducks API! * (With the Power of Ducks / Ducksify) */ const wechatyDuck = ducks.ducksify('wechaty') store.subscribe(() => console.info(store.getState())) wechatyDuck.operations.ding(bot.puppet.id, 'Ducksify Style ding!')
See: api/actions.ts
See: api/operations.ts
See: api/index.ts
eventName
to EVENT_NAME
Release v1.0 of Wechaty Redux (thanks @mukaiu)
Initial version. Requires wechaty@0.40
or above versions.
WechatyRedux
Plugin is ready to use.Decide to build a Redux Plugin for Wechaty.
Related Projects: