summaryrefslogtreecommitdiff
path: root/src/store.js
blob: cab211a4701ca0c010e9a4b5d3c24136914a585a (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2';
import { composeWithDevTools } from 'redux-devtools-extension';
import { persistReducer, persistStore } from 'redux-persist';
import { applyMiddleware, createStore } from 'redux';
import storage from 'redux-persist/lib/storage';
import thunk from 'redux-thunk';
import expireReducer from 'redux-persist-expire';

import GithubTransform from './redux/github/transform';
import githubState from './redux/github/reducer';
import rootReducer from './redux/reducers';

const persistedReducers = persistReducer(
  {
    key: 'githunt:root',
    storage: storage,
    stateReconciler: autoMergeLevel2,
    transforms: [
      GithubTransform,
      expireReducer('github', {
        expireSeconds: 3600,
        expiredState: { ...githubState },
        autoExpire: true
      })
    ]
  },
  rootReducer,
);

export const store = createStore(persistedReducers, composeWithDevTools(
  applyMiddleware(
    thunk,
  ),
));

export const persist = persistStore(store);