App.js 1.61 KB
'use strict';
/*
 * ## Imports
 *
 * Imports from redux
 */
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';

/**
 * Immutable Map
 */
import {Map} from 'immutable';

/**
 * Project actions
 */
import * as guideActions from '../reducers/guide/guideActions';
import * as userActions from '../reducers/user/userActions';
import * as homeActions from '../reducers/home/homeActions';

/**
 * The components we need from ReactNative
 */
import React,
{
    StatusBar,
    StyleSheet,
    View,
    Text,
    Component,
}
from 'react-native';

/**
 * ## Actions
 * 3 of our actions will be available as ```actions```
 */
const actions = [
    guideActions,
    userActions,
    homeActions,
];

/**
 *  Save that state
 */
function mapStateToProps(state) {
    return {
        ...state
    };
};

/**
 * Bind all the functions from the ```actions``` and bind them with
 * ```dispatch```
 */
function mapDispatchToProps(dispatch) {

    const creators = Map()
            .merge(...actions)
            .filter(value => typeof value === 'function')
            .toObject();

    return {
        actions: bindActionCreators(creators, dispatch),
        dispatch
    };
}
/**
 * ## App class
 */
class App extends Component {

    componentDidMount() {
        this.props.actions.getStoredUserInfo();
        this.props.actions.getGuideDisplayState();
    }

    render() {
        return (
            <StatusBar
                hidden={false}
                barStyle={'light-content'}
            />
        );
    }
}

/**
 * Connect the properties
 */
export default connect(mapStateToProps, mapDispatchToProps)(App);