@randy.tarampi/redux-offline-immutable-config

Provide a configuration for redux-offline to use an immutable root state with redux-persist-immutable


License
MIT
Install
npm install @randy.tarampi/redux-offline-immutable-config@1.0.1-1

Documentation

npm version

redux-offline-immutable-config

Provide a configuration for redux-offline to use an immutable root state with redux-persist-immutable

Installation

npm install redux-offline-immutable-config
# or
yarn add redux-offline-immutable-config

Use

Follow redux-offline base setup instruction at redux-offline, then apply the following changes.

import { applyMiddleware, createStore, compose } from 'redux';
import { offline } from 'redux-offline';
import defaultConfig from 'redux-offline/lib/defaults';

// replacing redux-offline defaults with immutable* counterparts
import { persist, persistAutoRehydrate, offlineStateLens } from 'redux-offline-immutable-config';

// ...

// example of redux-persist configuration
// see https://github.com/rt2zz/redux-persist#persiststorestore-config-callback
const persistOptions = {};
const persistCallback = () => {
  console.log('rehydration completed')
};

const offlineConfig = {
  ...defaultConfig,
  persist,
  persistAutoRehydrate,
  persistOptions,
  persistCallback,
  offlineStateLens
};

const preloadedState = fromJS({}); // this is the immutable root state
const store = createStore(
  reducer, // your main reducer
  preloadedState,
  compose(
    applyMiddleware(middleware), // your middleware
    offline(offlineConfig)
  )
);

Customise persistAutoRehydrate

import { persist, persistAutoRehydrate, offlineStateLens } from 'redux-offline-immutable-config';

const autoRehydrateOptions = __DEV__ === true
  ? {log: true}
  : {};

const offlineConfig = {
  ...defaultConfig,
  persist,
  persistAutoRehydrate: () => persistAutoRehydrate(autoRehydrateOptions),
  persistOptions,
  persistCallback,
  offlineStateLens
};

// ...

License

MIT