import { connect } from 'react-redux';
import { isImmutable } from 'immutable';
import * as actionCreators from './actions';
import * as constants from './constants';
import reducer from './reducer';
import * as selectors from './selectors';

const mapState = store => {
  const storeObj = isImmutable(store) ? store.toJS() : store;
  return {
    global: storeObj.global,
    auth: storeObj.global.auth,
    userMode: storeObj.global.userMode,
    loginName: storeObj.global.loginName,
  };
};
const mapDispatch = dispatch => ({
  setAuth: auth => dispatch(actionCreators.setAuth(auth)),
  logout: () => {
    localStorage.setItem('token', '');
    localStorage.setItem('panda-publish', '');
    dispatch(actionCreators.setAuth([]));
  },
  setUserMode: userMode => dispatch(actionCreators.setUserMode(userMode)),
  setLoginName: loginName => dispatch(actionCreators.setLoginName(loginName)),
});

const appConnector = connect(
  mapState,
  mapDispatch,
);
export { actionCreators, constants, reducer, selectors, appConnector };