@instructure/redux-service-middleware

Service middleware for redux

Usage no npm install needed!

<script type="module">
  import instructureReduxServiceMiddleware from 'https://cdn.skypack.dev/@instructure/redux-service-middleware';
</script>

README

@instructure/redux-service-middleware

npm MIT License

Simple redux middleware for registering service objects.

  1. A service is an object or class instance:
const myService = {
  doStuff: (arg1, arg2) => result
}
class MyOtherService {
  doOtherStuff (...args) {
    return result
  }
}
  1. While creating your store, register your services as key/value pairs with the service middleware constructor:
import { applyMiddleware } from 'redux'
import createServiceMiddleware from '@instructure/redux-service-middleware'

applyMiddleware(
  createServiceMiddleware({
    myKey: myService,
    myOtherKey: new MyOtherService()
  })
)
  1. In your action creator, dispatch an action with the following shape:
import { CALL_SERVICE } from '@instructure/redux-service-middleware'

const actionCreator = () => ({
  type: CALL_SERVICE,
  payload: {
    service: 'myKey',
    method: 'doStuff',
    args: [arg1, arg2]
  }
})

Calls to dispatch with an action of this form will return a promise resolving to the result of calling myService.methodName(arg1, arg2).

License

This project is is released under the MIT license.