cantierecreativo/redux-bees

Using redux-bees with before middleware or redux-saga

Opened this issue · 1 comments

I've reached a number of dead ends implementing redux-bees and I'm struggling to find a way forward due to two core issues. First, let me explain my requirements:

  1. I want to consume a JSON-API
  2. My API uses OAuth 2 for authentication
  3. I want all the good things from redux-bees like caching, writing data to the store etc.

Unfortunately, it seems thus far that there are a number of inherent issues that prevent me from having this. Most notably being that I may need to refresh a token before the API is requested. To avoid this happening more than once for concurrent requests I've implemented redux-saga to solve

@query() doesn't dispatch any action before the fetch is made

If it did I could:

  1. Watch for the action in redux-saga and defer it until I had a valid token.
  2. Watch for the action in a middleware and stop it if the token needed refreshing.

If I don't use @query I lose all of the good aspects of redux-bees

If I instead:

  1. Dispatch an action like GET_AUTHENTICATED_USER from my component
  2. Watch for that action in redux-saga
  3. Ensure I have a valid token
  4. Call the API directly api.getAuthenticatedUser()

The request works fine, I get back the data but no further dispatches are made that put the data into the store.

I'm at a little bit of a loss over how to proceed without dropping this library. Perhaps I'm missing something. I'd very much appreciate it if @stefanoverna could provide some further insights into the issues I've been facing.