2.1.2 • Published 5 years ago

@home-app/api.module v2.1.2

Weekly downloads
-
License
MIT
Repository
github
Last release
5 years ago

Description

This module makes http requests and log every step of it into the store.
It has several statuses: Pending, Success, Error, Cancel. All of it except Pending has some data (result or errors).
Also each unique request has an id that also stored in the store (as a key of data).
A data structure is following:

{
  "pathToApiData": {
    "rId0": {
      "status": "PENDING"
    },
    "rId1": {
      "status": "SUCCESS",
      "data": "raw response data"
    },
    "rId2": {
      "status": "ERROR",
      "data": "raw error data"
    },
    "rId3": {
      "status": "CANCEL",
      "data": "raw cancel data"
    }
  }
} 

First of all

For correct work of the module it have to be done:

Next step - integrating into the store:

Reducer

You should to import the module into a reducer where you wanna store api data:

import { apiModule } from '@home-app/api.module';

And integrate it into reducers tree:

function someReducer(state = initialState, action) {
  return {
    modulePath: apiModule.integrator('modulePath')(state, action),
  };
}

Middleware

Also, you need to inject the middleware into the store handling cycle

import { middleware } from '@home-app/api.module';

Apply the middleware normally.

API reference

.fetch(url [, options][, adapters])

  • url: string
  • options: object
    -- method: method of the request
    -- body: data of the request
    -- headers: object with headers
  • adapters: function or array of functions

Returns request id that is a unique string for each unique request (two equal requests will get same id).

.getPromise(requestId)

Returns a promise for an active request.

.cancelRequest(requestId)

Cancel an active request.

.actions.clear(requestId)

Dispatch an action that makes a reducer to clear all data for a specified request id.

2.1.2

5 years ago

2.1.1

5 years ago

2.1.0

5 years ago

2.0.2

5 years ago

2.0.1

5 years ago

2.0.0

6 years ago

1.0.0

6 years ago