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: