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
- Building bots with Redux
- BotBuilder v3 Node.js bot with Redux state management
- 🐺 Declarative development for state driven dynamic prompt flow
- Botbuilder Redux Middleware
- Botbuilder Redux Common Package
- Redux DevTools
- Remote Redux DevTools
- Using Redux DevTools in production
- Video - Getting Started with Redux Dev Tools
- Dan Abramov - Live React: Hot Reloading with Time Travel at react-europe 2015
- Dan Abramov - The Redux Journey at react-europe 2016
- Debugging javascript applications in production - Mihail Diordiev
- Refactoring all events with breaking changes for better CQRS Wechaty support.
- Refactoring the events name convension: from
eventName
toEVENT_NAME
Release v1.0 of Wechaty Redux (thanks @mukaiu)
- Upgrade RxJS version from 6 to 7.1
- ES Modules support
Initial version. Requires [email protected]
or above versions.
WechatyRedux
Plugin is ready to use.- API follows the Ducks specification.
Decide to build a Redux Plugin for Wechaty.
Related Projects:
- A library that exposes matrix-js-sdk state via Redux
- A library for managing network state in Redux
- How to setup Redux for a REST api
- Redux middleware for calling an API
Huan LI (李卓桓) [email protected]
- Code & Docs © 2020 Huan (李卓桓) <[email protected]>
- Code released under the Apache-2.0 License
- Docs released under Creative Commons