25 lines
		
	
	
		
			897 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			897 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import * as _ from 'lodash';
 | 
						|
import { applyMiddleware, createStore, Store as ReduxStore } from 'redux';
 | 
						|
import { composeWithDevTools } from 'redux-devtools-extension/developmentOnly';
 | 
						|
import { stateStorage } from 'ts/local_storage/state_storage';
 | 
						|
import { analyticsMiddleware } from 'ts/redux/analyticsMiddleware';
 | 
						|
import { reducer, State } from 'ts/redux/reducer';
 | 
						|
 | 
						|
const ONE_SECOND = 1000;
 | 
						|
 | 
						|
export const store: ReduxStore<State> = createStore(
 | 
						|
    reducer,
 | 
						|
    stateStorage.getPersistedDefaultState(),
 | 
						|
    composeWithDevTools(applyMiddleware(analyticsMiddleware)),
 | 
						|
);
 | 
						|
store.subscribe(
 | 
						|
    _.throttle(() => {
 | 
						|
        const state = store.getState();
 | 
						|
        // Persisted state
 | 
						|
        stateStorage.saveState({
 | 
						|
            hasPortalOnboardingBeenClosed: state.hasPortalOnboardingBeenClosed,
 | 
						|
            isPortalOnboardingShowing: state.isPortalOnboardingShowing,
 | 
						|
        });
 | 
						|
    }, ONE_SECOND),
 | 
						|
);
 |