// https://github.com/bamlab/redux-enhancer-react-native-appstate
import { AppState } from 'react-native';

import { APP_STATE } from '../actions/actionsTypes';

export default () => createStore => (...args) => {
	const store = createStore(...args);

	let currentState = '';

	const handleAppStateChange = (nextAppState) => {
		if (nextAppState !== 'inactive') {
			if (currentState !== nextAppState) {
				let type;
				if (nextAppState === 'active') {
					type = APP_STATE.FOREGROUND;
				} else if (nextAppState === 'background') {
					type = APP_STATE.BACKGROUND;
				}
				if (type) {
					store.dispatch({
						type
					});
				}
			}
			currentState = nextAppState;
		}
	};

	AppState.addEventListener('change', handleAppStateChange);

	// setTimeout to allow redux-saga to catch the initial state fired by redux-enhancer-react-native-appstate library
	setTimeout(() => handleAppStateChange(AppState.currentState));
	return store;
};