Skip to content

Instantly share code, notes, and snippets.

@xseignard
Last active June 24, 2016 18:59
Show Gist options
  • Save xseignard/e71b8c00540ddab87a8d2221b769c2e1 to your computer and use it in GitHub Desktop.
Save xseignard/e71b8c00540ddab87a8d2221b769c2e1 to your computer and use it in GitHub Desktop.
import React, { Component } from 'react';
import { DrawerLayoutAndroid } from 'react-native';
import { Provider } from 'react-redux';
import { store } from './store';
import NavRoot from './components/NavRoot';
import Menu from './components/Menu';
import { startWatch, stopWatch } from './services/geolocator';
import { startCheckZones, stopCheckZones } from './services/zonesChecker';
export default class Main extends Component {
static childContextTypes = {
drawer: React.PropTypes.object,
};
constructor(props) {
super(props);
this.state = { drawer: null };
}
getChildContext() {
return { drawer: this.state.drawer };
}
componentDidMount() {
startWatch();
startCheckZones();
// eslint-disable-next-line
if (!this.state.drawer) this.setState({ drawer: this.refs.DRAWER });
}
componentWillUnmount() {
stopWatch();
stopCheckZones();
}
setDrawer(drawer) {
this.setState({ drawer });
}
render() {
return (
<Provider store={store}>
<DrawerLayoutAndroid
drawerWidth={300}
drawerPosition={DrawerLayoutAndroid.positions.Left}
renderNavigationView={() => <Menu />}
ref="DRAWER"
>
<NavRoot />
</DrawerLayoutAndroid>
</Provider>
);
}
}
@xseignard
Copy link
Author

xseignard commented Jun 24, 2016

import React, { Component } from 'react';
import { connect } from 'react-redux';
import { Toolbar as MaterialToolbar } from 'react-native-material-design';


class Toolbar extends Component {

    static contextTypes = {
        drawer: React.PropTypes.object,
    };

    constructor(props) {
        super(props);
        this.handleIconPress = this.handleIconPress.bind(this);
    }

    handleIconPress() {
        if (this.isHomePage) this.context.drawer.openDrawer();
        else this.props.goBack();
    }

    render() {
        this.isHomePage = this.props.routes[this.props.index].key === 'home';
        return (
            <MaterialToolbar
                title={this.props.routes[this.props.index].title}
                icon={this.isHomePage ? 'menu' : 'keyboard-backspace'}
                onIconPress={this.handleIconPress}
            />
        );
    }
}

export default connect((state) => state.nav)(Toolbar);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment