Composing decorator for redux-storage to use different storage types
JavaScript
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
test
.babelrc
.eslintignore
.eslintrc
.gitignore
.travis.yml
LICENSE
README.md
package.json

README.md

redux-storage-decorator-engines

Build Status

Composing decorator for redux-storage to use different storage types like redux-storage-engine-localstorage or redux-storage-engine-sessionstorage including custom engines (i.e. to load information from cookies) in a single application.

Installation

npm install --save redux-storage-decorator-engines

Usage

Along with redux-storage-decorator-filter you can define different persistence policy for each part of a state. Simply create the stores as you normally would do and wrap them with the decorator.

import engines from 'redux-storage-decorator-engines';
import filter from 'redux-storage-decorator-filter';
import createLocalStorageEngine from 'redux-storage-engine-localstorage';
import createSessionStorageEngine from 'redux-storage-engine-sessionstorage';

const localStorageEngine = filter(createLocalStorageEngine('redux'), ['todos']);
const sessionStorageEngine = filter(createSessionStorageEngine('redux'), ['visibilityFilter']);

const storageEngine = engines([
  localStorageEngine,
  sessionStorageEngine
]);

To include information from a cookie in a redux state for later easy access simply provide a custom storage engine:

import Cookies from 'js-cookie';

const cookieStorage = {
  load() {
    const state = {
      cookie: Cookies.get('cookie')
    };
    return Promise.resolve(state);
  },
  save() {
    return Promise.resolve();
  }
};

const storageEngine = engines([
  localStorageEngine,
  sessionStorageEngine,
  cookieStorage
]);

NOTE: If the same state key is loaded from more than one storage engine an application state upon load is not deterministic. A final state depends on the actual order of the loads. In such a case a warning message is emitted on non-production environments (an environment is considered a production if NODE_ENV is set to production).

License

redux-storage-decorator-engines is published under Apache License 2.0.